Esta integração permite que a sua equipa converse com os seus clientes através de qualquer canal de mensagens através de uma implementação personalizada.
Passo 1: Vá para Definições > Canais
Passo 2: Clique em Adicionar canal > Canal personalizado > Ligar
Passo 3: Introduza o URL do Webhook de destino para onde as mensagens de saída serão enviadas.
Passo 4: Selecione o tipo de ID para o canal > clique em Seguinte
Os tipos de ID são utilizados para a identificação do utilizador e para a comunicação com o seu servidor de integração personalizado.
Existem dois tipos de IDs disponíveis:
Número de telefone: utilize isto se o fornecedor de serviços de mensagens reconhecer contactos com base no número de telefone.
Formato de amostra: +60177872890
ID personalizado: utilize isto se o fornecedor de serviços de mensagens reconhecer os contactos com base num ID gerado personalizado.
O comprimento máximo dos caracteres é de 50.
AZ
,az
,0-9
,_
,=
,+
,/
e@
são permitidos.
Passo 5: A seguinte caixa de diálogo fornecerá oID do canal,Token da APIeURL do Webhookpor exemplo
ID do canal:gfd8g7fd89dgfd
API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
URL do webhook:https://app.respond.io/custom/channel/webhook/
A utilização de um tipo de ID de número de telefone permite iniciar uma conversa e enviar a primeira mensagem para um contacto.
URL do Webhooké utilizado para publicar asMensagens,Ecos de MensagenseRecibos de Mensagensna plataforma respond.io.
O código fornecido irá desencadear o webhook no respond.io, criando um contacto, se necessário, e guardando a mensagem nesse contacto.
Exemplo de mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controlo de cache: sem cache' \\
-H 'tipo de conteúdo: app/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"tipo": "mensagem",
"mId": "xcvzzxcxczxczxc",
"data/hora": 2132131321000,
"mensagem": {
"tipo": "texto",
"texto": "Olá Mundo"
}
}
\],
"contacto": {
"primeiroNome": "John",
"apelido": "Doe",
"foto de perfil": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",
"Código do país": "MEU",
"e-mail": "john@respond.io",
"telefone": "+60177872890",
"idioma": "en"
}
}'
Amostra para ecos de mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controlo de cache: sem cache' \\
-H 'tipo de conteúdo: app/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"tipo": "mensagem\_echo",
"mId": "xcvzzxcxczxczxc",
"data/hora": 2132131321000,
"mensagem": {
"tipo": "texto",
"texto": "Olá, mundo"
}
}
\],
"contacto": {
"primeiroNome": "John",
"apelido": "Doe",
"foto de perfil": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",
"Código do país": "MEU",
"e-mail": "john@respond.io",
"telefone": "+60177872890",
"idioma": "em"
}
}'
Exemplo de recibos de mensagens
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controlo de cache: sem cache' \\
-H 'tipo de conteúdo: app/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": \[
{
"tipo": "mensagem\_status",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"estado": {
"valor": "enviado|entregue|lido|falhou",
"mensagem": "Erro: Falha no envio devido a token inválido"
}
\]
}'
Campo | Descrição | Validação |
---|---|---|
ID do canal | ID de canal exclusivo | Obrigatório. Campo único. É gerado pelo respond.io. |
ID de contacto | ID de contacto exclusivo | Obrigatório. ID de contacto exclusivo do respond.io. Máximo de 50 caracteres. |
eventos.tipo | Tipo de evento | Obrigatório. Tipos disponíveis: message, message_echo e message_status. |
eventos.mld | ID da mensagem | Obrigatório. ID de mensagem exclusivo. Máximo de 50 caracteres. |
eventos.carimbo de data/hora | Tempo de época UNIX (milissegundos) | Obrigatório. Hora do evento que despoletou o retorno de chamada. |
eventos.mensagem.tipo | Tipo de mensagem | Obrigatório. Tipos de mensagens disponíveis: texto, anexo, localização e resposta rápida. Consulte a secção Tipo de mensagem para outros exemplos de tipos de mensagem. |
eventos.mensagem.texto | Texto da mensagem | Obrigatório. Comprimento máximo de 7.000 caracteres. |
eventos.status.valor | Texto | Obrigatório se event.type for message_status. Valores de estado disponíveis: enviado, entregue, lido e com falha. |
eventos.status.mensagem | Texto | Obrigatório se o events.status.value falhar. |
contacto.primeiroNome | Nome próprio | Opcional. Máximo de 50 caracteres. |
contacto.apelido | Último nome | Opcional. Máximo de 50 caracteres. |
contacto.perfilPic | URL da fotografia de perfil | Opcional. O tamanho do avatar não deve ser superior a 100 kb. Recomendado 720x720. |
contacto.localidade | Código de localidade | Opcional. Consulte aqui a lista de valores. |
contacto.códigodopaís | Código do país | Opcional. Código de país de 2 letras - Código ISO ALPHA-2. |
contacto.fuso horário | Fuso horário | Opcional. (min.: -24) (máx.: 24). |
contacto.email | Endereço de e-mail | Opcional. Máximo de 50 caracteres. |
contacto.telefone | Número de telefone | Opcional. Máximo de 18 caracteres. |
contacto.idioma | Idioma | Opcional. ISO 639-1. |
Resposta - Sucesso (estado HTTP → 200)
"OK"
respond.io irá chamar o endpoint<API Base URL>/message
Certifique-se de que aplica o códigoMensagem de saídana rota
/message
do seu servidor web.
Eis o exemplo cURL de respond.io a chamar o endpoint:
curl -X POST \\
<API Base URL>/message \\
-H 'autorização: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'controlo de cache: sem cache' \\
-H 'tipo de conteúdo: app/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"mensagem": {
"tipo": "texto",
"texto": "Olá Mundo"
}
}'
Resposta - Sucesso (estado HTTP → 200)
{
"mId": "1640141607842"
}
A autenticação necessita de ocorrer no ponto final antes de enviar a mensagem para o fornecedor de serviços de mensagens.
Aqui está um exemplo de uso de um middleware express para esse propósito:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <<API Token>>
const bearerToken = req.headers.authorization;
if (!bearerToken)
return res.send(401)
const token = bearerToken.substring(7, bearerToken.length);
if (apiToken !== token) {
return res.send(401)
}
next();
};
módulo. exportações = {
validateToken
};
Incluímos um exemplo de um Canal Personalizado que você pode testar no seu servidor. Vê o nosso projeto no GitHub aqui.
Exemplo de texto
{
"tipo": "texto",
"texto": "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. |
Amostra para arquivo de média
{
"tipo": "anexo",
"anexo": {
"tipo": "imagem|vídeo|áudio|arquivo",
"url": "https://abc/japan.png",
"mimeType": "imagem/png",
"fileName":"company logo.png",
"descrição": "mais recente logótipo da empresa"
}
}
Campo | Descrição | Validação |
---|---|---|
tipo | Tipo de mensagem | Obrigatório. apego. |
anexo.tipo | Tipo de anexo | Obrigatório. Tipos de anexo disponíveis: imagem, vídeo, áudio e ficheiro. |
anexo.url | URL | Obrigatório. Máximo de 2.000 caracteres. Certifique-se de que é um link público para que os utilizadores ou contactos possam ver o conteúdo. |
anexo.mimeType | Tipo MIME do anexo | Opcional |
anexo.nomedoficheiro | Nome do ficheiro | Opcional. O nome do ficheiro deve incluir uma extensão. Máximo de 256 caracteres (incluindo extensão de ficheiro). Enviar um ficheiro sem extensão ou com a extensão errada pode fazer com que o contacto ou utilizador não consiga abrir o ficheiro. |
anexo. descrição | Descrição do ficheiro | Opcional. Máximo de 256 caracteres. Aplicável apenas para attachment.type = image. |
Certifique-se de que a URL do anexo não seja baixada forçadamente pelo navegador. O cabeçalho de resposta HTTP's Content-Disposition
deve ter o valor por defeito, que é inline
.
Amostra para localização
{
"tipo": "localização",
"latitude": 0,123456,
"longitude": -0.1234,
"endereço": "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. |
longitude | Coordenadas | Obrigatório. Longitude (±180°) dentro de intervalos válidos. |
morada | Localização Endereço | Opcional. Máximo de 256 caracteres. |
Exemplo de resposta rápida
{
"tipo": "resposta rápida",
"título": "Selecione o seu idioma preferido",
"respostas": \[
"Malaio",
"Inglês"
\]
}
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. |
respostas | Texto de resposta | Obrigatório. Máximo de 10 respostas com um máximo de 256 caracteres para cada resposta. |
Erro (Estado HTTP → 4xx)
Passo 1: Clique em Definições > Canais
Passo 2: Localizar Canal Personalizado > clicar em Gerir
Passo 3: Na página Configuração de canal personalizado verá as seguintes definições:
Ícone do canal - Carregue uma imagem que sirva de ícone para o seu canal personalizado.
Nome do canal - O nome do canal pode ser alterado e é utilizado internamente para identificar o canal.
URL do webhook para mensagens de saída — O URL do webhook para mensagens de saída para este canal.
URL do webhook para mensagens recebidas — O URL do webhook para mensagens recebidas neste canal.
Tipo de ID — São utilizados para a identificação do utilizador e para comunicar com o seu servidor de integração personalizado.
ID do canal — ID de canal exclusivo para identificar o seu canal personalizado.
API Token — Um identificador único utilizado para autenticar um utilizador para aceder a uma API.
Passo 4: Clique em Guardar alterações para atualizar a configuração do canal personalizado.
Sim, pode. Aqui estão três passos a seguir:
No respond.io, introduza o URL do webhook de destino da outra plataforma no campo URL do webhook para a mensagem recebida .
Na outra plataforma, configure um URL de webhook apontando para respond.io, permitindo que os Contactos lhe enviem mensagens de volta.
Irá'necessitar de um Servidor de Integração Personalizado para interpretar APIs do respond.io e da outra plataforma, permitindo a troca de mensagens entre elas.
Certifique-se de que confirma com a outra plataforma se os dois primeiros passos são viáveis.
Ao ligar um Canal Personalizado, as mensagens enviadas para o respond.io através de webhooks devolverão sempre um código de estado 200 imediatamente, independentemente de a mensagem ter sido passada com sucesso para o respond.io. Isto deve-se à natureza dos webhooks, que são concebidos para devolver uma resposta imediata sem verificar o sucesso da entrega da mensagem.