respond-io
New
🚀 TikTok Business Messaging está no ar! Transforme as conversas em conversões perfeitamente. Saiba mais.arrow-icon

Casa >

Canais. >
Canal Personalizado >
Canal de início rápido personalizado

Canal de início rápido personalizado

Avatar
JQ Lee
· 05 Nov 2024
5 minutos de leitura

Esta integração permite que sua equipe converse com seus clientes sobre qualquer canal de mensagens através de uma implementação personalizada.

Conectando um canal personalizado

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:

  1. Telefone: Use isto se o provedor de serviços de mensagens reconhece Contatos com base no Número de Telefone.

    1. Formato de amostra: +60177872890

  2. ID personalizado: Use este se o provedor de serviços de mensagens reconhece Contatos com base em um ID personalizado.

    1. O comprimento máximo de caracteres é 50.

    2. 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,

  1. ID do Canal:gfd8g7fd89dgfd

  2. API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

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

Passar Mensagens para Responder

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.

Manipular as mensagens de saída da respond.io

respond.io chamará o endpoint<API Base URL>/message

Certifique-se de aplicarMensagem de Saídana rota/messagede 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.

Tipo de Mensagens

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.

Códigos de erro

Error (HTTP Status → 4xx)

Configuração do Canal

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 .

FAQ e Solução de Problemas

Posso conectar chats de outras plataformas usando um Canal Personalizado?

Sim, você pode. Aqui estão três passos a seguir:

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

  2. Na outra plataforma, configure uma URL de webhook apontando para respond.io, permitindo que os Contatos enviem mensagens de volta para você.

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

FAQ para Webhooks de Canal Personalizado

Por que o webhook retorna um status 200 mesmo que a mensagem não seja enviada para responder.io?

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.

Compartilhar este artigo
Telegram
Facebook
Linkedin
Twitter

Artigos relacionados 👩‍💻

Visão Geral Personalizada
Obter uma visão geral do Canal Personalizado e suas capacidades.

Não consegue encontrar o que você está procurando? 🔎