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.
  • Jeton non valide : lorsque la requête utilise un jeton qui était précédemment valide mais qui a expiré, la code propriété de l’erreur retournée dans l’objet ErrorResponse est définie TokenExpiredsur .
  • Violation des limites de données : si votre bot est un bot régional, mais que l’URI de base n’est pas régional, certaines requêtes peuvent dépasser les limites géographiques.
  • Ressource cible non valide : le bot ou le site cible n’est pas valide ou a été supprimé.
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.

Ressources supplémentaires