Envoyer une activité au bot dans l’API de ligne directe 3,0Send an activity to the bot in Direct Line API 3.0
Le protocole Direct Line 3.0 permet aux clients et aux robots d’échanger différents types d’activités, notamment des activités de messagerie et de saisie, ainsi que des activités personnalisées prises en charge par le robot.Using the Direct Line 3.0 protocol, clients and bots may exchange several different types of activities, including message activities, typing activities, and custom activities that the bot supports. Un client ne peut envoyer qu’une seule activité par requête.A client may send a single activity per request.
Envoyer une activitéSend an activity
Pour envoyer une activité au robot, le client doit créer un objet Activité pour définir l’activité, puis envoyer une requête POST
à https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
en précisant l’objet de l’activité dans le corps de la requête.To send an activity to the bot, the client must create an Activity object to define the activity and then issue a POST
request to https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
, specifying the Activity object in the body of the request.
Les extraits de code suivants montrent la requête et la réponse de l’activité d’envoi.The following snippets provide an example of the Send Activity request and response.
RequêteRequest
POST https://directline.botframework.com/v3/directline/conversations/abc123/activities
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: application/json
[other headers]
{
"locale": "en-EN",
"type": "message",
"from": {
"id": "user1"
},
"text": "hello"
}
responseResponse
Lorsque l’activité est fournie au robot, le service répond avec un code d’état HTTP qui correspond au code d’état du robot.When the activity is delivered to the bot, the service responds with an HTTP status code that reflects the bot's status code. Si le robot génère une erreur, une réponse HTTP 502 (« passerelle incorrecte ») est renvoyée au client en réponse à sa requête d’activité d’envoi.If the bot generates an error, an HTTP 502 response ("Bad Gateway") is returned to the client in response to its Send Activity request.
Notes
Cela peut être dû au fait qu’un jeton correct n’a pas été utilisé.This can be caused by the fact that a correct token was not used. Seul le jeton reçu pour démarrer la conversation peut être utilisé pour envoyer une activité.Only the token which was received against start conversation can be used to send an activity.
Si la PUBLICATION est réussie, la réponse contient une charge utile JSON qui spécifie l’identifiant de I’activité envoyée au robot.If the POST is successful, the response contains a JSON payload that specifies the ID of the Activity that was sent to the bot.
HTTP/1.1 200 OK
[other headers]
{
"id": "0001"
}
Durée totale de requête/réponse de l’activité d’envoiTotal time for the Send Activity request/response
La durée totale de PUBLICATION d’un message à une conversation Direct Line est égale à la somme des éléments suivants :The total time to POST a message to a Direct Line conversation is the sum of the following:
- Délai de transmission de la requête HTTP du client au service Direct LineTransit time for the HTTP request to travel from the client to the Direct Line service
- Temps de traitement interne dans Direct Line (généralement inférieur à 120 ms)Internal processing time within Direct Line (typically less than 120ms)
- Délai de transmission entre le service Direct Line et le robotTransit time from the Direct Line service to the bot
- Temps de traitement au sein du robotProcessing time within the bot
- Délai de transmission de la réponse HTTP au clientTransit time for the HTTP response to travel back to the client
Envoyer des pièces jointes au robotSend attachment(s) to the bot
Dans certains cas, un client peut avoir besoin d’envoyer des pièces jointes au robot, par exemple des images ou des documents.In some situations, a client may need to send attachments to the bot such as images or documents. Un client peut envoyer des pièces jointes au robot en indiquant la ou les URL de la ou des pièces jointes dans l’objet Activité envoyé à l’aide de POST /v3/directline/conversations/{conversationId}/activities
ou en téléchargeant la ou les pièces jointes à l’aide de POST /v3/directline/conversations/{conversationId}/upload
.A client may send attachments to the bot either by specifying the URL(s) of the attachment(s) within the Activity object that it sends using POST /v3/directline/conversations/{conversationId}/activities
or by uploading attachment(s) using POST /v3/directline/conversations/{conversationId}/upload
.
Envoyer des pièces jointes par URLSend attachment(s) by URL
Pour envoyer une ou plusieurs pièces jointes faisant partie de l’objet Activité à l’aide de POST /v3/directline/conversations/{conversationId}/activities
, il suffit d’inclure un ou plusieurs objets Attachment dans l’objet Activité et de définir la propriété contentUrl
de chaque objet Pièce jointe pour spécifier l’URI HTTP, HTTPS ou data
. URI de la pièce jointe.To send one or more attachments as part of the Activity object using POST /v3/directline/conversations/{conversationId}/activities
, simply include one or more Attachment objects within the Activity object and set the contentUrl
property of each Attachment object to specify the HTTP, HTTPS, or data
URI of the attachment.
Envoyer des pièces jointes par chargementSend attachment(s) by upload
Il arrive souvent qu’un client ait des images ou des documents sur un périphérique qu’il veut envoyer au bot, mais ne dispose pas des URL correspondant aux fichiers.Often, a client may have image(s) or document(s) on a device that it wants to send to the bot, but no URLs corresponding to those files. Dans cette situation, un client peut lancer une requête POST /v3/directline/conversations/{conversationId}/upload
afin d’envoyer des pièces jointes au robot par téléchargement.In this situation, a client can can issue a POST /v3/directline/conversations/{conversationId}/upload
request to send attachments to the bot by upload. Le format et le contenu de la demande varient selon que le client envoie une pièce jointe unique ou envoie plusieurs pièces jointes.The format and contents of the request will depend upon whether the client is sending a single attachment or sending multiple attachments.
Envoyer une seule pièce jointe par téléchargementSend a single attachment by upload
Pour envoyer une seule pièce jointe par chargement, exécutez la demande suivante :To send a single attachment by upload, issue this request:
POST https://directline.botframework.com/v3/directline/conversations/{conversationId}/upload?userId={userId}
Authorization: Bearer SECRET_OR_TOKEN
Content-Type: TYPE_OF_ATTACHMENT
Content-Disposition: ATTACHMENT_INFO
[other headers]
[file content]
Dans cette requête URI, remplacez {conversationId} par l’identifiant de la conversation et {userId} par l’identifiant de l’utilisateur qui envoie le message.In this request URI, replace {conversationId} with the ID of the conversation and {userId} with the ID of the user that is sending the message. Le paramètre userId
est obligatoire.The userId
parameter is required. Dans les en-têtes de demande, définissez Content-Type
pour spécifier le type de la pièce jointe, et définissez Content-Disposition
pour spécifier le nom de fichier de la pièce jointe.In the request headers, set Content-Type
to specify the attachment's type and set Content-Disposition
to specify the attachment's filename.
Les extraits de code suivants montrent la requête et la réponse de l’envoi d’une seule pièce jointe.The following snippets provide an example of the Send (single) Attachment request and response.
RequêteRequest
POST https://directline.botframework.com/v3/directline/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: image/jpeg
Content-Disposition: name="file"; filename="badjokeeel.jpg"
[other headers]
[JPEG content]
responseResponse
Si la requête est acceptée, un message d’activité est envoyé au robot à la fin du téléchargement et la réponse reçue par le client contient l’identifiant de l’activité envoyée.If the request is successful, a message Activity is sent to the bot when the upload completes and the response that the client receives will contain the ID of the Activity that was sent.
HTTP/1.1 200 OK
[other headers]
{
"id": "0003"
}
Envoyer plusieurs pièces jointes par chargementSend multiple attachments by upload
Pour envoyer plusieurs pièces jointes par chargement, publiez (POST
) une demande en plusieurs parties sur le point de terminaison /v3/directline/conversations/{conversationId}/upload
.To send multiple attachments by upload, POST
a multipart request to the /v3/directline/conversations/{conversationId}/upload
endpoint. Définissez l’en-tête Content-Type
de la requête sur multipart/form-data
et insérez les en-têtes Content-Type
et Content-Disposition
à chaque partie pour indiquer le type et le nom de fichier de chaque pièce jointe.Set the Content-Type
header of the request to multipart/form-data
and include the Content-Type
header and Content-Disposition
header for each part to specify each attachment's type and filename. Dans la requête URI, définissez le paramètre userId
à l’identifiant de l’utilisateur qui envoie le message.In the request URI, set the userId
parameter to the ID of the user that is sending the message.
Vous pouvez inclure un objet Activity
dans la requête en ajoutant une partie qui indique la valeur application/vnd.microsoft.activity
de l’en-tête Content-Type
.You may include an Activity
object within the request by adding a part that specifies the Content-Type
header value application/vnd.microsoft.activity
. Si la requête comprend une activité, les pièces jointes indiquées par d’autres parties de la charge utile sont ajoutées comme pièces jointes à cette activité avant qu’elle ne soit envoyée.If the request includes an Activity, the attachments that are specified by other parts of the payload are added as attachments to that Activity before it is sent. Si la requête n’inclut pas d’activité, une activité vide est créée pour servir de conteneur dans lequel les pièces jointes indiquées sont envoyées.If the request does not include an Activity, an empty Activity is created to serve as the container in which the specified attachments are sent.
Les extraits de code suivants montrent la requête et la réponse de l’envoi de plusieurs pièces jointes.The following snippets provide an example of the Send (multiple) Attachments request and response. Dans cet exemple, la demande envoie un message contenant du texte et une image unique en pièce jointe.In this example, the request sends a message that contains some text and a single image attachment. La requête peut comporter des parties supplémentaires afin d’inclure plusieurs pièces jointes dans le message.Additional parts could be added to the request to include multiple attachments in this message.
RequêteRequest
POST https://directline.botframework.com/v3/directline/conversations/abc123/upload?userId=user1
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
Content-Type: multipart/form-data; boundary=----DD4E5147-E865-4652-B662-F223701A8A89
[other headers]
----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: image/jpeg
Content-Disposition: form-data; name="file"; filename="badjokeeel.jpg"
[other headers]
[JPEG content]
----DD4E5147-E865-4652-B662-F223701A8A89
Content-Type: application/vnd.microsoft.activity
[other headers]
{
"type": "message",
"from": {
"id": "user1"
},
"text": "Hey I just IM'd you\n\nand this is crazy\n\nbut here's my webhook\n\nso POST me maybe"
}
----DD4E5147-E865-4652-B662-F223701A8A89
responseResponse
Si la requête est acceptée, un message d’activité est envoyé au robot à la fin du téléchargement et la réponse reçue par le client contient l’identifiant de l’activité envoyée.If the request is successful, a message Activity is sent to the bot when the upload completes and the response that the client receives will contain the ID of the Activity that was sent.
HTTP/1.1 200 OK
[other headers]
{
"id": "0004"
}
Ressources supplémentairesAdditional resources
- Concepts clésKey concepts
- AuthentificationAuthentication
- Démarrer une conversationStart a conversation
- Se reconnecter à une conversationReconnect to a conversation
- Recevoir des activités du botReceive activities from the bot
- Mettre fin à une conversationEnd a conversation
- Schéma d’activité Bot FrameworkBot Framework Activity schema