Envío de un mensaje al bot en Direct line API 1,1Send a message to the bot in Direct Line API 1.1

Importante

En este artículo se describe cómo enviar un mensaje al bot mediante Direct Line API v1.1.This article describes how to send a message to the bot using Direct Line API 1.1. Si va a crear una nueva conexión entre la aplicación cliente y el bot, use Direct Line API 3.0 en su lugar.If you are creating a new connection between your client application and bot, use Direct Line API 3.0 instead.

Mediante el protocolo de Direct Line 1.1, los clientes pueden intercambiar mensajes con los bots.Using the Direct Line 1.1 protocol, clients can exchange messages with bots. Estos mensajes se convierten en el esquema que es compatible con el bot (Bot Framework v1 o Bot Framework v3).These messages are converted to the schema that the bot supports (Bot Framework v1 or Bot Framework v3). Un cliente puede enviar un único mensaje por solicitud.A client may send a single message per request.

Envío de un mensajeSend a message

Para enviar un mensaje al bot, el cliente debe crear un objeto Message para definir el mensaje y, a continuación, emitir una solicitud POST a https://directline.botframework.com/api/conversations/{conversationId}/messages, especificando el objeto Mensaje en el cuerpo de la solicitud.To send a message to the bot, the client must create a Message object to define the message and then issue a POST request to https://directline.botframework.com/api/conversations/{conversationId}/messages, specifying the Message object in the body of the request.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío del mensaje y la respuesta.The following snippets provide an example of the Send Message request and response.

SolicitudRequest

POST https://directline.botframework.com/api/conversations/abc123/messages
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0
[other headers]
{
  "text": "hello",
  "from": "user1"
}

ResponseResponse

Cuando se entrega el mensaje al bot, el servicio responde con un código de estado HTTP que refleja el código de estado del bot.When the message is delivered to the bot, the service responds with an HTTP status code that reflects the bot's status code. Si el bot genera un error, se devuelve una respuesta HTTP 500 ("Error interno del servidor") al cliente en respuesta a su solicitud de envío de mensaje.If the bot generates an error, an HTTP 500 response ("Internal Server Error") is returned to the client in response to its Send Message request. Si la PUBLICACIÓN se realiza correctamente, el servicio devuelve un código de estado HTTP 204.If the POST is successful, the service returns an HTTP 204 status code. No se devuelven datos en el cuerpo de la respuesta.No data is returned in body of the response. El mensaje del cliente y los mensajes enviados por el bot pueden obtenerse mediante sondeo.The client's message and any messages from the bot can be obtained via polling.

HTTP/1.1 204 No Content
[other headers]

Tiempo total para la solicitud de envío de mensaje/respuestaTotal time for the Send Message request/response

El tiempo total para el envío POST de un mensaje en una conversación de Direct Line es la suma de lo siguiente:The total time to POST a message to a Direct Line conversation is the sum of the following:

  • Tiempo de tránsito de la solicitud HTTP para desplazarse desde el cliente al servicio Direct LineTransit time for the HTTP request to travel from the client to the Direct Line service
  • Tiempo de procesamiento interno en Direct Line (normalmente menos de 120 ms)Internal processing time within Direct Line (typically less than 120ms)
  • Tiempo de tránsito desde el servicio Direct Line al botTransit time from the Direct Line service to the bot
  • Tiempo de procesamiento en el botProcessing time within the bot
  • Tiempo de tránsito de la respuesta HTTP hasta el clienteTransit time for the HTTP response to travel back to the client

Envío de datos adjuntos al botSend attachment(s) to the bot

En algunas situaciones, un cliente debe enviar datos adjuntos al bot, como imágenes o documentos.In some situations, a client may need to send attachments to the bot such as images or documents. Un cliente puede enviar datos adjuntos al bot ya sea especificando las direcciones URL de los datos adjuntos en el objeto Message que envía mediante POST /api/conversations/{conversationId}/messages o cargando datos adjuntos mediante POST /api/conversations/{conversationId}/upload.A client may send attachments to the bot either by specifying the URL(s) of the attachment(s) within the Message object that it sends using POST /api/conversations/{conversationId}/messages or by uploading attachment(s) using POST /api/conversations/{conversationId}/upload.

Envío de datos adjuntos por dirección URLSend attachment(s) by URL

Para enviar uno o varios datos adjuntos como pate del objeto Message con el uso de POST /api/conversations/{conversationId}/messages, especifique las direcciones URL de los datos adjuntos en las matrices images o attachments del mensaje.To send one or more attachments as part of the Message object using POST /api/conversations/{conversationId}/messages, specify the attachment URL(s) within the message's images array and/or attachments array.

Envío de datos adjuntos mediante cargaSend attachment(s) by upload

A menudo, un cliente puede tener imágenes o documentos en un dispositivo que desea enviar al bot, pero no hay direcciones URL correspondientes a esos archivos.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. En esta situación, un cliente puede emitir una solicitud POST /api/conversations/{conversationId}/upload para enviar datos adjuntos al bot mediante carga.In this situation, a client can can issue a POST /api/conversations/{conversationId}/upload request to send attachments to the bot by upload. El formato y el contenido de la solicitud dependerán de si el cliente envía un único dato adjunto o envía varios datos adjuntos.The format and contents of the request will depend upon whether the client is sending a single attachment or sending multiple attachments.

Envío de un único dato adjunto mediante cargaSend a single attachment by upload

Para enviar un único dato adjunto mediante carga, emita esta solicitud:To send a single attachment by upload, issue this request:

POST https://directline.botframework.com/api/conversations/{conversationId}/upload?userId={userId}
Authorization: Bearer SECRET_OR_TOKEN
Content-Type: TYPE_OF_ATTACHMENT
Content-Disposition: ATTACHMENT_INFO
[other headers]

[file content]

En este identificador URI de solicitud, reemplace {conversationId} por el identificador de la conversación y {userId} por el identificador del usuario que envía el mensaje.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. En los encabezados de solicitud, establezca Content-Type para especificar el tipo de datos adjuntos y establezca Content-Disposition para especificar el nombre de archivo de los datos adjuntos.In the request headers, set Content-Type to specify the attachment's type and set Content-Disposition to specify the attachment's filename.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío de un único dato adjunto y la respuesta.The following snippets provide an example of the Send (single) Attachment request and response.

SolicitudRequest

POST https://directline.botframework.com/api/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 solicitud es correcta, se envía un mensaje al bot cuando se completa la carga y el servicio devuelve un código de estado HTTP 204.If the request is successful, a message is sent to the bot when the upload completes and the service returns an HTTP 204 status code.

HTTP/1.1 204 No Content
[other headers]

Envío de varios datos adjuntos mediante cargaSend multiple attachments by upload

Para enviar varios datos adjuntos mediante carga, emita una solicitud POST de varias partes al punto de conexión /api/conversations/{conversationId}/upload.To send multiple attachments by upload, POST a multipart request to the /api/conversations/{conversationId}/upload endpoint. Establezca el encabezado Content-Type de la solicitud en multipart/form-data e incluya el encabezado Content-Type y el encabezado Content-Disposition para que cada parte especifique el tipo y el nombre de archivo de los datos adjuntos.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. En el identificador URI de la solicitud, establezca el parámetro userId en el identificador del usuario que envía el mensaje.In the request URI, set the userId parameter to the ID of the user that is sending the message.

Puede incluir un objeto Message en la solicitud con la adición de una parte que especifica como encabezado Content-Type el valor application/vnd.microsoft.bot.message.You may include a Message object within the request by adding a part that specifies the Content-Type header value application/vnd.microsoft.bot.message. Esto permite al cliente personalizar el mensaje que contiene los datos adjuntos.This allows the client to customize the message that contains the attachment(s). Si la solicitud incluye un mensaje, los datos adjuntos especificados por otras partes de la carga se agregan como datos adjuntos a ese mensaje antes de enviarlo.If the request includes a Message, the attachments that are specified by other parts of the payload are added as attachments to that Message before it is sent.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío de varios datos adjuntos y la respuesta.The following snippets provide an example of the Send (multiple) Attachments request and response. En este ejemplo, la solicitud envía un mensaje que contiene texto y un único adjunto de imagen.In this example, the request sends a message that contains some text and a single image attachment. Se pueden agregar partes adicionales a la solicitud para incluir varios datos adjuntos en este mensaje.Additional parts could be added to the request to include multiple attachments in this message.

SolicitudRequest

POST https://directline.botframework.com/api/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.bot.message
[other headers]

{
  "text": "Hey I just IM'd you\n\nand this is crazy\n\nbut here's my webhook\n\nso POST me maybe",
  "from": "user1"
}

----DD4E5147-E865-4652-B662-F223701A8A89

ResponseResponse

Si la solicitud es correcta, se envía un mensaje al bot cuando se completa la carga y el servicio devuelve un código de estado HTTP 204.If the request is successful, a message is sent to the bot when the upload completes and the service returns an HTTP 204 status code.

HTTP/1.1 204 No Content
[other headers]

Recursos adicionalesAdditional resources