Novo
🔥 Seja o primeiro a experimentar a API de chamadas do WhatsApp Business (Beta aberto)!
arrow-icon
All Collections >
Canais. >
Canal Personalizado >
Início Rápido do Canal Personalizado

Início Rápido do Canal Personalizado

Avatar
JQ Lee
· 30 Jun 2025
5 minutos de leitura

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.

Ligar um canal personalizado

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:

  1. Número de telefone: utilize isto se o fornecedor de serviços de mensagens reconhecer contactos com base no número de telefone.

    1. Formato de amostra: +60177872890

  2. ID personalizado: utilize isto se o fornecedor de serviços de mensagens reconhecer os contactos com base num ID gerado personalizado.

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

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

  1. ID do canal:gfd8g7fd89dgfd

  2. API Token:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

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

Passar mensagens para respond.io

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"

Gerir mensagens de saída do respond.io

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

Certifique-se de que aplica o códigoMensagem de saídana rota/messagedo 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.

Tipo de mensagens

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.

Códigos de erro

Erro (Estado HTTP → 4xx)

Configuração de canal

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.

Perguntas frequentes e resolução de problemas

Posso ligar chats de outras plataformas utilizando um Canal Personalizado?

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

  1. No respond.io, introduza o URL do webhook de destino da outra plataforma no campo URL do webhook para a mensagem recebida .

  2. Na outra plataforma, configure um URL de webhook apontando para respond.io, permitindo que os Contactos lhe enviem mensagens de volta.

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

Perguntas frequentes sobre webhooks de canais personalizados

Porque é que o webhook devolve um estado 200 mesmo que a mensagem não seja entregue ao respond.io?

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.

Compartilhar este artigo
Telegram
Facebook
Linkedin
Twitter

Artigos relacionados 👩‍💻

Visão geral do canal personalizado
Obtenha uma visão geral do Canal Personalizado e das suas funcionalidades.

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