Partilhar via


Envie uma atividade para o bot em Direct Line API 3.0

Utilizando o protocolo Direct Line 3.0, os clientes e bots podem trocar vários tipos de atividades, incluindo atividades de mensagens, atividades de dactilografia e atividades personalizadas que o bot suporta. Um cliente pode enviar uma única atividade por pedido.

Enviar uma atividade

Para enviar uma atividade ao bot, o cliente deve criar um objeto de Atividade para definir a atividade e, em seguida, emitir um POST pedido para https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities, especificando o objeto Atividade no corpo do pedido.

Os seguintes snippets fornecem um exemplo do pedido e resposta da Atividade de Envio.

Pedir

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"
}

Resposta

Quando a atividade é entregue ao bot, o serviço responde com um código de estado HTTP que reflete o código de estado do bot. Se o bot gerar um erro, uma resposta HTTP 502 ("Bad Gateway") é devolvida ao cliente em resposta ao seu pedido de Atividade de Envio.

Nota

Isto pode ser causado pelo facto de não ter sido usado um símbolo correto. Apenas o símbolo que foi recebido contra a conversa inicial pode ser usado para enviar uma atividade.

Se o POST for bem sucedido, a resposta contém uma carga útil JSON que especifica o ID da Atividade que foi enviada para o bot.

HTTP/1.1 200 OK
[other headers]
{
    "id": "0001"
}

Tempo total para o pedido/resposta da Atividade de Envio

O tempo total para publicar uma mensagem para uma conversa Direct Line é a soma do seguinte:

  • Tempo de trânsito para o pedido HTTP de viajar do cliente para o serviço Direct Line
  • Tempo de processamento interno dentro de Direct Line (tipicamente inferior a 120ms)
  • Tempo de trânsito do serviço de Direct Line para o bot
  • Tempo de processamento dentro do bot
  • Tempo de trânsito para a resposta HTTP para viajar de volta para o cliente

Enviar anexos para o bot

Em algumas situações, um cliente pode precisar de enviar anexos para o bot, como imagens ou documentos. Um cliente pode enviar anexos para o bot, especificando os URL(s) do(s) anexo(s) dentro do objeto de atividade que envia usando POST /v3/directline/conversations/{conversationId}/activities ou carregando os anexos(s) utilizando POST /v3/directline/conversations/{conversationId}/upload.

Enviar anexos por URL

Para enviar um ou mais anexos como parte do objeto de atividade utilizando POST /v3/directline/conversations/{conversationId}/activities, basta incluir um ou mais objetos de anexo dentro do objeto De atividade e definir a contentUrl propriedade de cada objeto anexo para especificar o HTTP, HTTPS ou data URI do anexo.

Enviar anexos(s) por upload

Muitas vezes, um cliente pode ter imagens ou documentos num dispositivo que pretende enviar para o bot, mas nenhum URLs correspondente a esses ficheiros. Nesta situação, um cliente pode emitir um POST /v3/directline/conversations/{conversationId}/upload pedido de envio de anexos para o bot através do upload. O formato e o conteúdo do pedido dependerão se o cliente está a enviar um único anexo ou a enviar vários anexos.

Enviar um único anexo por upload

Para enviar um único anexo por upload, emita este pedido:

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]

Neste pedido URI, substitua {conversationId} pelo ID da conversação e {userId} com o ID do utilizador que está a enviar a mensagem. O parâmetro userId é necessário. Nos cabeçalhos de pedido, definido Content-Type para especificar o tipo do anexo e definido Content-Disposition para especificar o nome de ficheiro do anexo.

Os seguintes snippets fornecem um exemplo do pedido de anexo (único) e resposta.

Pedir

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]

Resposta

Se o pedido for bem sucedido, uma mensagem A Atividade é enviada para o bot quando o upload estiver concluído e a resposta que o cliente recebe conterá o ID da Atividade que foi enviada.

HTTP/1.1 200 OK
[other headers]
{
  "id": "0003"
}

Enviar vários anexos por upload

Para enviar vários anexos por upload, POST um pedido multipart para o /v3/directline/conversations/{conversationId}/upload ponto final. Desave o Content-Type cabeçalho do pedido multipart/form-data e inclua o cabeçalho e Content-Disposition o Content-Type cabeçalho para cada peça especificar o tipo e o nome de arquivo de cada anexo. No pedido URI, desa estade o userId parâmetro para o ID do utilizador que está a enviar a mensagem.

Pode incluir um Activity objeto dentro do pedido adicionando uma parte que especifica o valor application/vnd.microsoft.activitydo Content-Type cabeçalho . Se o pedido incluir uma Atividade, os anexos especificados por outras partes da carga útil são adicionados como anexos a essa Atividade antes de ser enviado. Se o pedido não incluir uma Atividade, é criada uma Atividade vazia para servir como recipiente no qual são enviados os anexos especificados.

Os seguintes snippets fornecem um exemplo do pedido e resposta dos Anexos Enviar (múltiplos). Neste exemplo, o pedido envia uma mensagem que contém algum texto e um único anexo de imagem. Podem ser adicionadas peças adicionais ao pedido para incluir vários anexos nesta mensagem.

Pedir

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

Resposta

Se o pedido for bem sucedido, uma mensagem A Atividade é enviada para o bot quando o upload estiver concluído e a resposta que o cliente recebe conterá o ID da Atividade que foi enviada.

HTTP/1.1 200 OK
[other headers]
{
    "id": "0004"
}

Recursos adicionais