Ir para o conteúdo

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:

  1. Crie uma nova conta de agente usando o Painel de Controle.

  2. Vá para as configurações da sua conta e selecione a seção Bots.

  3. Na janela aberta, clique no botão Criar um Novo Bot.

  4. 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.

  5. No campo Link da API External, insira o endereço URL do servidor externo para o bot.

  6. Salve as alterações.

  7. 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
Esta solicitação transferirá o chat para um agente.

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}
Exemplo de token de autorização:

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"
}
Se uma solicitação falha na validação, ela retorna um código HTTP 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"
}
Outros erros são acompanhados de um código HTTP 200 no seguinte formato:

{
    "error": "error code",
    "desc": "error description"
}
Descrição dos campos de erro:

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
Exemplo de Corpo da Solicitação para enviar uma message do bot:

{
    "message": Message,
    "chat_id": 3058
}
Descrição dos campos no objeto de resposta ao enviar uma do bot:

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"
    }
}
Descrição dos campos do objeto de Mensagem para uma mensagem de arquivo:

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