Envío de un mensaje al bot en 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. 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.

Mediante el protocolo de Direct Line 1.1, los clientes pueden intercambiar mensajes con los bots. Estos mensajes se convierten en el esquema que es compatible con el bot (Bot Framework v1 o Bot Framework v3). Un cliente puede enviar un único mensaje por solicitud.

Envío de un mensaje

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.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío del mensaje y la respuesta.

Solicitud

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

Response

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. 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. Si la PUBLICACIÓN se realiza correctamente, el servicio devuelve un código de estado HTTP 204. No se devuelven datos en el cuerpo de la respuesta. El mensaje del cliente y los mensajes enviados por el bot pueden obtenerse mediante sondeo.

HTTP/1.1 204 No Content
[other headers]

Tiempo total para la solicitud de envío de mensaje/respuesta

El tiempo total para el envío POST de un mensaje en una conversación de Direct Line es la suma de lo siguiente:

  • Tiempo de tránsito de la solicitud HTTP para desplazarse desde el cliente al servicio Direct Line
  • Tiempo de procesamiento interno en Direct Line (normalmente menos de 120 ms)
  • Tiempo de tránsito desde el servicio Direct Line al bot
  • Tiempo de procesamiento en el bot
  • Tiempo de tránsito de la respuesta HTTP hasta el cliente

Envío de datos adjuntos al bot

En algunas situaciones, un cliente debe enviar datos adjuntos al bot, como imágenes o documentos. 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.

Envío de datos adjuntos por dirección 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.

Envío de datos adjuntos mediante carga

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. En esta situación, un cliente puede emitir una solicitud POST /api/conversations/{conversationId}/upload para enviar datos adjuntos al bot mediante carga. 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.

Envío de un único dato adjunto mediante carga

Para enviar un único dato adjunto mediante carga, emita esta solicitud:

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. 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.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío de un único dato adjunto y la respuesta.

Solicitud

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]

Response

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.

HTTP/1.1 204 No Content
[other headers]

Envío de varios datos adjuntos mediante carga

Para enviar varios datos adjuntos mediante carga, emita una solicitud POST de varias partes al punto de conexión /api/conversations/{conversationId}/upload. 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. En el identificador URI de la solicitud, establezca el parámetro userId en el identificador del usuario que envía el mensaje.

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. Esto permite al cliente personalizar el mensaje que contiene los datos adjuntos. 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 enviarlos.

Los fragmentos de código siguientes proporcionan un ejemplo de la solicitud de envío de varios datos adjuntos y la respuesta. En este ejemplo, la solicitud envía un mensaje que contiene texto y un único adjunto de imagen. Se pueden agregar partes adicionales a la solicitud para incluir varios datos adjuntos en este mensaje.

Solicitud

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

Response

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.

HTTP/1.1 204 No Content
[other headers]

Recursos adicionales