Esta integração permite que sua equipe converse com seus clientes sobre qualquer canal de mensagens através de uma implementação personalizada.
Passo 1: Vá para Configurações > Canais
Passo 2: Clique Adicionar Canal > Canal Personalizado > Conectar
Passo 3: Digite o URL de destino Webhook onde as mensagens de saída serão enviadas.
Passo 4: Selecione o tipo de ID para o canal > clique Próximo
Os tipos de identificação são usados para identificação do usuário e usados para se comunicar com seu servidor de integração personalizado.
Existem dois tipos de IDs disponíveis:
Telefone: Use isto se o provedor de serviços de mensagens reconhece Contatos com base no Número de Telefone.
Formato de amostra: +60177872890
ID personalizado: Use este se o provedor de serviços de mensagens reconhece Contatos com base em um ID personalizado.
O comprimento máximo de caracteres é 50.
A-Z
,a-z
,0-9
,_
,=
,+
,/
e@
são permitidos.
Passo 5: A seguinte caixa de diálogo fornecerá aID do canal,API TokeneURL do Webhookpor exemplo,
ID do Canal:gfd8g7fd89dgfd
API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
URL Webhook:https://app.respond.io/custom/channel/webhook/
Usar um tipo de ID de Número de Telefone permite iniciar uma conversa e enviar a primeira mensagem para um Contato.
URL do Webhooké usada para postar aMensagens,Ecos de MensagenseRecibos de Mensagenspara a resposta. a plataforma.
O código fornecido acionará o webhook no respond.io, criando um Contato, se necessário, e salvando a mensagem sob esse Contato.
Exemplo para mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controle de cache: sem cache' \\
-H 'tipo de conteúdo: aplicativo/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"tipo": "mensagem",
"mId": "xcvzzxcxczxczxc",
"carimbo de data/hora": 2132131321000,
"mensagem": {
"tipo": "texto",
"texto": "Olá, mundo"
}
}
\],
"contato": {
"primeiroNome": "João",
"últimoNome": "Silva",
"profilePic": "",
"countryCode": "MY",
"email": "[email protected]",
"phone": "+60177872890",
"language": "en"
}
}'
Exemplo para Ecos de Mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controle de cache: sem cache' \\
-H 'tipo de conteúdo: aplicativo/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"tipo": "mensagem\_eco",
"mId": "xcvzzxcxczxczxc",
"carimbo de data/hora": 2132131321000,
"mensagem": {
"tipo": "texto",
"texto": "Olá, mundo"
}
}
\],
"contato": {
"primeiroNome": "João",
"últimoNome": "Silva",
"profilePic": "",
"countryCode": "MY",
"email": "[email protected]",
"phone": "+60177872890",
"language": "en"
}
}'
Exemplo para recibos de mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controle de cache: sem cache' \\
-H 'tipo de conteúdo: aplicativo/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"type": "message\_status",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"status": {
"value": "enviado|entregue|lido|falhou",
"message": "Erro: Falha no envio devido a token inválido"
}
\]
}'
Campo | Descrição | Validação |
---|---|---|
canalId | ID única do canal | Obrigatório. Campo único. É gerado por respond.io. |
contactId | ID de contato exclusivo | Obrigatório. ID de contato respond.io único. Máximo 50 caracteres. |
eventos.tipo | Tipo de Evento | Obrigatório. Tipo disponível: mensagem, message_echo e message_status. |
eventos.mld | ID da mensagem | Obrigatório. ID única de mensagem. Máximo 50 caracteres. |
events.timestamp | Tempo de Epoch UNIX (milissegundos) | Obrigatório. Tempo do evento que acionou a chamada de volta. |
events.message.type | Tipo de mensagem | Obrigatório. Tipos de mensagem disponíveis: texto, anexo, local e resposta rápida. Consulte a seção Tipo de Mensagem para outros tipos de mensagens. |
events.message.text | Texto da Mensagem | Obrigatório. Comprimento máximo de 7.000 caracteres. |
events.status.valor | Texto | Necessário se event.type é message_status. Valores de status disponíveis: enviado, entregue, lido e falhou. |
events.status.mensagem | Texto | Necessário se events.status.value falhar. |
NomeDocontato | Primeiro nome | Opcional. Máximo 50 caracteres. |
contact.Sobrenome | Último Nome | Opcional. Máximo 50 caracteres. |
contact.profilePic | URL do Perfil Pic | Opcional. O tamanho do avatar não deve exceder 100 kb. Recomendado 720x720. |
contato.localidade | Código local | Opcional. Consulte aqui para a lista de valores. |
contact.countryCode | Código do país | Opcional. 2 letras no código do país - Código ISO ALPHA-2. |
contato.fuso horário | Fuso Horário | Opcional. (min: -24) (máx: 24). |
Contato.email | Endereço de e-mail | Opcional. Máximo 50 caracteres. |
contato.telefone | Número de telefone | Opcional. Máximo 18 caracteres. |
idioma_contato | Idioma | Opcional. ISO 639-1. |
Resposta - Sucesso (status HTTP → 200)
OK.
respond.io chamará o endpoint<API Base URL>/message
Certifique-se de aplicarMensagem de Saídana rota
/message
de seu servidor web.
Aqui está o exemplo cURL de respond.io chamando o endpoint:
curl -X POST \\
/message \\
-H 'autorização: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
'y"channelId": "gfd8g7fd89dgfd",
├"contactId": "+60177872890",
ë"message": {
├"type": "text",
^\\"text": "Olá Mundo"
¡}
}'
Resposta - Sucesso (status HTTP → 200)
{
"mId": "1640141607842"
}
A autenticação precisa acontecer no endpoint antes de enviar a mensagem para o Provedor de Serviços de Mensagens.
Aqui'um exemplo de uso de um middleware expresso para este propósito:
const {validationResult} = require('express-validator');
const validateToken = (req, next) => {
const apiToken = <>
const bearerToken = req. eaders.autorização;
se (!bearerToken)
retorna. end(401)
const token = bearerToken.substring(7, bearerToken. comprimento);
if (apiToken !== token) {
retorna. end(401)
}
next();
};
module.exports = {
validateToken
};
'incluímos um exemplo de canal personalizado que você pode testar no seu servidor. Confira nosso projeto no GitHub aqui.
Exemplo para o texto
{
"type": "text",
"text": "Bem-vindo ao respond.io",
}
Campo | Descrição | Validação |
---|---|---|
Tipo | Tipo de mensagem | Obrigatório. Texto |
Texto | Texto da Mensagem | Obrigatório. Comprimento máximo de 7.000 caracteres. |
Exemplo para o arquivo de mídia
{
"type": "attachment",
"attachment": {
"type": "image─ video├audio─file",
"url": "https://abc/japan. ng",
"mimeType": "image/png",
"fileName":"company logo. ng",
"description": "último logotipo da empresa"
}
}
Campo | Descrição | Validação |
---|---|---|
Tipo | Tipo de mensagem | Obrigatório. anexo. |
tipo.anexo | Tipo de anexo | Obrigatório. Tipos de anexos disponíveis: imagem, vídeo, áudio e arquivo. |
Anexo.url | URL: | Obrigatório. Máximo de 2.000 caracteres. Certifique-se de que é um link público para que usuários ou contatos possam ver o conteúdo. |
Anexo.mimeType | Tipo de MIME do Anexo | Opcional |
NomeDoArquivo.anexo | Nome do arquivo | Opcional. O nome do arquivo deve incluir uma extensão. Máximo de 256 caracteres (incluindo a extensão do arquivo). Enviar um arquivo sem uma extensão ou com uma extensão errada pode fazer com que o contato ou o usuário não possam abrir o arquivo. |
descrição.anexo | Descrição do arquivo | Opcional. Máximo de 256 caracteres. Apenas aplicável para anexo.type = imagem. |
Certifique-se de que a URL de anexo está n't force o download pelo navegador. A resposta HTTP's Content-Disposition
header deve ter o valor padrão, que é inline
.
Exemplo de localização
{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}
Campo | Descrição | Validação |
---|---|---|
Tipo | Tipo de mensagem | Obrigatório. localização |
latitude | Coordenadas | Obrigatório. Latitude (➲ 90°) dentro de intervalos válidos. |
longtitude | Coordenadas | Obrigatório. Longitude: 180°) dentro de intervalos válidos. |
Endereço | Endereço do local | Opcional. Máximo de 256 caracteres. |
Exemplo para resposta rápida
{
"type": "quick\_reply",
"title": "Selecione seu idioma preferido",
"respostas": \[
"Malaia",
"English"
\]
}
Campo | Descrição | Validação |
---|---|---|
Tipo | Tipo de mensagem | Obrigatório. resposta_rápida. |
Título | Título da Resposta Rápida | Obrigatório. Máximo de 256 caracteres. |
Responder | Texto de Resposta | Obrigatório. Máximo de 10 respostas com máx. 256 caracteres para cada resposta. |
Error (HTTP Status → 4xx)
Passo 1: Clique em Configurações > Canais
Passo 2: Localize o canal personalizado > clique Gerenciar
Etapa 3: Na página Configuração de canal personalizado você verá as seguintes configurações:
Ícone do canal - Carregue uma imagem que sirva como ícone para seu canal personalizado.
Nome do canal - O nome do canal pode ser alterado e é usado internamente para identificar o canal.
URL de Webhook para a mensagem de saída - A URL do webhook para as mensagens enviadas para este Canal.
URL do webhook para mensagens recebidas — A URL do webhook para mensagens recebidas neste canal.
ID Type — Estes são usados para identificação de usuário e são usados para se comunicar com seu servidor de integração personalizado.
ID de Canal - ID de Canal Único para identificar seu Canal Customizado.
API Token — Um identificador exclusivo usado para autenticar um usuário para acessar uma API.
Passo 4: Clique em Salvar Alterações para atualizar a configuração do Canal Personalizado .
Sim, você pode. Aqui estão três passos a seguir:
Em respond.io, insira a URL do webhook de destino da outra plataforma para a URL do Webhook para o campo de entrada de mensagem.
Na outra plataforma, configure uma URL de webhook apontando para respond.io, permitindo que os Contatos enviem mensagens de volta para você.
Você'exigirá um Servidor de Integração Personalizada para interpretar APIs de ambos respond.io e da outra plataforma, permitindo o intercâmbio de mensagens entre eles.
Certifique-se de confirmar com a outra plataforma que as duas primeiras etapas são viáveis.
Ao conectar um canal personalizado, mensagens enviadas para responder. através de webhooks sempre retornarão um código de status 200 imediatamente independente se a mensagem foi passada para respond.io. Isso é devido à natureza dos webhooks, que são projetados para retornar uma resposta imediata sem verificar o sucesso da mensagem enviada.
Artigos relacionados 👩💻