Enviar uma atividade para o bot no Direct Line API 3.0
Usando o protocolo 3.0 de linha direta, bots e os clientes podem trocar vários tipos diferentes de atividades, incluindo mensagem atividades, digitando atividades, e atividades personalizados que dá suporte ao bot. Um cliente pode enviar uma única atividade por solicitação.
Enviar uma atividade
Para enviar uma atividade para o bot, o cliente deve criar uma atividade objeto para definir a atividade e, em seguida, emitir um POST
solicitar https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
, especificando o objeto de atividade no corpo da solicitação.
Os snippets de código a seguir fornecem um exemplo de como a atividade enviar solicitação e resposta.
Solicitação
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 para o bot, o serviço responde com um código de status HTTP que reflete o código de status do bot. Se o bot gera um erro, uma resposta de HTTP 502 ("Gateway incorreto") é retornada ao cliente em resposta à sua solicitação de atividade de enviar.
Observação
Isso pode ser causado pelo fato de que um token correto não foi usado. Somente o token recebido em iniciar conversa pode ser usado para enviar uma atividade.
Se o POST for bem-sucedido, a resposta contém uma carga JSON que especifica a ID da atividade que foi enviada para o bot.
HTTP/1.1 200 OK
[other headers]
{
"id": "0001"
}
Tempo total para a atividade enviar solicitação/resposta
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 atividade do objeto que ele envia usando POST /v3/directline/conversations/{conversationId}/activities
ou pelo carregando anexos usando POST /v3/directline/conversations/{conversationId}/upload
.
Enviar anexos por URL
Para enviar um ou mais anexos como parte do atividade objeto usando POST /v3/directline/conversations/{conversationId}/activities
, basta incluir uma ou mais anexo objetos dentro do objeto de atividade e conjunto o contentUrl
propriedade de cada objeto de anexo para especificar HTTP, HTTPS, ou data
URI do anexo.
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 /v3/directline/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/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]
Nesse URI de solicitação, substitua {conversationId} pelo ID da conversa e {userId} pelo ID do usuário que está enviando a mensagem. O userId
parâmetro é obrigatório. 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/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 a solicitação for bem-sucedida, uma mensagem Activity será enviada ao bot quando o upload for concluído e a resposta recebida pelo cliente conterá o ID da Activity 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
uma solicitação multipartes para o endpoint/v3/directline/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 objeto Activity
dentro da solicitação adicionando um bloco que especifica o valor application/vnd.microsoft.activity
do cabeçalho Content-Type
. Se a solicitação incluir uma Atividade, os anexos especificados por outras partes do conteúdo serão adicionados como anexos a essa Atividade antes de serem enviados. Se a solicitação não incluir uma Atividade, uma Atividade vazia será criada para servir como o contêiner no qual os anexos especificados são 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/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 a solicitação for bem-sucedida, uma mensagem Activity será enviada ao bot quando o upload for concluído e a resposta recebida pelo cliente conterá o ID da Activity que foi enviada.
HTTP/1.1 200 OK
[other headers]
{
"id": "0004"
}