Tabla de contenido

Canal personalizado

JQ Lee Actualizado por JQ Lee

El canal personalizado solo está disponible para Business Plan y más de solamente. ¡Actualice o suscríbase a un plan de Business o Enterprise si desea utilizar esta característica!
Consejo: También te proporcionamos un ejemplo de un canal personalizado que puedes intentar desplegar en tu servidor. Por favor, echa un vistazo a nuestro proyecto de GitHub aquí.
Flujo de canal personalizado

Cómo funciona

Recibiendo un mensaje

Para recibir un mensaje a través de un canal personalizado, es necesario seguir los siguientes pasos:

  1. Cuando un contacto intenta enviar un mensaje, el proveedor de servicios de mensajería llamará a su servidor de integración personalizado con el payload del mensaje (por favor revise la documentación API del proveedor de servicios de mensajería para referencia).
  2. Su servidor de integración personalizada recibirá el mensaje y lo publicará en respond.io (en formato respond.io).
  3. respond.io recibirá la solicitud de publicación, guardará el mensaje y lo mostrará en el módulo de mensajería.

Enviando un mensaje

Para enviar un mensaje a través de un canal personalizado, es necesario seguir los siguientes pasos:

  1. Cuando un User/Workflow/Broadcast intentará enviar un mensaje, respond.io llamará a su servidor de integración personalizado con la carga del mensaje (en formato respond.io).
  2. Su servidor de integración personalizada recibirá el mensaje y lo enviará al proveedor de servicios de mensajería en el formato que necesiten (por favor, revise la documentación de la API del proveedor de servicios de mensajería para referencia).
  3. El proveedor de servicios de mensajería recibirá el Webhook y confirmará si el mensaje ha sido entregado con éxito. Sugerencia, si el mensaje no se entrega con éxito puede intentar añadir un mecanismo de reintento en su servidor de integración personalizado.

Configuración

Paso 1: Crear un canal

  1. En la plataforma respond.io, vaya a Ajustes > Canales y haga clic en el botón AÑADIR CHANNEL
  2. Selecciona Canal Personalizado.
  3. Introduzca la URL base de la API.
  4. Seleccione el tipo de ID para el canal y haga clic en SIGUIENTE. Este ID es para el propósito de la identificación de usuario y se utilizará para comunicarse con su servidor de integración personalizado. Hay dos tipos de ID disponibles:
    1. Número de teléfono: Utilice esto si el proveedor de servicios de mensajería reconoce contactos basados en su número de teléfono.
      1. Formato de muestreo: +60177872890
    2. ID personalizado: Utilice esto si el proveedor del servicio de mensajería reconoce contactos basados en un ID generado a medida.
      1. La longitud máxima del caracter es 50.
      2. A-Z, a-z, 0-9, _ , =, + , / y @ están permitidos.
  5. El siguiente cuadro de diálogo proporcionará el ID del canal, token de APIy URL del webhook p.e.
    1. ID del canal: gfd8g7fd89dgfd
    2. API Token: aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
    3. URL de webhook: https://app.respond.io/custom/channel/webhook/
Consejo: 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.

Paso 2: Pasar mensajes a respond.io

Webhook URL se utiliza para POST de los Mensajes, Echoes de Mensajería y recibos de Mensajería para la respuesta. o plataforma.

El siguiente código llamará al webhook en la respuesta. o plataforma y estará creando el contacto (si no existe) y guardando el mensaje contra el contacto.

Ejemplo de mensajes

curl -X POST \
https://app.respond. o/custom/channel/webhook/ \
-H 'autorización: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": [
{
"tipo": "mensaje",
"mId": "xcvzzxcxczxczxc",
"marca de tiempo": 2132131321000,
"mensaje": {
"type": "texto",
"texto": "Hola Mundo"
}
}
],
"contacto": {
"firstName": "Juan",
"apellido": "Doe",
"profilePic": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",
"countryCode": "MY",
"email": "john@respond. o",
"teléfono": "+60177872890",
"idioma": "es"
}
}'

Ejemplo de Echoes de Mensajes

curl -X POST \
https://app.respond. o/custom/channel/webhook/ \
-H 'autorización: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": [
{
"tipo": "message_echo",
"mId": "xcvzzxcxczxczxc",
"marca de tiempo": 2132131321000,
"mensaje": {
"type": "texto",
"texto": "Hola Mundo"
}
}
],
"contacto": {
"firstName": "Juan",
"apellido": "Doe",
"profilePic": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",
"countryCode": "MY",
"email": "john@respond. o",
"teléfono": "+60177872890",
"idioma": "es"
}
}'

Ejemplo de recibos de mensajería

curl -X POST \
https://app.respond. o/custom/channel/webhook/ \
-H 'autorización: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"eventos": [
{
"tipo": "message_status",
"mId": "xcvzzxcxczxczxc",
"marca de tiempo": 2132131321000,
"status": {
"value": "sent|delivered|read|failed",
"mensaje": "Error: Error al enviar el token no válido"
}
]
}'

Campo

Descripción

Validación

Id del canal

ID de Canal Único

Requerido. Campo único. Se genera por respond.io.

contactId

ID de contacto único

Requerido. Id de contacto único respond.io. Máx. 50 caracteres.

events.type

Tipo de evento

Requerido. Tipo disponible: mensaje, message_echo, y message_status.

events.mld

ID del mensaje

Requerido. Mensaje único ID. Máx. 50 caracteres.

events.timestamp

Tiempo de Epoch de UNIX (milisegundos)

Requerido. Tiempo del evento que activó el callback.

events.message.type

Tipo de mensaje

Requerido. Tipos de mensajes disponibles: texto, adjunto, ubicación y quick_reply. Consulte la sección Tipo de mensaje para ver otras muestras de tipo de mensaje.

texto de events.message.text

Texto del mensaje

Requerido. Longitud máxima de 7,000 caracteres.

events.status.value

Texto

Requerido si event.type es message_status. Valores de estado disponibles: enviados, entregados, leídos y fallidos.

events.status.message

Texto

Requerido si events.status.value es fallado.

contacto.firstName

Nombre

Opcional. Máx. 50 caracteres.

contacto.apellido

Apellido

Opcional. Máx. 50 caracteres.

contacto.profilePic

URL de foto de perfil

Opcional. El tamaño del avatar no debe ser superior a 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 del país de 2 letras - Código ISO ALPHA-2.

contacto.zona horaria

Zona horaria

Opcional. (min: -24) (max: 24).

contacto.email

Correo Electrónico

Opcional. Máx. 50 caracteres.

contacto.teléfono

Número de teléfono

Opcional. Máx. 18 caracteres.

contacto.language

Idioma

Opcional. ISO 639-1.

Respuesta - Éxito (estado HTTP → 200)

"OK"

Paso 3: Manejar mensajes salientes de respond.io

respond.io llamará al siguiente endpoint <API Base URL>/message

Importante: Asegúrate de implementar el código Mensaje de Salida en la ruta /message en tu servidor web.

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

curl -X POST \
<API Base URL>/message \
-H 'autorización: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"mensaje": {
"tipo": "texto",
"texto": "Hola Mundo"
}
}'

Respuesta - Éxito (estado HTTP → 200)

{
"mId": "1640141607842"
}

La autenticación tiene que hacerse en el punto final antes de pasar el mensaje al proveedor del servicio de mensajería. Aquí está un ejemplo expreso de middleware.

const {validationResult} = require('express-validator');

const validateToken = (req, res, next) => {
const apiToken = <<API Token>>
const bearerToken = req. eaders.authorization;

if (!bearerToken)
return res. end(401)

const token = bearerToken.substring(7, bearerToken. ength);

if (apiToken !== token) {
return res. end(401)
}
siguiente();
};

módulo. xports = {
validateToken
};

Consejo: También te proporcionamos un ejemplo de un canal personalizado que puedes intentar desplegar en tu servidor. Por favor, echa un vistazo a nuestro proyecto de GitHub aquí.
Tipo de mensajes

Ejemplo de texto

{
"type": "text",
"text": "Bienvenido a respond.io",
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. texto

texto

Texto del mensaje

Requerido. Longitud máxima de 7,000 caracteres.

Ejemplo de archivo multimedia

{
"type": "adjunto",
"adjunto": {
"tipo": "imagen|video|audio|archivo",
"url": "https://abc/japan. ng",
"mimeType": "image/png",
"fileName":"logo de empresa. ng",
"descripción": "último logo de la compañía"
}
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. adjunto.

attachment.type

Tipo de archivo adjunto

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

adjunto.url

URL

Requerido. Máx. 2,000 caracteres. Asegúrese de que es un enlace público para que los usuarios o los contactos puedan ver el contenido.

adjunto.mimeTipo

Tipo Mime del archivo adjunto

Opcional

nombre del archivo adjunto

Nombre del archivo

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

Descripción del archivo adjunto

Descripción del archivo

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

Por favor, asegúrese de que la URL proporcionada para el archivo adjunto no está descargada forzosamente por el navegador (i.e. la Disposición de contenido encabezado en la respuesta HTTP debe ser el valor por defecto en línea)

Ejemplo de ubicación

{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "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.

longtitude

Coordenadas

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

dirección

Dirección de ubicación

Opcional. Máx. 256 caracteres.

Ejemplo de respuesta rápida

{
"type": "quick_reply",
"title": "Selecciona tu idioma preferido",
"respuestas": [
"Malayo",
"Inglés"
]
}

Campo

Descripción

Validación

tipo

Tipo de mensaje

Requerido. rápido_respuesta.

título

Título de respuesta rápida

Requerido. Máx. 256 caracteres.

respuestas

Responder texto

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

Códigos de error

Error (HTTP Status → 4xx)

{
"error": {
"mensaje": "Mensaje de error"
}
}

Capacidades de Broadcast

Consejo: Aprende más sobre cómo enviar una emisión aquí.

Es posible enviar mensajes de difusión a través de un canal personalizado conectado a respond.io, pero ciertas condiciones pueden causar que los mensajes no se envíen.

Con canales personalizados, no es posible detectar si una ventana de mensajería está abierta o cerrada. Tampoco es posible enviar mensajes etiquetados o de plantilla.

Solución de problemas

Si encuentras algún problema, por favor contáctanos aquí!

¿Sentirse atrapado? No temas.

¿Necesitas ayuda? Contáctanos para recibir asistencia. ¡La ayuda está aquí!

Descripción general del canal personalizado

Powered by HelpDocs (opens in a new tab)

Powered by HelpDocs (opens in a new tab)