External Bot API 2.0
O Rox.Chat oferece suporte à conexão de bots 'external'" ou 'inteligent', hospedados em um servidor externo ao servidor do Rox.Chat, usando a External Bot API 2.0. A versão anterior da External Bot API também é preservada e versões subsequentes para suportar a compatibilidade, ou seja, ambas as versões da API são suportadas.
Descrição
Ao contrário da versão anterior, a External Bot API 2.0 é assíncrona. O bot recebe uma pergunta do usuário e a envia para o servidor externo. O servidor gera uma resposta e a envia de volta ao serviço Rox.Chat, que a exibe ao usuário. Nesse caso, o servidor Rox.Chat não espera por uma resposta do servidor do bot: o bot envia sua resposta sempre que estiver pronto. Ao contrário da versão anterior da External Bot API, não é necessário responder imediatamente; apenas é necessário retornar um código 200 após a execução bem-sucedida da solicitação, e a resposta pode ser formulada posteriormente.
Lógica Geral
Todos os chats online que chegam ao departamento ao qual o External Bot API está adicionado são automaticamente atribuídos ao bot. O status online do bot afeta o status online geral do sistema:
-
Se o bot estiver Online, ele aceitará todos os chats dos usuários, e o botão no site exibirá Online.
-
Se o bot estiver Invisível e não houver agentes online, ele aceitará todos os chats dos usuários, mas o botão no site exibirá Offline.
-
Se o bot estiver Offline, ele não aceitará nenhum chat (e não afetará o status online do botão).
Configuração
As instruções para configurar e conectar um bot inteligente são aplicáveis à versão atual do serviço Rox.Chat.
Para conectar um bot externo ao serviço Rox.Chat:
-
Crie uma nova conta de agente usando o Painel de Controle.
-
Vá para as configurações da sua conta e selecione a seção Bots.
-
Na janela aberta, clique no botão Criar um Novo Bot.
-
Preencha as informações sobre o seu bot: atribua-o a um novo agente, selecione Bot Inteligente como tipo de bot e escolha a versão
2
. -
No campo Link da API External, insira o endereço URL do servidor externo para o bot.
-
Salve as alterações.
-
Após salvar, um token de autorização para solicitações será gerado automaticamente para você e exibido no campo Token
Base URL
A estrutura de URL no lado do Rox.Chat é a seguinte:
https://{hostname}/api/bot/v2/{path}
onde {hostname}
é o nome do host onde o servidor Rox.Chat está localizado, como {account}.rox.chat
para clientes na nuvem e chat.mycompany.com
para clientes hospedados; {path}
é o comando da API.
Lista de endpoints da External Bot API 2.0:
-
/api/bot/v2/send_message
-
/api/bot/v2/redirect_chat
-
/api/bot/v2/close_chat
-
/api/bot/v2/file/{guid}?hash={hash}
Exemplo de URL:
https://mycompany.rox.chat/api/bot/v2/redirect_chat
N.B.
A URL do lado do bot é configurada nas configurações.
Solicitações ao Rox.Chat
Abaixo estão exemplos e descrições de solicitações ao servidor Rox.Chat. As solicitações são enviadas para a URL especificada ao criar o bot.
Autorização
A autorização é feita por meio de um cabeçalho usando um token. Um novo token é gerado para cada bot.
Formato do token de autorização:
Authorization: Token {token}
Authorization: Token ac650a3c369a4b9599ad52ab71943712
Tratamento de Erros
O Rox.Chat responde com um código HTTP 200 em caso de sucesso.
Os erros são retornados no formato:
{
"error": "error code"
}
400
.
Em caso de erro de autorização, retorna um código HTTP 403
.
Se um robô com o token especificado não for encontrado, retorna um código HTTP 403
.
Se um método não descrito abaixo for usado, retorna um erro 404
{'error': 'method-not-found'}.
Em caso de diferentes erros internos do servidor, um erro com um código HTTP 500
é retornado.
Se o token estiver ausente, o servidor retornará um erro:
{
"error": "unauthorized"
}
{
"error": "error code",
"desc": "error description"
}
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
error |
String |
incorrect-request |
Error code. | Yes |
desc |
String |
A solicitação está formulada incorretamente. Pode ser que parâmetros obrigatórios estejam ausentes. | Descrição do erro em Português. | No |
Resposta do chatbot à pergunta do visitante
Caminho: /send_message
Tipo de Solicitação: POST
Tipo de Conteúdo: application/json
Parâmetros da string de consulta: Não necessário
Exemplo de URL para enviar uma mensagem do bot para o visitante:
POST https://mycompany.rox.chat/api/bot/v2/send_message
message
do bot:
{
"message": Message,
"chat_id": 3058
}
Field | Type | Description | Mandatory |
---|---|---|---|
message |
JSON |
Message object |
Yes |
chat_id |
Integer |
Chat identifier | Yes |
O objeto de Message
pode ter campos diferentes dependendo do tipo de mensagem.
Mensagem de Texto
Exemplo de conteúdo do objeto de Message
em uma mensagem de texto:
{
"kind": "operator",
"text": "Olá, como posso ajudar você?"
}
Descrição dos campos no objeto de Message
em uma mensagem de texto:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
kind |
String |
operator |
Tipo de mensagem. Neste caso, é uma mensagem de texto com kind = "operator". Todos os tipos de mensagem podem ser encontrados aqui | Yes |
text |
String |
Olá, preciso de sua consulta sobre planos de preços |
Conteúdo da mensagem de texto. | Yes |
Descrição de possíveis erros em uma mensagem de texto:
Error Code | Description |
---|---|
message-not-created |
Falha ao criar a mensagem. A solicitação pode ter sido formulada incorretamente. |
incorrect-request |
Solicitação formulada incorretamente. Parâmetros obrigatórios podem estar ausentes. |
chat-not-found |
O chat com o ID especificado não foi encontrado, não foi atribuído ao bot, ou o diálogo está inativo (fechado, transferido para a fila geral, etc.). |
Mensagem de Arquivo
Warning!
External Bot API não fornece a capacidade de fazer upload de um arquivo para o servidor de chat usando este método. Em caso de dúvidas sobre este método ou fazer upload de arquivos para o servidor de chat, entre em contato com o suporte técnico ou seu gerente de conta.
Exemplo de conteúdo do objeto de Mensagem para uma mensagem de arquivo:
{
"kind": "file_operator",
"data": {
"url": "https://rox.chat/uploads/2019/04/diagram.png"
"name": "diagram.png",
"media_type": "image/png"
}
}
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
kind |
String |
file_operator |
Tipo de mensagem. Neste caso, é uma mensagem de arquivo com kind = "file_operator". Neste caso, são mensagens de agente contendo os arquivos enviados. Todos os tipos de mensagem podem ser encontrados aqui | Yes |
data.url |
String |
https://somesite.com/img54-65-79.jpg |
URL do arquivo. | Yes |
data.name |
String |
beautifulpicture.jpg |
O nome do arquivo. O nome deve conter uma extensão. O bot pode enviar arquivos com extensões especificadas pelo parâmetro robot_allowed_upload_file_types nas configurações de conta. |
Yes |
data.media_type |
String |
image/jpeg |
Tipo de Mídia na Internet. O bot pode enviar arquivos com tipos de mídia especificados por robot_allowed_upload_file_content_types . Você também pode impor restrições ao tamanho dos arquivos enviados pelo bot. |
Yes |
Descrição de possíveis erros na mensagem de arquivo:
Error Code | Description |
---|---|
insecure-file-type | O arquivo não passou nas verificações de segurança. |
incorrect-image | Arquivo de imagem incorreto. |
media-type-not-match | O tipo de mídia declarado não corresponde ao tipo de mídia real. |
max-file-size-exceeded | O tamanho do arquivo excede o tamanho permitido. |
message-not-created | A mensagem não pôde ser criada. A solicitação pode ter sido gerada incorretamente. |
chat-not-found | Um chat com o ID especificado não foi encontrado, não foi atribuído a um robô ou o diálogo está inativo (porque foi fechado, transferido para a fila geral, etc.). |
incorrect-request | A solicitação foi formulada incorretamente. É possível que parâmetros obrigatórios estejam ausentes. |
Mensagem com Botões
Um exemplo de conteúdo do objeto de Message
para uma mensagem com botões:
{ "kind": "keyboard", "buttons": [ { "text": "Transferir para o suporte técnico", "id": "fedc60c4dc0d4348b48b524d" }, { "text": "Transferir para o departamento de vendas", "id": "574f2caad88a41a7a2d6b667" } ] }
Descrição dos campos do objeto de Message
para uma mensagem com botões:
Field | Type | Description | Mandatory |
---|---|---|---|
kind |
String |
Tipo de mensagem. Mensagens com botões são do tipo keyboard ou keyboard_response. Todos os tipos de mensagem podem ser encontrados [aqui].(../../dev/basic-objects/message-types.md) | Yes |
buttons |
list |
Um array aninhado contendo dados sobre os botões enviados ao visitante. Permite agrupar conjuntos de botões oferecidos ao visitante em strings. | Yes |
Cada objeto Button contém os seguintes parâmetros no array:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
id |
String |
937bec4863154a2fb0889ff1 |
O identificador do botão. Pode conter apenas letras latinas, dígitos, hífen e sublinhado, e deve ter no máximo 24 caracteres. O ID do botão gerado pelo servidor Rox.Chat está no formato UUID4, enquanto o ID gerado por bots de terceiros é verificado apenas quanto à conformidade com os critérios acima. | Yes |
text |
String |
Ask a question to an agent | O texto do botão. | Yes |
Descrição de possíveis erros na mensagem de botão:
Error Code | Description |
---|---|
incorrect-buttons |
O arquivo não passou na verificação de segurança. |
message-not-created |
A mensagem não pôde ser criada. A solicitação pode ter sido gerada incorretamente. |
chat-not-found |
Um chat com o ID especificado não foi encontrado, não foi atribuído a um robô ou o diálogo está inativo (porque foi fechado, transferido para a fila geral, etc.). |
incorrect-request |
A solicitação foi formulada incorretamente. É possível que parâmetros obrigatórios estejam ausentes. |
Transferência de Chat
Um chat pode ser transferido para um agente específico, departamento ou para a fila geral. Se nenhum agente ou departamento for especificado para a transferência, o chat será redirecionado para a fila geral. Se tanto um agente quanto um departamento forem especificados, a solicitação não será executada corretamente e o chat não será redirecionado (é necessário especificar um deles).
Caminho: /redirect_chat
Tipo de Solicitação: POST
Tipo de Conteúdo: application/json
Parâmetros da string de consulta: não necessário
Exemplo de URL ao transferir um chat:
POST https://mycompany.rox.chat/api/bot/v2/redirect_chat
Transferir para agente
Exemplo de corpo de solicitação ao transferir um chat para um agente:
{
"operator_id": 486254,
"chat_id": 195
}
Descrição dos campos do objeto na resposta à solicitação ao transferir um chat para um agente:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
operator_id |
Integer |
168524 |
ID do agente. | Yes |
chat_id |
Integer |
426 |
O identificador do chat. | Yes |
Descrição de possíveis erros ao transferir um chat para um agente:
Error Code | Description |
---|---|
operator-not-found |
Um agente com o ID especificado não foi encontrado. |
target-is-offline |
O agente está offline. |
chat-not-found |
Um chat com o ID especificado não foi encontrado, não foi atribuído a um robô, ou o diálogo está inativo (porque foi fechado, transferido para a fila geral, etc.). |
incorrect-request |
A solicitação foi formulada incorretamente. É possível que parâmetros obrigatórios estejam ausentes. |
Transferir para departamento
Exemplo de corpo de solicitação ao transferir um chat para um departamento:
{
"dep_key": "sales_department",
"chat_id": 425,
"allow_redirect_to_offline_dep": false,
"allow_redirect_to_invisible_dep": true
}
Descrição dos campos do objeto na resposta à solicitação ao transferir um chat para um departamento:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
dep_key |
String |
sales_department |
O identificador (chave de texto) do departamento. | |
Yes | ||||
chat_id |
Integer |
168 |
Identificador do chat. | |
Yes | ||||
allow_redirect_to_offline_dep |
Boolean |
false |
Se redirecionar um chat para um departamento quando todos os agentes estiverem offline. Correspondentemente, as conversas também são transferidas quando os agentes estão em outros estados - Invisível e outros. O padrão é false. | |
No | ||||
allow_redirect_to_invisible_dep |
Boolean |
true |
Se transferir um chat para um departamento se não houver agentes online - é suficiente que um agente esteja no status Invisível ou similar. Se allow_redirect_to_offline_dep estiver habilitado, a funcionalidade allow_redirect_to_invisible_dep é automaticamente ativada, pois é uma propriedade mais forte. Assim, esse parâmetro difere do parâmetro anterior no sentido de que, quando habilitado, os chats não são transferidos apenas para departamentos onde todos os agentes estão no status Offline. O padrão é true. |
N.B.
Dos dois parâmetros - allow_redirect_to_offline_dep
e allow_redirect_to_invisible_dep
- apenas um pode estar presente no corpo da solicitação; caso contrário, o servidor retornará um erro em resposta à solicitação.
Descrição de possíveis erros ao transferir um chat para um departamento:
Error Code | Description |
---|---|
department-not-found |
O departamento com o ID especificado não foi encontrado. |
target-is-offline |
O departamento está offline. |
chat-not-found |
Um chat com o ID especificado não foi encontrado, não foi atribuído a um robô, ou o diálogo está inativo (porque foi fechado, transferido para a fila geral, etc.). |
incorrect-request |
A solicitação foi formulada incorretamente. É possível que parâmetros obrigatórios estejam ausentes. |
Transferir para a fila geral
Exemplo de corpo de solicitação ao transferir um chat para a fila geral:
{
"chat_id": 425
}
Descrição dos campos do objeto na resposta à solicitação ao transferir um chat para a fila geral:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
chat_id |
Integer |
426 |
Chat ID. | Yes |
Fechando o chat
Caminho: /close_chat
Tipo de solicitação: POST
Tipo de conteúdo: application/json
Parâmetros da string de consulta: não necessário
Exemplo de URL ao fechar um chat:
POST https://mycompany.rox.chat/api/bot/v2/close_chat
Exemplo de corpo de solicitação ao fechar um chat:
{
"chat_id": 462
}
Descrição dos campos do objeto na resposta à solicitação ao fechar um chat:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
chat_id |
Integer |
426 |
Chat ID. | Yes |
Descrição dos possíveis erros ao fechar um chat:
Error Code | Description |
---|---|
chat-not-found |
Um chat com o ID especificado não foi encontrado, não foi atribuído a um robô, ou o diálogo está inativo (porque foi fechado, transferido para a fila geral, etc.). |
incorrect-request |
A solicitação foi formulada incorretamente. É possível que parâmetros obrigatórios estejam ausentes. |
Download de Arquivo
Com esta solicitação, o cliente pode baixar um arquivo enviado por um visitante em um chat com o bot.
Caminho: /file/{guid}?hash={hash}
Tipo de solicitação: GET
Parâmetros da string de consulta: hash - hash calculado
Exemplo de URL ao baixar arquivos:
GET https://mycompany.rox.chat/api/bot/v2/file/7d5d197ef3ee4b29be6b1a668977ccdc?hash=e96881ac8db26e8570cd9c032900cd3e0b08128132e61c844102633c64a69b2a
Onde:
-
7d5d197ef3ee4b29be6b1a668977ccdc
- GUID (identificador único) do arquivo; -
e96881ac8db26e8570cd9c032900cd3e0b08128132e61c844102633c64a69b2a
- assinatura hash do arquivo, que ajuda a proteger o arquivo contra downloads indesejados.
Esta URL resultará no cliente baixando o arquivo enviado pelo visitante no chat.
O link para baixar o arquivo está dentro de uma mensagem que possui kind = file_visitor
.
Se a autorização do hash do arquivo falhar, o servidor retornará um erro: 403 {'error': 'access-denied'}
Se o arquivo não for encontrado ou o método não for de arquivo, o servidor retornará um erro: 404 {'error': 'file-not-found'}
Solicitações do Rox.Chat para o servidor do bot
As solicitações do Rox.Chat para a URL do bot, que é configurada nas configurações do Painel de Controle ao criar um bot.
A autorização não é necessária para essas solicitações.
Para melhorar a segurança, uma chave secreta pode ser adicionada à URL do bot. Ela é inserida na URL da seguinte forma: endereço/chave_secreta em vez de endereço, onde chave_secreta é uma sequência de caracteres.
Caso a solicitação do Rox.Chat falhe ao passar para o bot, o servidor do Rox.Chat tentará enviá-la mais quatro vezes após o fracasso: primeiro após 2 segundos após a tentativa falhada, depois após 4, 8 e 16 segundos (contados a partir da última tentativa falhada).
As solicitações HTTP do serviço Rox.Chat para o servidor contêm os seguintes parâmetros no cabeçalho:
-
X-Bot-API-Dialect
- o "dialeto" da API (neste caso, Rox.Chat Standard); -
X-Bot-API-Version
- versão da API (neste caso, 2.0); -
X-RoxChat-Version
- a versão completa do Rox.Chat (por exemplo: 3.0.5).
Tratamento de Erro
Em caso de sucesso, o bot deve fornecer a seguinte resposta:
200 OK
O corpo da resposta do servidor do bot a uma solicitação do Rox.Chat deve conter:
{
"result": "ok"
}
Se uma resposta diferente for recebida, o chat será movido para a fila geral.
### Tratamento de Erro
Em caso de sucesso, o bot deve fornecer a seguinte resposta:
200 OK
O corpo da resposta do servidor do bot a uma solicitação do Rox.Chat deve conter:
{
"result": "ok"
}
Se uma resposta diferente for recebida, o chat será movido para a fila geral.
Atribuir chat a um bot
Tipo de solicitação: POST
Tipo de conteúdo: application/json
Parâmetros de string de consulta: não necessários
Chamado ao criar um chat ou ao transferir um chat para um robô.
Exemplo de corpo de solicitação ao atribuir um chat a um bot:
{
"event": "new_chat",
"chat": {
"id": 452
},
"visitor": {
"id": "03e1c040d8214bfa8ccfbb053186a24a",
"fields": {
"email": "support@rox.chat",
"id": "asdf123",
"icq": "123123123",
"login": "someelogin",
"name": "asdf123",
"phone": "+7 (812) 385-53-37",
"profile_url": "https://t.me/roxchat",
"site": "https://rox.chat"
}
},
"messages": [
Message,
Message,
...
]
}
Descrição dos campos do objeto na resposta à solicitação:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
event |
String |
new_chat |
Tipo de evento. | Yes |
chat.id |
Integer |
247 |
ID do chat. | Yes |
visitor.id |
String |
03e1c040d8214bfa8ccfbb053186a24a |
O identificador pseudo-único do visitante que Rox.Chat sempre atribui a ele. | Yes |
visitor.fields |
JSON |
{"name": "John", "phone": "+18433754873", ...} |
Informações conhecidas sobre o visitante na forma de pares chave-valor. O identificador do visitante dentro de visitor.fields é fornecido ao Rox.Chat pelo frontend, pode ser de qualquer tipo e não precisa ser único. Se não houver visitor.fields, não há identificador. Se visitor.fields estiver presente, o identificador é um campo obrigatório, todos os outros campos não são. | No |
messages |
Array of Messages |
Listed below in the description of the new_message event. |
Mensagens enviadas pelo visitante que se acumularam até o momento em que o chat foi atribuído ao bot (mensagens de canais, do widget, se a solicitação de detalhes de contato antes de iniciar o chat estiver ativada). | No |
Nova mensagem
Tipo de requisição: POST
Tipo de conteúdo: application/json
Parâmetros de string de consulta: não necessários
Exemplo de corpo de requisição ao enviar uma mensagem para um bot:
{
"event": "nova_mensagem",
"mensagem": Mensagem,
"chat_id": 245
}
Descrição dos campos do objeto na resposta à requisição:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
event |
String |
new_message |
Tipo de evento. | Yes |
message |
Message |
Listed below | Objeto Message |
Yes |
chat_id |
Integer |
247 |
Chat ID. | Yes |
O objeto Message
pode conter diferentes tipos de dados e campos.
Mensagem de texto
Um exemplo de conteúdo do objeto Message
em uma mensagem de texto:
{
"id": "feb8e0f7fe08486db2494c2d5058fd33",
"kind": "visitor",
"text": "Olá"
}
Descrição dos campos do objeto Message
:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
id |
String |
feb8e0f7fe08486db2494c2d5058fd3 |
O ID da mensagem do lado do Rox.Chat. | Yes |
kind |
String |
operator |
Tipo de mensagem. Todos os tipos de mensagem podem ser encontrados [aqui].(../../dev/basic-objects/message-types.md) | Yes |
text |
String |
Posso ajudar você? |
Texto. | Yes |
Mensagem de Arquivo
O bot deve retornar uma resposta {"result": "ok"}
para mensagens onde media_type = json
.
Como o arquivo está sendo carregado, não apenas uma, mas várias solicitações serão enviadas, cujo número depende do tamanho do arquivo: quanto maior, mais tempo leva o upload. Enquanto o arquivo está sendo carregado (com o valor de upload no campo state), cada nova solicitação conterá um valor atualizado da porcentagem de upload do arquivo (campo progress). A última solicitação ao enviar o arquivo terá o valor pronto no campo state, o que significa que o arquivo foi enviado.
Exemplos do conteúdo do objeto Message
em solicitações com uma mensagem de arquivo:
{
"id": "c3e19d57f64e43c3afabdef2ef4e4054",
{
"kind": "file_visitor",
"data": {
"id": "81f0488",
"state": "upload",
"progress": 50,
"size": 560,
"url": "https://yoursite.com/content/file.txt"
}
}
}
{
"id": "c3e19d57f64e43c3afabdef2ef4e4054",
{
"kind": "file_visitor",
"data": {
"id": "81f0488",
"state": "upload",
"progress": 89,
"size": 560,
"url": "https://yoursite.com/content/file.txt"
}
}
}
{
"id": "c3e19d57f64e43c3afabdef2ef4e4054",
{
"kind": "file_visitor",
"data": {
"id": "81f0488",
"state": "ready",
"name": "file.txt",
"content_type": "text",
"size": 560,
"url": "https://yoursite.com/content/file.txt"
}
}
}
Descrição dos campos do objeto Message
:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
id |
String |
feb8e0f7fe08486db2494c2d5058fd3 |
O ID da mensagem no lado do Rox.Chat | Yes |
kind |
String |
file_visitor |
O tipo de mensagem, neste caso, o arquivo enviado pelo visitante (file_visitor ). Todos os tipos de mensagem podem ser encontrados [aqui].(../../dev/basic-objects/message-types.md) |
Yes |
data.id |
String |
81f0488 |
O identificador do arquivo. | Yes |
data.state |
String |
upload |
O estado em que o arquivo enviado está (upload - se estiver em processo de upload, ready - se o upload estiver concluído). | Yes |
data.name |
String |
somefile.pdf |
O nome do arquivo. Se data.state = upload, pode ser omitido. | No |
data.media_type |
String |
application/pdf |
Tipo de Mídia da Internet. Pode não estar presente quando data.state = upload. | No |
data.size |
Integer |
12350 |
Tamanho do arquivo em bytes.. | No |
data.progress |
Integer |
95 |
Grau de upload do arquivo quando data.state = upload. Especificado como uma porcentagem. | No |
data.url |
String |
https://yoursite.com/content/document.pdf |
URL do arquivo enviado (quando data.state = ready). | Yes |
Clique no botão
A solicitação contém o botão selecionado pelo visitante.
Um exemplo do conteúdo de um objeto Message
em uma mensagem de botão clicado:
{
"id": "ddaa8401e1ef4910abb3657f3ea09683",
"kind": "keyboard_response",
"data": {
"button": {
"id": "937bec4863154a2fb0889ff1320d1e2f",
"text": "Fazer uma pergunta ao agente"
},
"request": {
"messageId": "fede9187f3da41c9849976a01a40d899"
}
}
}
Descrição do campo do objeto Message
:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
id |
String |
feb8e0f7fe08486db2494c2d5058fd3 |
O ID da mensagem no lado do Rox.Chat. | Sim |
kind |
String |
keyboard_response |
O tipo de mensagem. Todos os tipos de mensagem podem ser encontrados aqui. | Sim |
data.button |
Button |
Button object |
O botão pressionado pelo visitante. Em alguns canais de comunicação (por exemplo, WhatsApp, Viber), os botões são exibidos como uma lista numerada (texto). Nesse formato, o visitante seleciona um botão enviando uma mensagem com o número do botão. Em outras palavras, o botão é considerado selecionado apenas se o botão estiver na lista e o visitante enviar o número do botão (por exemplo, "2" ). Se o visitante enviar um número de botão inexistente (por exemplo, se a lista de botões de 1 a 8 enviar o número 9 ) ou enviar o botão em qualquer outra forma (texto do botão, número junto com texto, etc.), o botão não será selecionado e a solicitação não será enviada. |
Sim |
data.request.messageId |
String |
fede9187f3da41c9849976a01a40d899 |
Identificador da mensagem cujo botão foi pressionado. | Sim |
Atualizar mensagem
Tipo de requisição: POST
Tipo de conteúdo: application/json
Parâmetros da string de consulta: não necessários
Exemplo de corpo da requisição ao atualizar uma mensagem:
{
"event": "message_updated",
"message": Message,
"chat_id": 8754
}
Descrição dos campos do objeto na resposta da requisição:
Field | Type | Example | Description | Mandatory |
---|---|---|---|---|
event |
String |
message_updated |
Tipo de evento. | Yes |
message |
Message |
Message object |
O conteúdo do objeto Message após a atualização. | Yes |
chat_id |
Integer |
2547 |
ID do chat. | Yes |