Enviar uma mensagem para o bot na API 1.1 do Direct Line

Importante

Este artigo descreve como enviar uma mensagem ao bot usando a API de linha direta 1.1. Se você estiver criando uma nova conexão entre o aplicativo cliente e o bot, use Direct Line API 3.0.

Usando o protocolo 1.1 de linha direta, os clientes podem trocar mensagens com bots. Essas mensagens são convertidas no esquema que o bot suporta (Bot Framework v1 ou Bot Framework v3). Um cliente pode enviar uma mensagem única por solicitação.

Enviar uma mensagem

Para enviar uma mensagem ao bot, o cliente deve criar um objeto Message para definir a mensagem e, em seguida, emitir uma solicitação POST para https://directline.botframework.com/api/conversations/{conversationId}/messages, especificando o objeto Message no corpo da solicitação.

Os snippets de código a seguir fornecem um exemplo de enviar mensagem solicitação e resposta.

Solicitação

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

Resposta

Quando a mensagem é entregue ao bot, o serviço responde com um código de status HTTP que reflete o código de status do bot. Se o bot gerar um erro, uma resposta HTTP 500 ("Internal Server Error") é retornada ao cliente em resposta à solicitação Send Message. Se o POST for bem-sucedido, o serviço retornará um código de status HTTP 204. Nenhum dado é retornado no corpo da resposta. A mensagem do cliente e quaisquer mensagens do bot podem ser obtidas via polling.

HTTP/1.1 204 No Content
[other headers]

Tempo total para o pedido / resposta Enviar mensagem

O tempo total para postar uma mensagem a uma conversa de linha direta é a soma das seguintes opções:

  • Tempo em trânsito para a solicitação HTTP para viajar do cliente para o serviço de linha direta
  • Tempo de processamento interno no linha direta (normalmente menos de 120 ms)
  • Tempo em trânsito do serviço de linha direta para o bot
  • Tempo de processamento no bot
  • Tempo em trânsito para a resposta HTTP para a viagem de volta ao cliente

Enviar o anexo (s) para o bot

Em algumas situações, um cliente talvez precise enviar anexos para o bot, como imagens ou documentos. Um cliente pode enviar anexos para o bot ou pelo especificando as URLs dos anexos dentro a mensagem do objeto que ele envia usando POST /api/conversations/{conversationId}/messages ou pelo carregando anexos usando POST /api/conversations/{conversationId}/upload.

Enviar anexos por URL

Para enviar um ou mais anexos como parte do objeto Message usando POST /api/conversations/{conversationId}/messages, especifique o (s) URL (s) do (s) anexo (s) no array images e / ou attachments da mensagem.

Enviar anexos por upload

Geralmente, um cliente pode ter imagens ou documento (s) em um dispositivo que deseja enviar para o bot, mas não há URLs correspondem a esses arquivos. Nessa situação, um cliente pode emitir um POST /api/conversations/{conversationId}/upload solicitação para enviar anexos para o bot pelo carregamento. O formato e conteúdo da solicitação dependerão se o cliente é enviar um único anexo ou enviando vários anexos.

Enviar um anexo por upload

Para enviar um único anexo por upload, envie esta solicitação:

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]

Nesse URI de solicitação, substitua {conversationId} pelo ID da conversa e {userId} pelo ID do usuário que está enviando a mensagem. Nos cabeçalhos de solicitação, defina Content-Type para especificar o tipo do anexo e defina Content-Disposition para especificar o nome do arquivo do anexo.

Os snippets de código a seguir fornecem um exemplo da solicitação de envio (única) de anexo e a resposta.

Solicitação

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]

Resposta

Se a solicitação for bem-sucedida, uma mensagem é enviada para o bot quando o carregamento for concluído e o serviço retorna um código de status HTTP 204.

HTTP/1.1 204 No Content
[other headers]

Enviar vários anexos por upload

Para enviar vários anexos por upload, POSTuma solicitação multipartes para o endpoint/api/conversations/{conversationId}/upload. Defina as Content-Type cabeçalho da solicitação para multipart/form-data e incluem o Content-Type cabeçalho e Content-Disposition cabeçalho para cada parte especificar o tipo e nome do arquivo de cada anexo. No URI de solicitação, defina o userId parâmetro para a ID do usuário que está enviando a mensagem.

Você pode incluir um mensagem objeto dentro da solicitação com a adição de uma parte que especifica se o Content-Type valor de cabeçalho application/vnd.microsoft.bot.message. Isso permite que o cliente personalizar a mensagem que contém o anexo (s). Se a solicitação incluir uma Mensagem, os anexos especificados por outras partes da carga serão adicionados como anexos a essa Mensagem antes de serem enviados.

Os snippets a seguir fornecem um exemplo da solicitação e resposta Enviar (vários) Anexos. Neste exemplo, a solicitação envia uma mensagem que contém algum texto e um único anexo de imagem. Partes adicionais pôde ser adicionados à solicitação para incluir vários anexos nesta mensagem.

Solicitação

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

Resposta

Se a solicitação for bem-sucedida, uma mensagem é enviada para o bot quando o carregamento for concluído e o serviço retorna um código de status HTTP 204.

HTTP/1.1 204 No Content
[other headers]

Recursos adicionais