Informations de référence sur l’API - DIRECT LINE API 3.0

Vous pouvez permettre à votre application cliente de communiquer avec votre bot à l’aide de Direct Line API 3.0. Direct Line API 3.0 utilise rest et JSON standard sur HTTPS.

Base de l'URI

Pour accéder à Direct Line API 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 Base de l'URI
    Europe https://europe.directline.botframework.com
    India https://india.directline.botframework.com

Tip

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

En plus des en-têtes de requête HTTP standard, une demande d’API Direct Line doit inclure un Authorization en-tête qui spécifie un secret ou un jeton pour authentifier le client qui émet 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 demandes d’API Direct Line, consultez 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 d’état HTTP Meaning
200 La demande a abouti.
201 La demande a abouti.
202 La demande a été acceptée pour traitement.
204 La demande a réussi, mais aucun contenu n’a été retourné.
400 La demande a été incorrecte ou incorrecte.
401 Le client n’est pas autorisé à effectuer la demande. Souvent, ce code d’état se produit parce que l’en-tête Authorization est manquant ou mal formé.
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 n’a pas été trouvée. En règle générale, ce code d’état indique 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 retourne une erreur. Il s’agit d’un code d’erreur courant.

Note

Le code d’état HTTP 101 est utilisé dans le chemin de connexion WebSocket, bien que cela soit probablement géré par votre client WebSocket.

Errors

Toute réponse qui spécifie un code d’état HTTP dans la plage 4xx ou 5xx inclut 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, inspectez l’objet ErrorResponse pour identifier la cause de l’erreur et résoudre votre problème avant de renvoyer la requête.

Note

Les codes d’état HTTP et les valeurs spécifiés dans la propriété à l’intérieur code de l’objet ErrorResponse sont stables. Les valeurs spécifiées dans la propriété à l’intérieur message de l’objet ErrorResponse peuvent changer au fil du temps.

Les extraits de code suivants montrent un exemple de requête et la réponse d’erreur résultante.

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 ces opérations pour créer ou actualiser un jeton qu’un client peut utiliser pour accéder à une seule conversation.

Operation Description
Générer un jeton Générez un jeton pour une nouvelle conversation.
Jeton d’actualisation Actualisez un jeton.

Générer un jeton

Génère un jeton valide pour une conversation.

POST /v3/directline/tokens/generate
Contenu Description
Corps de la demande Objet TokenParameters
Retour Objet Conversation

Actualiser le jeton

Actualise le jeton.

POST /v3/directline/tokens/refresh
Contenu Description
Corps de la demande n/a
Retour Objet Conversation

Opérations de conversation

Utilisez ces opérations pour ouvrir une conversation avec votre bot et échanger des activités entre le client et le bot.

Operation Description
Démarrer la conversation Ouvre une nouvelle conversation avec le bot.
Obtenir des informations sur la conversation Obtient des informations sur une conversation existante. Cette opération génère une nouvelle URL de flux WebSocket qu’un client peut utiliser pour se reconnecter à une conversation.
Obtenir des activités Récupère les activités du bot.
Envoyer une activité Envoie une activité au bot.
Charger et envoyer des fichiers Charge et envoie des fichiers en tant que pièces jointes.

Lancer la conversation

Ouvre une nouvelle conversation avec le bot.

POST /v3/directline/conversations
Contenu Description
Corps de la demande Objet TokenParameters
Retour Objet Conversation

Obtenir des informations sur la conversation

Obtient des informations sur une conversation existante et génère également une nouvelle URL de flux WebSocket qu’un client peut utiliser pour se reconnecter à une conversation. Vous pouvez éventuellement fournir le watermark paramètre dans l’URI de requête pour indiquer le message le plus récent vu par le client.

GET /v3/directline/conversations/{conversationId}?watermark={watermark_value}
Contenu Description
Corps de la demande n/a
Retour Objet Conversation

Obtenir des activités

Récupère les activités du bot pour la conversation spécifiée. Vous pouvez éventuellement fournir le watermark paramètre dans l’URI de requête pour indiquer le message le plus récent vu par le client.

GET /v3/directline/conversations/{conversationId}/activities?watermark={watermark_value}
Contenu Description
Corps de la demande n/a
Retour 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 faisant avancer la watermark valeur jusqu’à ce qu’aucune activité ne soit retournée.

Envoyer une activité

Envoie une activité au bot.

POST /v3/directline/conversations/{conversationId}/activities
Contenu Description
Corps de la demande Objet Activity
Retour ResourceResponse qui contient une id propriété qui spécifie l’ID de l’activité envoyée au bot.

Charger et envoyer des fichiers

Charge et envoie des fichiers en tant que pièces jointes. Définissez le userId paramètre dans l’URI de requête pour spécifier l’ID de l’utilisateur qui envoie la ou les pièces jointes.

POST /v3/directline/conversations/{conversationId}/upload?userId={userId}
Contenu Description
Corps de la demande Pour une pièce jointe unique, renseignez le corps de la requête avec le contenu du fichier. Pour plusieurs pièces jointes, créez un corps de demande multipart qui contient une partie pour chaque pièce jointe, et également (éventuellement) une partie pour l’objet Activité qui doit servir de conteneur pour la ou les pièces jointes spécifiées. Pour plus d’informations, consultez Envoyer une activité au bot.
Retour ResourceResponse qui contient une id propriété qui spécifie l’ID de l’activité envoyée au bot.

Note

Les fichiers chargés sont supprimés après 24 heures.

Schema

Le schéma Direct Line 3.0 inclut tous les objets définis par le schéma Bot Framework, ainsi que certains objets spécifiques à Direct Line.

Objet ActivitySet

Définit un ensemble d’activités.

Propriété Type Description
activités Activity[] Tableau d’objets d’activité .
filigrane string Limite maximale des activités au sein de l’ensemble. Un client peut utiliser la watermark valeur pour indiquer le message le plus récent qu’il a vu lors de la récupération d’activités à partir du bot ou lors de lagénération d’une nouvelle URL de flux WebSocket.

Objet Conversation

Définit une conversation Direct Line.

Propriété Type Description
conversationId string ID qui identifie de manière unique la conversation pour laquelle le jeton spécifié est valide.
eTag string Un ETag HTTP (balise d’entité).
expires_in Numéro Nombre de secondes jusqu’à l’expiration du jeton.
referenceGrammarId string ID de la grammaire de référence pour ce bot.
streamUrl string URL du flux de messages de la conversation.
token string Jeton valide pour la conversation spécifiée.

Objet TokenParameters

Paramètres de création d’un jeton.

Propriété Type Description
eTag string Un ETag HTTP (balise d’entité).
trustedOrigins chaîne de caractères[] Origines approuvées à incorporer dans le jeton.
user 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èce jointe sont conservées.
  • Les URL pour les pièces jointes chargées sont masquées avec une liaison privée.
  • La channelData propriété est conservée sans modification.

Les clients peuvent recevoir plusieurs activités du bot dans le cadre d’un ActivitySet.

Lorsqu’un client envoie un Activity bot via Direct Line :

  • La type propriété spécifie l’activité de type qu’elle envoie (généralement le message).
  • La from propriété doit être remplie avec un ID d’utilisateur, choisi par le client.
  • Les pièces jointes peuvent contenir des URL vers des ressources existantes ou des URL chargées via le point de terminaison de pièce jointe Direct Line.
  • La channelData propriété est conservée sans modification.
  • La taille totale de l’activité, lorsqu’elle est sérialisée au format 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.

Les clients peuvent envoyer une activité unique par requête.

Ressources additionnelles