1. All Collections >
  2. Canales >
  3. Canal personalizado >
  4. Inicio rápido de canal personalizado

Inicio rápido de canal personalizado

Avatar
JQ Lee
5 min de lectura

Esta integración permite a su equipo chatear con sus clientes a través de cualquier canal de mensajería mediante una implementación personalizada.

Conexión de un canal personalizado

Paso 1: Vaya a Configuración > Canales

Paso 2: Haz clic en Agregar canal > Canal personalizado > Conectar

Paso 3: Ingrese la URL del Webhook de destino donde se enviarán los mensajes salientes.

Paso 4: Seleccione el tipo de ID para el canal > haga clic en Siguiente

Los tipos de identificación se utilizan para la identificación del usuario y se utilizan para comunicarse con su servidor de integración personalizado.

Hay dos tipos de identificaciones disponibles:

  1. Número de teléfono: use esto si el proveedor de servicios de mensajería reconoce los contactos en función de su número de teléfono.

    1. Formato de muestra: +60177872890

  2. ID personalizado: use esto si el proveedor de servicios de mensajería reconoce los contactos según una identificación generada personalizada.

    1. La longitud máxima de caracteres es 50.

    2. AZ,az,0-9,_,=,+,/y@están permitidos.

Paso 5: El siguiente cuadro de diálogo proporcionará elID del canal, elToken de APIy laURL del webhook, por ejemplo

  1. ID del canal:gfd8g7fd89dgfd

  2. Token API:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

  3. URL del webhook:https://app.respond.io/custom/channel/webhook/

    El uso de un tipo de ID de número de teléfono le permite iniciar una conversación y enviar el primer mensaje a un contacto.

Pasar mensajes a respond.io

La URL del webhook se utiliza para publicar los Mensajes, los Ecos de mensajería y los Recibos de mensajería en la plataforma respond.io.

El código proporcionado activará el webhook en respond.io, creando un contacto si es necesario y guardando el mensaje en ese contacto.

Muestra para mensajes

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorización: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'control de caché: sin caché' \\  
  -H 'tipo de contenido: aplicación/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "eventos": \[  
    {  
      "tipo": "mensaje",  
      "mId": "xcvzzxcxczxczxc",  
      "marca de tiempo": 2132131321000,  
      "mensaje": {  
        "tipo": "texto",  
        "texto": "Hola mundo"  
      }  
    }  
  \],  
  "contacto": {  
    "nombre": "John",  
    "apellido": "Doe",  
    "foto de perfil": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",  
    ,    "código de país": "MI",  
    ,    "correo electrónico": "john@respond.io",  
    ,    "teléfono": "+60177872890",  
    ,    "idioma": "es"  
  }  
}'

Muestra para ecos de mensajería

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorización: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'control de caché: sin caché' \\  
  -H 'tipo de contenido: aplicación/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "events": \[  
    {  
      "type": "mensaje_echo",  
      "mId": "xcvzzxcxczxczxc",  
      "marca de tiempo": 2132131321000,  
      "mensaje": {  
        "tipo": "texto",  
        "texto": "Hola mundo"  
      }  
    }  
  \],  
  "contacto": {  
    "nombre": "John",  
    "apellido": "Doe",  
    "foto de perfil": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",  
    "código de país": "MY",  
    "correo electrónico": "john@respond.io",  
    "teléfono": "+60177872890",  
    "idioma": "en"  
  }  
}'

Ejemplo de recibos de mensajería

curl -X POST \\  
  https://app.respond.io/custom/channel/webhook/ \\  
  -H 'autorización: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'control de caché: sin caché' \\  
  -H 'tipo de contenido: aplicación/json' \\  
  -d '{  
  "channelId": "gfd8g7fd89dgfd",  
  "contactId": "+60177872890",  
  "events": \[  
    {  
      "type": "mensaje_estado",  
      "mId": "xcvzzxcxczxczxc",  
      "timestamp": 2132131321000,  
      "estado": {  
        "valor": "enviado|entregado|leído|fallido",  
        "mensaje": "Error: El envío falló debido a un token no válido"  
      }  
    }  
  \]  
}'

Campo

Descripción

Validación

ID de canal

ID de canal único

Requerido. Campo único. Es generado por respond.io.

ID de contacto

ID de contacto único

Requerido. ID de contacto único de respond.io. Máximo 50 caracteres.

eventos.tipo

Tipo de evento

Requerido. Tipos disponibles: mensaje, mensaje_echo y mensaje_status.

eventos.mld

ID del mensaje

Requerido. ID de mensaje único. Máximo 50 caracteres.

eventos.marca de tiempo

Tiempo de época de UNIX (milisegundos)

Requerido. Hora del evento que activó la devolución de llamada.

eventos.mensaje.tipo

Tipo de mensaje

Requerido. Tipos de mensajes disponibles: texto, adjunto, ubicación y respuesta rápida. Consulte la sección Tipo de mensaje para ver otros ejemplos de tipos de mensajes.

eventos.mensaje.texto

Texto del mensaje

Requerido. Longitud máxima 7.000 caracteres.

eventos.estado.valor

Texto

Obligatorio si event.type es message_status. Valores de estado disponibles: enviado, entregado, leído y fallido.

eventos.estado.mensaje

Texto

Obligatorio si events.status.value falla.

contacto.nombre

Nombre de pila

Opcional. Máximo 50 caracteres.

contacto.apellido

Apellido

Opcional. Máximo 50 caracteres.

contacto.profilePic

URL de la foto de perfil

Opcional. El tamaño del avatar no debe superar los 100 kb. Recomendado 720x720.

contacto.locale

Código local

Opcional. Consulte aquí la lista de valores.

contacto.countryCode

Código del país

Opcional. Código de país de 2 letras - Código ISO ALPHA-2.

contacto.zona horaria

Huso horario

Opcional. (mín: -24) (máx: 24).

contacto.correo electrónico

Dirección de correo electrónico

Opcional. Máximo 50 caracteres.

teléfono de contacto

Número de teléfono

Opcional. Máximo 18 caracteres.

contacto.idioma

Idioma

Opcional. ISO 639-1.

Respuesta - Éxito (estado HTTP → 200)

"OK"

Gestionar mensajes salientes desde respond.io

respond.io llamará al punto final<API Base URL>/mensaje

Asegúrese de aplicar el códigoMensaje salienteen la ruta/messagede su servidor web.

Aquí está el ejemplo cURL de respond.io llamando al punto final:

curl -X POST \\  
  /mensaje \\  
  -H 'autorización: Portador aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\  
  -H 'control de caché: sin caché' \\  
  -H 'tipo de contenido: aplicación/json' \\  
  -d '{  
	"canalId": "gfd8g7fd89dgfd",  
	"contactoId": "+60177872890",  
	"mensaje": {  
		"tipo": "texto",  
		"texto": "Hola mundo"  
	}  
}'

Respuesta - Éxito (estado HTTP → 200)

{  
	"mId": "1640141607842"  
}

La autenticación debe realizarse en el punto final antes de enviar el mensaje al proveedor de servicios de mensajería.

Aquí hay un ejemplo de uso de un middleware express para este 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();
};

module.exports = {
    validateToken
};

Hemos incluido un ejemplo de un Canal Personalizado que puedes probar en tu servidor. Echa un vistazo a nuestro proyecto de GitHub aquí.

Tipo de mensajes

Muestra de texto

{  
  "tipo": "texto",  
  "texto": "Bienvenido a respond.io",  
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. texto

texto

Texto del mensaje

Requerido. Longitud máxima 7.000 caracteres.

Muestra de archivo multimedia

{  
  "tipo": "adjunto",  
  "adjunto": {  
    "tipo": "imagen|video|audio|archivo",  
    "url": "https://abc/japan.png",  
    "mimeType": "image/png",  
    "fileName":"company logo.png",  
    "description": "latest company logo"  
  }  
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. adjunto.

tipo de archivo adjunto

Tipo de archivo adjunto

Requerido. Tipos de archivos adjuntos disponibles: imagen, vídeo, audio y archivo.

adjunto.url

URL

Requerido. Máximo 2.000 caracteres. Asegúrese de que sea un enlace público para que los usuarios o contactos puedan ver el contenido.

archivo adjunto.mimeType

Tipo MIME del archivo adjunto

Opcional

archivo adjunto.nombreDeArchivo

Nombre del archivo

Opcional. El nombre del archivo debe incluir una extensión. Máximo 256 caracteres (incluida la extensión del archivo). Enviar un archivo sin extensión o con la extensión incorrecta podría provocar que el contacto o usuario no pueda abrir el archivo.

archivo adjunto.descripción

Descripción del archivo

Opcional. Máximo 256 caracteres. Sólo aplicable para attachment.type = imagen.

Asegúrate de que la URL del archivo adjunto no se descargue forzosamente por el navegador. El encabezado de respuesta HTTP's Content-Disposition debe tener el valor predeterminado, que es en línea.

Muestra de ubicación

{  
  "tipo": "ubicación",  
  "latitud": 0.123456,  
  "longitud": -0.1234,  
  "dirección": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"  
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. ubicación.

latitud

Coordenadas

Requerido. Latitud (±90°) dentro de rangos válidos.

longitud

Coordenadas

Requerido. Longitud (±180°) dentro de rangos válidos.

DIRECCIÓN

Ubicación Dirección

Opcional. Máximo 256 caracteres.

Muestra para respuesta rápida

{  
  "tipo": "respuesta rápida",  
  "título": "Seleccione su idioma preferido",    
  "respuestas": \[  
    "malayo",  
    "inglés"  
  \]  
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. respuesta rápida.

título

Título de respuesta rápida

Requerido. Máximo 256 caracteres.

respuestas

Texto de respuesta

Requerido. Máximo 10 respuestas con un máximo de 256 caracteres por cada respuesta.

Códigos de error

Error (Estado HTTP → 4xx)

Configuración del canal

Paso 1: Haz clic en Configuración > Canales

Paso 2: Ubica el canal personalizado > haz clic en Administrar

Paso 3: En la página de configuración de canal personalizado verá las siguientes configuraciones:

  • Ícono de canal - Sube una imagen que sirva como ícono para tu canal personalizado.

  • Nombre del canal - El nombre del canal se puede cambiar y se usa internamente para identificar el canal.

  • URL de webhook para mensaje saliente — La URL de webhook para mensajes salientes a este canal.

  • URL de webhook para mensajes entrantes — La URL de webhook para mensajes entrantes a este canal.

  • Tipo de ID : se utilizan para la identificación del usuario y se utilizan para comunicarse con su servidor de integración personalizado.

  • ID de canal — ID de canal único para identificar su canal personalizado.

  • Token de API : un identificador único utilizado para autenticar a un usuario para acceder a una API.

Paso 4: Haga clic en Guardar cambios para actualizar la configuración del canal personalizado.

Preguntas frecuentes y solución de problemas

¿Puedo conectar chats de otras plataformas usando un canal personalizado?

Sí, puedes. A continuación se indican tres pasos a seguir:

  1. En respond.io, ingrese la URL del webhook de destino de la otra plataforma en el campo URL del webhook para el mensaje entrante .

  2. En la otra plataforma, configure una URL de webhook que apunte a respond.io, lo que permitirá que los contactos le envíen mensajes.

  3. Necesitarás un Servidor de Integración Personalizada para interpretar las APIs tanto de respond.io como de la otra plataforma, permitiendo el intercambio de mensajes entre ellas.

Asegúrese de confirmar con la otra plataforma que los dos primeros pasos sean factibles.

Preguntas frecuentes sobre webhooks de canales personalizados

¿Por qué el webhook devuelve un estado 200 incluso si el mensaje no se puede entregar a respond.io?

Al conectar un canal personalizado, los mensajes enviados a respond.io a través de webhooks siempre devolverán un código de estado 200 inmediatamente, independientemente de si el mensaje se pasó correctamente a respond.io. Esto se debe a la naturaleza de los webhooks, que están diseñados para devolver una respuesta inmediata sin verificar el éxito de la entrega del mensaje.

Compartir este artículo
Telegram
Facebook
Linkedin
Twitter

¿No encuentras lo que estás buscando? 🔎