Informations de référence sur l’API - API Direct Line 3.0
Vous pouvez activer la communication de votre application cliente avec votre bot à l’aide de l’API Direct Line 3.0. L’API Direct Line 3.0 utilise les standards REST et JSON sur HTTPS.
L'URI de base
Pour accéder à l’API Direct Line 3.0, utilisez l’une de ces URI de base pour toutes les demandes d’API :
Pour les bots globaux, utilisez
https://directline.botframework.com
Pour un bot régional, entrez l’URI suivant en fonction de la région sélectionnée :
Région L'URI de base Europe https://europe.directline.botframework.com
Inde https://india.directline.botframework.com
Conseil
Une requête peut échouer si vous utilisez l’URI de base global d’un bot régional, car certaines requêtes peuvent dépasser les limites géographiques.
En-têtes
Outre les en-têtes de requête HTTP standard, une requête d’API Direct Line doit inclure un en-tête Authorization
qui spécifie un secret ou un jeton pour authentifier le client émettant la requête. Spécifiez l’en-tête Authorization
au format suivant :
Authorization: Bearer SECRET_OR_TOKEN
Pour plus d’informations sur l’obtention d’un secret ou d’un jeton que votre client peut utiliser pour authentifier ses requêtes d’API Direct Line, consultez l’article Authentification.
Codes d’état HTTP
Le code d’état HTTP retourné avec chaque réponse indique le résultat de la requête correspondante.
Code de statut HTTP | Signification |
---|---|
200 | La requête a réussi. |
201 | La requête a réussi. |
202 | La requête a été acceptée en vue de son traitement. |
204 | La requête a réussi, mais aucun contenu n’a été retourné. |
400 | La requête présentait un format inadéquat ou était incorrecte. |
401 | Le client n’est pas autorisé à effectuer la demande. Dans la plupart des cas, ce code d’état signale que l’en-tête Authorization est manquant ou qu’il présente un format incorrect. |
403 | Le client n’est pas autorisé à effectuer l’opération demandée. L’opération peut échouer pour les raisons suivantes.
|
404 | La ressource demandée est introuvable. Ce code d’état signale généralement un URI de requête non valide. |
500 | Une erreur de serveur interne s’est produite dans le service Direct Line. |
502 | Le bot n’est pas disponible ou a retourné une erreur. Ce code d’erreur est courant. |
Remarque
Le code d’état HTTP 101 est utilisé dans le chemin d’accès de la connexion WebSocket, bien que ceci soit probablement géré par votre client WebSocket.
Erreurs
Toute réponse qui spécifie un code d’état HTTP dans la plage 4xx ou 5xx va inclure un objet ErrorResponse dans le corps de la réponse qui fournit des informations sur l’erreur. Si vous recevez une réponse d’erreur dans la plage 4xx, examinez l’objet ErrorResponse pour identifier la cause de l’erreur et résoudre votre problème avant de renvoyer la requête.
Remarque
Les codes d’état HTTP et les valeurs spécifiées dans la propriété code
à l’intérieur de l’objet ErrorResponse sont stables. Les valeurs spécifiées dans la propriété message
à l’intérieur de l’objet ErrorResponse peuvent changer au fil du temps.
Les extraits suivants montrent un exemple de requête et la réponse d’erreur qui en résulte.
Requête
POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
[detail omitted]
Response
HTTP/1.1 502 Bad Gateway
[other headers]
{
"error": {
"code": "BotRejectedActivity",
"message": "Failed to send activity: bot returned an error"
}
}
Opérations de jeton
Utilisez les opérations ci-après pour créer ou actualiser un jeton permettant à un client d’accéder à une conversation spécifique.
Operation | Description |
---|---|
Générer un jeton | Permet de générer un jeton pour une nouvelle conversation. |
Actualiser le jeton | Permet d’actualiser un jeton. |
Générer un jeton
Permet de générer un jeton valide pour une seule conversation.
POST /v3/directline/tokens/generate
Contenu | Description |
---|---|
Corps de la demande | Objet TokenParameters |
Renvoie | Objet Conversation |
Jeton d‘actualisation
Permet d’actualiser le jeton.
POST /v3/directline/tokens/refresh
Contenu | Description |
---|---|
Corps de la demande | n/a |
Renvoie | Objet Conversation |
Opérations de conversation
Utilisez les opérations ci-après pour ouvrir une conversation avec votre bot et pour échanger des activités entre le client et le bot.
Operation | Description |
---|---|
Start Conversation (Démarrer une conversation) | Ouvre une nouvelle conversation avec le bot. |
Obtenir des informations de Conversation | Obtient des informations sur une conversation existante. Cette opération génère une nouvelle URL de flux de données WebSocket qu’un client peut utiliser pour se reconnecter à une conversation. |
Obtenir des activités | Récupère des activités du bot. |
Envoyer une activité | Envoyer une activité au bot. |
Upload and Send File(s) (Charger et envoyer des fichiers) | Charge et envoie un ou plusieurs fichiers sous forme de pièces jointes. |
Start Conversation (Démarrer une conversation)
Ouvre une nouvelle conversation avec le bot.
POST /v3/directline/conversations
Contenu | Description |
---|---|
Corps de la demande | Objet TokenParameters |
Renvoie | Objet Conversation |
Obtenir des informations de Conversation
Cette opération obtient des informations sur une conversation existante et génère également une nouvelle URL de flux de données WebSocket qu’un client peut utiliser pour se reconnecter à une conversation. Vous pouvez éventuellement fournir le paramètre watermark
dans l’URI de requête pour indiquer le dernier message vu par le client.
GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Contenu | Description |
---|---|
Corps de la demande | n/a |
Renvoie | Objet Conversation |
Obtenir des activités
Récupère des activités provenant du bot pour la conversation spécifiée. Vous pouvez éventuellement fournir le paramètre watermark
dans l’URI de requête pour indiquer le dernier message vu par le client.
GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Contenu | Description |
---|---|
Corps de la demande | n/a |
Renvoie | Objet ActivitySet. La réponse contient watermark en tant que propriété de l’objet ActivitySet . Les clients doivent parcourir les activités disponibles en augmentant la valeur watermark jusqu’à ce qu’aucune activité ne soit plus retournée. |
Envoyer une activité
Envoyer une activité au bot.
POST /v3/directline/conversations/{conversationId}/activities
Contenu | Description |
---|---|
Corps de la demande | Objet Activity |
Renvoie | Objet ResourceResponse qui contient une propriété id spécifiant l’ID de l’activité envoyée au bot. |
Charger et envoyer des fichiers
Charge et envoie un ou plusieurs fichiers sous forme de pièces jointes. Définissez le paramètre userId
dans l’URI de requête pour spécifier l’ID de l’utilisateur envoyant la ou les pièces jointes.
POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Contenu | Description |
---|---|
Corps de la demande | Dans le cas d’une pièce jointe unique, remplissez le corps de la requête avec le contenu du fichier. Dans le cas de plusieurs pièces jointes, créez un corps de requête en plusieurs parties, contenant une partie pour chaque pièce jointe, et également (en option) une partie pour l’objet Activity qui doit servir de conteneur aux pièces jointes spécifiées. Pour plus d’informations, consultez Envoyer une activité au bot. |
Renvoie | Objet ResourceResponse qui contient une propriété id spécifiant l’ID de l’activité envoyée au bot. |
Remarque
Les fichiers chargés sont supprimés au bout de 24 heures.
schéma
Le schéma Direct Line 3.0 inclut tous les objets définis par le schéma Bot Framework ainsi que des objets qui sont spécifiques à Direct Line.
Objet ActivitySet
Définit un ensemble d’activités.
Propriété | Type | Description |
---|---|---|
activités | Activité[] | Tableau d’objets Activity. |
watermark | string | Filigrane maximal des activités au sein de l’ensemble. Un client peut utiliser la valeur watermark pour indiquer le message le plus récent qu’il a vu, soit lors de la récupération d’activités à partir du bot, soit lors de la génération d’une nouvelle URL de flux de données WebSocket. |
Objet Conversation
Définit une conversation Direct Line.
Propriété | Type | Description |
---|---|---|
conversationId | string | ID identifiant de manière unique la conversation pour laquelle le jeton spécifié est valide. |
eTag | string | ETag HTTP (étiquette d’entité). |
expires_in | number | Nombre de secondes avant l’expiration du jeton. |
referenceGrammarId | string | ID de la grammaire de référence pour ce bot. |
streamUrl | string | URL pour le flux de messages de la conversation. |
token | string | Jeton valide pour la conversation spécifiée. |
Objet TokenParameters
Paramètres pour la création d’un jeton.
Propriété | Type | Description |
---|---|---|
eTag | string | ETag HTTP (étiquette d’entité). |
trustedOrigins | string[] | Origines approuvées à incorporer dans le jeton. |
utilisateur | ChannelAccount | Compte d’utilisateur à incorporer dans le jeton. |
Activités
Pour chaque Activité qu’un client reçoit d’un bot via Direct Line :
- Les cartes de pièces jointes sont conservées.
- Les URL pour les pièces jointes chargées sont masquées avec un lien privé.
- La propriété
channelData
est conservée sans modification.
Les clients peuvent recevoir plusieurs activités à partir du bot en tant que partie d’un ActivitySet.
Lorsqu’un client envoie une Activity
à un bot via Direct Line :
- La
type
propriété spécifie l’activité de type qu’elle envoie (généralement le message). - La propriété
from
doit être remplie avec un ID d’utilisateur choisi par le client. - Les pièces jointes peuvent contenir des URL de ressources existantes, ou des URL chargés via le point de terminaison de pièce jointe de Direct Line.
- La propriété
channelData
est conservée sans modification. - La taille totale de l’activité, quand elle est sérialisée dans JSON et chiffrée, ne doit pas dépasser 256 000 caractères. Nous vous recommandons de conserver les activités de moins de 150 000 ko. Si d’autres données sont nécessaires, envisagez de fractionner l’activité ou d’utiliser des pièces jointes.
Un client peut envoyer une seule activité par requête.