Informazioni di riferimento sulle API - API Direct Line 3.0

È possibile abilitare l'applicazione client per comunicare con il bot usando Direct Line API 3.0. Direct Line API 3.0 usa rest e JSON standard del settore su 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 geografica URI di base
    Europe https://europe.directline.botframework.com
    India https://india.directline.botframework.com

Tip

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 di richiesta HTTP standard, una richiesta API Direct Line deve includere un'intestazione Authorization che specifica un segreto o un token per autenticare il client che esegue 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 che il client può usare per autenticare le richieste 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 Meaning
200 La richiesta è stata accolta.
201 La richiesta è stata accolta.
202 La richiesta è stata accettata per l'elaborazione.
204 La richiesta ha avuto esito positivo ma non è stato restituito alcun contenuto.
400 La richiesta non è valida o non è corretta.
401 Il client non è autorizzato a effettuare la richiesta. Spesso questo codice di stato si verifica 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. In genere questo codice di stato indica un URI di richiesta non valido.
500 Si è verificato un errore interno del server all'interno del servizio Direct Line.
502 Il bot non è disponibile o ha restituito un errore. Si tratta di un codice di errore comune.

Note

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

Errors

Qualsiasi risposta che specifica un codice di stato HTTP nell'intervallo 4xx o 5xx includerà un oggetto ErrorResponse nel corpo della risposta che fornisce informazioni sull'errore. Se viene visualizzata una risposta di errore nell'intervallo 4xx, esaminare l'oggetto ErrorResponse per identificare la causa dell'errore e risolvere il problema prima di inviare nuovamente la richiesta.

Note

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

I frammenti di codice 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 token

Usare queste operazioni per creare o aggiornare un token che un client può usare per accedere a una singola conversazione.

Operation Description
Generare il token Generare un token per una nuova conversazione.
Token di aggiornamento Aggiornare un token.

Genera token

Genera un token valido per una conversazione.

POST /v3/directline/tokens/generate
Contenuto Description
Corpo della richiesta Oggetto TokenParameters
Resi Oggetto Conversation

Aggiorna token

Aggiorna il token.

POST /v3/directline/tokens/refresh
Contenuto Description
Corpo della richiesta n/a
Resi Oggetto Conversation

Operazioni di conversazione

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

Operation Description
Avvia conversazione Apre una nuova conversazione con il bot.
Ottenere informazioni sulla conversazione Ottiene informazioni su una conversazione esistente. Questa operazione genera un nuovo URL del flusso WebSocket che un client può usare per riconnettersi a una conversazione.
Ottenere attività Recupera le attività dal bot.
Inviare un'attività Invia un'attività al bot.
Caricare e inviare file Carica e invia file come allegati.

Avvia la conversazione

Apre una nuova conversazione con il bot.

POST /v3/directline/conversations
Contenuto Description
Corpo della richiesta Oggetto TokenParameters
Resi Oggetto Conversation

Ottenere informazioni sulla conversazione

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

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Contenuto Description
Corpo della richiesta n/a
Resi Oggetto Conversation

Ottenere attività

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

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Contenuto Description
Corpo della richiesta n/a
Resi Oggetto ActivitySet . La risposta contiene watermark come proprietà dell'oggetto ActivitySet . I client devono scorrere le attività disponibili avanzando il watermark valore fino a quando non vengono restituite attività.

Inviare un'attività

Invia un'attività al bot.

POST /v3/directline/conversations/{conversationId}/activities
Contenuto Description
Corpo della richiesta Oggetto Activity
Resi ResourceResponse che contiene una id proprietà che specifica l'ID dell'attività inviata al bot.

Caricare e inviare file

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

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

Note

I file caricati vengono eliminati dopo 24 ore.

Schema

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

Oggetto ActivitySet

Definisce un set di attività.

Property TIPO Description
attività Activity[] Matrice di oggetti Activity .
filigrana string Limite massimo di attività all'interno del set. Un client può usare il watermark valore per indicare il messaggio più recente visualizzato durante il recupero di attività dal bot o durante la generazione di un nuovo URL del flusso WebSocket.

Oggetto Conversation

Definisce una conversazione Direct Line.

Property TIPO Description
conversationId string ID che identifica in modo univoco la conversazione per cui il token specificato è valido.
eTag string Un ETag HTTP (tag di entità).
expires_in Numero Numero di secondi fino alla scadenza del token.
referenceGrammarId string ID per la grammatica di riferimento per questo bot.
streamUrl string URL per il flusso di messaggi della conversazione.
token string Token valido per la conversazione specificata.

Oggetto TokenParameters

Parametri per la creazione di un token.

Property TIPO Description
eTag string Un ETag HTTP (tag di entità).
trustedOrigins string[] Origini attendibili da incorporare all'interno del token.
user ChannelAccount Account utente da incorporare all'interno del token.

Activities

Per ogni attività ricevuta da un client da un bot tramite Direct Line:

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

I client possono ricevere più attività dal bot come parte di un ActivitySet.

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

  • La type proprietà specifica l'attività di tipo che invia (in genere il messaggio).
  • La from proprietà deve essere popolata con un ID utente, scelto dal client.
  • Gli allegati possono contenere URL a risorse o URL esistenti caricati tramite l'endpoint dell'allegato Direct Line.
  • La channelData proprietà viene mantenuta senza modifiche.
  • Le dimensioni totali dell'attività, se serializzate in JSON e crittografate, 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 una singola attività per ogni richiesta.

Risorse aggiuntive