📌Canal Personalizado

Integrar la aplicación de mensajería de terceros en BonyChat.

Esta función se encuentra actualmente en fase Beta. ¡Si tiene algún problema, póngase en contacto con nosotros aquí!

Consejos: También le proporcionamos un ejemplo de canal personalizado que puede intentar implementar en su servidor.

¿Cómo funciona?

Recibir mensaje:

Para recibir un mensaje a través de un canal personalizado, se deben 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 la carga útil del mensaje (consulte la documentación de la API del proveedor de servicios de mensajería para obtener referencia).

  2. Su servidor de integración personalizado recibirá el mensaje y lo publicará en BonyChat (en formato de BonyChat).

  3. BonyChat recibirá la solicitud post, guardará el mensaje y lo mostrará en el módulo de mensajería.

Enviar mensaje:

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

  1. Cuando un Usuario/Flujo de trabajo / Difusión intente enviar un mensaje, BonyChat llamará a su servidor de integración personalizado con la carga útil del mensaje (en formato de BonyChat).

  2. Su servidor de integración personalizado recibirá el mensaje y lo enviará al proveedor de servicios de mensajería en el formato que requiera (consulte la documentación de la API del proveedor de servicios de mensajería para obtener referencia).

  3. El proveedor de servicios de mensajería recibirá el Webhook y confirmará si el mensaje se ha entregado correctamente. Consejos, si el mensaje no se entrega correctamente, puede intentar agregar un mecanismo de reintento en su servidor de integración personalizado.

Configuración

Paso 1: Crear un canal

  1. En la plataforma BonyChat, vaya a Configuración > Canales y haga clic en el botón AGREGAR CANAL.

  2. Seleccionar Canal Personalizado (Custom Channel).

  3. Introduzca la URL base de la API.

  4. Seleccione el tipo de ID para el canal y haga clic en SIGUIENTE. Este ID tiene el propósito de identificar al usuario y se utilizará para comunicarse con su servidor de integración personalizado. Hay dos tipos de IDs:

    1. Número de teléfono: Utilícelo si el proveedor de servicios de mensajería reconoce a los contactos en función de su número de teléfono. Formato de muestra: + 60177872890

    2. ID personalizado: Utilícelo si el proveedor de servicios de mensajería reconoce contactos en función de un ID generado a medida.

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

      2. A-Z, a-z, 0-9, _ , =, + , / y @ están permitidos.

  5. El siguiente cuadro de diálogo proporcionará el ID de canal, el token de API y la URL del Webhook, p. ej.

    1. ID de canal: gfd8g7fd89dgfd

    2. API Token: aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd

    3. URL del Webhook: https://okeybot.com/custom/webhook

Consejos: Usar el tipo de ID de número de teléfono te permite iniciar una conversación y enviar el primer mensaje a un contacto.

Paso 2: Pasar mensajes a BonyChat

La URL del Webhook se utiliza para PUBLICAR los Mensajes, Ecos de Mensajes y Recibos de Mensajes en la plataforma BonyChat

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

curl -X POST \
  **<https://app.bony.chat/custom/webhook**> \
  -H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
  "channelId": "gfd8g7fd89dgfd",
  "contactId": "+60177872890",
  "events": [
    {
      "type": "message",
      "mId": "xcvzzxcxczxczxc",
      "timestamp": 2132131321000,
      "message": {
        "type": "text",
        "text": "Hello World"
      }
    }
  ],
  "contact": {
    "firstName": "John",
    "lastName": "Doe",
    "profilePic": "<https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/07/08/14/pic.jpg>",
    "countryCode": "MY",
    "email": "john@bony.chat",
    "phone": "+60177872890",
    "language": "es"
  }
}'

CampoDescripciónValidación

channelId

ID único del canal

Requerido. Campo único. Es generado por BonyChat.

contactId

Id único de contacto

Requerido. ID único de contacto de BonyChat. Max 50 carcteres.

events.type

Tipo Evento

Requerido. Mensaje.

events.mId

ID de Mensaje

Requerido. ID único de mensaje. Max 50 caracteres.

events.timestamp

Época única

Tiempo(millisegundos)

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

events.message.type

Tipo mensaje

Requerido. Tipos de mensajes disponibles: texto, archivo adjunto, ubicación y respuesta rápida.

Consulte la sección de tipo de mensaje para otras muestras de tipo de mensaje.

events.message.text

Texto del mensaje

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

contact.firstName

Nombre

Opcional. Max 50 caracteres.

contact.lastName

Apellidos

Opcional. Max 50 caracteres.

contact.profilePic

URL de foto de perfil

Opcional. El tamaño de la imagen del avatar no debe ser mayor de 100 kb. Recomendado 720x720

contact.locale

Código local

Opcional. Consulte aquí la lista de valores.

contact.countryCode

Código del país

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

contact.timezone

Huso horario

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

contact.email

Correo electrónico

Opcional. Max 50 caracteres.

contact.phone

Número de teléfono

Opcional. Max 18 caracteres.

contact.language

Idioma

Opcional. ISO 639-1

Respuesta de éxito (Estado HTTP → 200)

"OK"

Paso 3: Manejar mensajes salientes desde Bony C

Bony.chat llamará al siguiente punto final <URL de base de API > / mensaje

Importante: Asegúrese de implementar el código de mensaje saliente en la ruta / message de su servidor web.

Aquí está el ejemplo de cURL de Bony chat llamando al punto final.

curl -X POST \
  <API Base URL>/message \
  -H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
	"channelId": "gfd8g7fd89dgfd",
	"contactId": "+60177872890",
	"message": {
		"type": "text",
		"text": "Hello World"
	}
}'

Respuesta de éxito (Estado HTTP → 200)

{
	"mId": "1640141607842"
}

La autenticación debe realizarse en el punto final antes de pasar el mensaje al Proveedor de Servicios de mensajería. Aquí hay un ejemplo de middleware express.

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
};

Consejos: También le proporcionamos un ejemplo de canal personalizado que puede intentar implementar en su servidor.

Tipo de mensaje

Muestra de texto

{
  "type": "text",
  "text": "Welcome to Okeybot",
}

CampoDescripciónValidación

tipo

Tipo de mensaje

Requerido. Texto.

texto

Tipo de texto

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

Ejemplo para archivo multimedia

{
  "type": "attachment",
  "attachment": {
    "type": "image|video|audio|file",
    "url": "https://abc/japan.png",
    "mimeType": "image/png",
    "fileName":"company logo.png",
    "description": "latest company logo"
  }
}
CampoDescripciónValidación

type

Tipo de mensaje

Requerido. Adjunto

attachment.type

Tipo de adjunto

Requerido. Tipo de adjusntos disponibles: imagen, video, audio y archivo.

attachment.url

URL

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

attachment.mimeType

Tipo Mime del archivo adjunto

Opcional

attachment.fileName

Nombre del archivo

El nombre del archivo debe incluir una extensión. Max 256 caracteres (incluyendo extensión del archivo). Enviar un archivo sin extensión o con una extensión incorrecta puede hacer que el contacto o el usuario no pueda abrir el archivo.

attachment.description

Descripción del archivo

Opcional. Max 256 caracteres. Solo aplicable para attachment.type = imagen

Ejemplo para localización

{
  "type": "location",
  "latitude": 0.123456,
  "longitude": -0.1234,
  "address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}
CampoDescripciónValidación

type

Tipo de mensaje

Requerido. Localización

latitude

Coordenadas

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

longitude

Coordenadas

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

address

Dirección de ubicación

Opcional. Max 256 caracteres.

Ejemplo para respuesta rápida

{
  "type": "quick_reply",
  "title": "Select your preferred language",  
  "replies": [
    "Malay",
    "Spanish"
  ]
CampoDescripciónValidación

type

Tipo de mensaje

Requerido. respuesta_rápida

title

Título de respuesta rápida

Requerido. Max 256 caracteres.

replies

Texto de respuesta

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

Solucionador de problemas

Esta función se encuentra actualmente en fase Beta. ¡Si tiene algún problema, póngase en contacto con nosotros aquí!

Última actualización