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.
|
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.