Informazioni di riferimento sulle API: API Direct Line 3.0

È possibile consentire all'applicazione client di comunicare con il bot usando l'API Direct Line 3.0. L'API Direct Line 3.0 usa gli standard di settore REST e JSON tramite HTTPS.

URI di base

Per accedere all'API Direct Line 3.0, usare uno di questi URI di base per tutte le richieste API:

  • Per i bot globali, usare https://directline.botframework.com

  • Per un bot a livello di area immettere l'URI seguente in base all'area selezionata:

    Area URI di base
    Europa https://europe.directline.botframework.com
    India https://india.directline.botframework.com

Suggerimento

Una richiesta potrebbe non riuscire se si usa l'URI di base globale per un bot a livello di area, perché alcune richieste potrebbero superare i limiti geografici.

Intestazioni

Oltre alle intestazioni delle richieste HTTP standard, una richiesta all'API Direct Line deve includere un'intestazione Authorization che specifica un segreto o un token per l'autenticazione del client che invia la richiesta. Specificare l'intestazione Authorization usando questo formato:

Authorization: Bearer SECRET_OR_TOKEN

Per informazioni dettagliate su come ottenere un segreto o un token utilizzabile dal client per l'autenticazione delle richieste all'API Direct Line, vedere Autenticazione.

Codici di stato HTTP

Il codice di stato HTTP restituito con ogni risposta indica il risultato della richiesta corrispondente.

Codice di stato HTTP Significato
200 La richiesta è stata completata.
201 La richiesta è stata completata.
202 La richiesta è stata accettata per l'elaborazione.
204 La richiesta è stata completata ma non è stato restituito alcun contenuto.
400 La richiesta è in formato non valido o comunque non corretta.
401 Il client non è autorizzato a effettuare la richiesta. Spesso questo codice di stato viene restituito perché l'intestazione Authorization è mancante o in formato non valido.
403 Il client non è autorizzato a eseguire l'operazione richiesta. L'operazione può non riuscire per i motivi seguenti.
  • Token non valido: quando la richiesta usa un token precedentemente valido ma scaduto, la code proprietà dell'oggetto Error restituita all'interno dell'oggetto ErrorResponse è impostata su TokenExpired.
  • Violazione del limite di dati: se il bot è un bot a livello di area, ma l'URI di base non è a livello di area, alcune richieste potrebbero superare i limiti geografici.
  • Una risorsa di destinazione non valida: il bot o il sito di destinazione non è valido o è stato eliminato.
404 La risorsa richiesta non è stata trovata. Questo codice di stato indica in genere un URI della richiesta non valido.
500 Si è verificato un errore interno del server nel servizio Direct Line.
502 Il bot non è disponibile o ha restituito un errore. È un codice di errore comune.

Nota

Il codice di stato HTTP 101 viene usato nel percorso di connessione WebSocket, anche se questo è probabilmente gestito dal client WebSocket.

Errori

Nel corpo di qualsiasi risposta che specifica un codice di stato HTTP compreso nell'intervallo 4xx o 5xx sarà incluso un oggetto ErrorResponse contenente informazioni sull'errore. Se viene restituita una risposta di errore compresa nell'intervallo 4xx, controllare l'oggetto ErrorResponse per identificare la causa dell'errore e risolvere il problema prima di inviare di nuovo la richiesta.

Nota

I codici di stato HTTP e i valori specificati nella proprietà code all'interno dell'oggetto ErrorResponse sono stabili. I valori specificati nella proprietà message all'interno dell'oggetto ErrorResponse possono variare nel tempo.

I frammenti seguenti mostrano una richiesta di esempio e la risposta di errore risultante.

Richiedi

POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]

Risposta

HTTP/1.1 502 Bad Gateway
[other headers]
{
    "error": {
        "code": "BotRejectedActivity",
        "message": "Failed to send activity: bot returned an error"
    }
}

Operazioni relative ai token

Usare queste operazioni per creare o aggiornare un token utilizzabile da un client per accedere a una singola conversazione.

Operazione Descrizione
Generare token Genera un token per una nuova conversazione.
Aggiornare un token Aggiornare un token.

Generare token

Genera un token valido per una conversazione.

POST /v3/directline/tokens/generate
Sommario Descrizione
Testo della richiesta Un oggetto TokenParameters
Resi Un oggetto Conversation

Aggiornare un token

Aggiorna il token.

POST /v3/directline/tokens/refresh
Sommario Descrizione
Testo della richiesta n/d
Resi Un oggetto Conversation

Operazioni riguardanti la conversazione

Usare queste operazioni per aprire una conversazione con il bot e scambiare attività tra il client e il bot.

Operazione Descrizione
Avviare la conversazione Avvia una nuova conversazione con il bot.
Ottenere informazioni su una conversazione Ottiene informazioni su una conversazione esistente. Questa operazione genera un nuovo URL di flusso WebSocket che può essere usato da un client per riconnettersi a una conversazione.
Ottenere le attività Recupera le attività dal bot.
Inviare un'attività Invia un'attività al bot.
Caricare e inviare file Carica e invia file come allegati.

Avviare la conversazione

Avvia una nuova conversazione con il bot.

POST /v3/directline/conversations
Sommario Descrizione
Testo della richiesta Un oggetto TokenParameters
Resi Un oggetto Conversation

Ottenere informazioni su una conversazione

Ottiene informazioni su una conversazione esistente e genera anche un nuovo URL di flusso WebSocket che può essere usato da un client per riconnettersi a una conversazione. Facoltativamente, è possibile specificare il parametro watermark nell'URI della richiesta per indicare il messaggio più recente visualizzato dal client.

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Sommario Descrizione
Testo della richiesta n/d
Resi Un oggetto Conversation

Ottenere le attività

Recupera le attività dal bot per la conversazione specificata. Facoltativamente, è possibile specificare il parametro watermark nell'URI della richiesta per indicare il messaggio più recente visualizzato dal client.

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Sommario Descrizione
Testo della richiesta n/d
Resi Oggetto ActivitySet. La risposta contiene watermark come una proprietà dell'oggetto ActivitySet. Per scorrere le attività disponibili, i client dovranno far avanzare il valore di watermark fino a quando non viene restituita alcuna attività.

Inviare un'attività

Invia un'attività al bot.

POST /v3/directline/conversations/{conversationId}/activities
Sommario Descrizione
Testo della richiesta Un oggetto Activity
Resi ResourceResponse contenente una proprietà id che specifica l'ID dell'attività inviata al bot.

Caricare e inviare file

Carica e invia file come allegati. Impostare il parametro userId nell'URI della richiesta per specificare l'ID dell'utente che invia gli allegati.

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Sommario Descrizione
Testo della richiesta Per un singolo allegato, inserire il corpo della richiesta con il contenuto del file. Per più allegati, creare un corpo della richiesta multiparte, contenente una parte per ogni allegato e (facoltativamente) una parte per l'oggetto Activity che dovrà fungere da contenitore per gli allegati specificati. Per altre informazioni, vedere Inviare un'attività al bot.
Resi ResourceResponse contenente una proprietà id che specifica l'ID dell'attività inviata al bot.

Nota

I file caricati vengono eliminati dopo 24 ore.

Schema

Lo schema di Direct Line 3.0 include tutti gli oggetti definiti dallo schema di Bot Framework, nonché alcuni oggetti specifici di Direct Line.

Oggetto ActivitySet

Definisce un set di attività.

Proprietà Type Descrizione
activities Activity[] Matrice di oggetti Activity.
watermark string Limite massimo delle attività nel set. Un client può usare il valore di watermark per indicare il messaggio più recente visualizzato durante il recupero di attività dal bot o durante la generazione di un nuovo URL di flusso WebSocket.

Oggetto Conversation

Definisce una conversazione Direct Line.

Proprietà Type Descrizione
conversationId string ID che identifica in modo univoco la conversazione per la quale è valido il token specificato.
eTag string ETag HTTP (tag di entità).
expires_in Numero Numero di secondi prima della scadenza del token.
referenceGrammarId string ID della grammatica di riferimento per questo bot.
streamUrl string URL del flusso di messaggi della conversazione.
token string Token valido per la conversazione specificata.

Oggetto TokenParameters

Parametri per la creazione di un token.

Proprietà Type Descrizione
eTag string ETag HTTP (tag di entità).
trustedOrigins string[] Origini attendibili da incorporare nel token.
user ChannelAccount Account utente da incorporare nel token.

Attività

Per ogni oggetto Activity che un client riceve da un bot tramite Direct Line:

  • Le schede degli allegati vengono mantenute.
  • Gli URL degli allegati caricati vengono nascosti con un collegamento privato.
  • La proprietà channelData viene mantenuta senza modifiche.

I client possono ricevere più attività dal bot in un ActivitySet.

Quando un client invia un oggetto Activity a un bot tramite Direct Line:

  • La type proprietà specifica l'attività di tipo che invia (in genere il messaggio).
  • La proprietà from deve essere popolata con un ID utente scelto dal client.
  • Gli allegati possono contenere URL di risorse esistenti o URL caricati tramite l'endpoint degli allegati di Direct Line.
  • La proprietà channelData viene mantenuta senza modifiche.
  • Le dimensioni totali dell'attività, se serializzata in JSON e crittografata, non devono superare i 256.000 caratteri. È consigliabile mantenere le attività sotto 150.000. Se sono necessari più dati, prendere in considerazione la suddivisione dell'attività o l'uso di allegati.

I client possono inviare un'unica attività per richiesta.

Risorse aggiuntive