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.activity
do 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"
}