Correos en WhatsApp | Ranura de notificación
Last updated
Last updated
Notificación es un Slot diseñado para enviar correos. El Slot permite enviar un mensaje cuando el Chat con el Usuario Bot aún no ha sido creado (no hay chat_id), o el Chat ha sido creado, pero el Agente no puede ser el primero en escribir en el Chat después de un cierto tiempo de espera (limitación de algunos canales). El Slot permite procesar estados para un envío.
Nota: Actualmente funciona con 360Dialog (WhatsApp), Edna Pulse y Chat2Desk.
La Ranura de Notificación recibe una Solicitud de Envío con datos para envío desde un sistema externo (CRM, por ejemplo), genera y envía la solicitud al Canal Proyecto, luego recibe una respuesta del Canal Final y, dependiendo del estado recibido, la Conversación pasa a una de las Subranuras.
Una Solicitud de Envío correcta a través de la Ranura de Notificación creará un Chat si no existe en la Plataforma, incluso si el Usuario Bot no existe en el Canal Final (por ejemplo, el número de teléfono del destinatario en la Solicitud de Envío es correcto, pero la persona no está registrada en WhatsApp).
La Ranura de Notificación es una Ranura Compleja y no puede existir sin tres Ranuras Hijo: Notification fail, Notification no account y Notification success, que inician sus propias ramas a las que se hará la transición tras recibir el estado de envío.
No es posible añadir otras ranuras para niños.
La sublote de fallo de notificación está pensada para continuar el script si no ha sido posible enviar un mailing al canal final.
La subranura Notificación sin cuenta está pensada para continuar el script después de un envío que se ha realizado correctamente al canal final, pero éste ha informado de que no se ha encontrado al destinatario (por ejemplo, el destinatario no tiene una cuenta de WhatsApp cuando envía mensajes a través de WhatsApp).
La subslot de éxito de notificación está destinada a continuar el Script después de que se haya enviado con éxito un mailing al Canal Final y se haya recibido un estado o respuesta de éxito del Usuario Bot.
Características de la ranura de notificación en diferentes ch
Identificador del interlocutor en el canal final
Clave ID en el cuerpo de la solicitud de mailing
Formato del identificador del interlocutor en el canal final
Ejemplo de solicitud de mailing
Éxito de la notificación
Fallo de notificación
Notificación sin cuenta
Comprobar la disponibilidad del chat
La configuración de las franjas horarias varía en función del canal final. Para obtener información detallada sobre cómo crear una franja horaria de notificación y configurar los envíos en distintos canales finales, lea los artículos:
La pestaña General contiene los ajustes básicos de la ranura.
Nombre - el nombre de la Ranura, que se mostrará en el Árbol de Script. La longitud máxima de un valor de campo es de 40 caracteres.
Canal de destino - Canal final a través del cual se realizará el mailing.
Chatbot webhook - un webhook al que el Agente recibirá una Solicitud de Envío.
El valor aparecerá en el campo después de guardar y volver a abrir la Ranura. El webhook empezará a funcionar después de que el Agente esté entrenado.
Botón de copia de webhook: al hacer clic en el botón, la dirección del webhook se copia en el portapapeles.
Botón GENERAR NUEVO WEBHOOK.
El botón se convierte en clicable sólo cuando el campo webhook Chatbot se llena con el valor webhook.
Cuando se pulsa el botón, se genera un nuevo webhook.
Los cambios realizados tras la regeneración del webhook surten efecto una vez que el Agente ha sido reentrenado.
La pestaña Datos entrantes está destinada a la configuración del análisis sintáctico del cuerpo de la solicitud de envío para el uso posterior de los datos recibidos en el script.
PARSE REQUEST BODY - una matriz de pares Context key - Request key.
Clave de contexto - nombre de la variable de contexto para el análisis sintáctico;
Clave de solicitud: la clave del cuerpo de la solicitud de envío, cuyo valor se escribirá en la clave de contexto o expresión.
Importante: el acceso a la clave de un objeto, si su nombre coincide con el nombre de los métodos Reservados de los objetos, se produce a través de corchetes y comillas.
Ejemplo: {{ data["keys"] }}
En la pestaña Destino, se configura el envío del mailing al Canal de Destino seleccionado en la pestaña General, en función de sus necesidades.
PARÁMETROS GENERALES - ajustes generales para enviar un mensaje:
Nombre de la plantilla - el nombre de la plantilla en 360dialog utilizada para la distribución (campo Nombre en la cuenta de Whatsapp (360dialog)). Más detalles: 360Dialog (WhatsApp)
Valores permitidos:
String;
Namespace - el nombre del parámetro de la cuenta en 360dialog (campo Namespace) requerido en la Solicitud de Envío.
Valores permitidos:
String;
Código de idioma: el nombre del parámetro "idioma de la plantilla" (campo Idiomas) de la cuenta en 360dialog, necesario en la solicitud de envío.
Valores permitidos:
String;
Expression
PARÁMETROS DE LA PLANTILLA - parámetros para la sustitución en la plantilla de distribución especificada en el campo Nombre de la plantilla, matriz de pares parámetro-valor:
La sintaxis corresponde a la documentación de WhatsApp.
Parámetro de plantilla - tipo de parámetros. El orden de especificación de los parámetros en el Slot debe corresponder al orden de los parámetros en la plantilla.
Posibles valores del campo:
Parámetros para la sustitución de medios en la plantilla:
image - para la sustitución de imágenes;
documento - para la sustitución de documentos;
vídeo - para la sustitución de vídeo.
Sólo se permite 1 parámetro de medios en la plantilla.
Parámetros para la sustitución de texto y botones en la plantilla:
body - para la sustitución de datos de texto.
El número de parámetros de este tipo no está limitado.
button_url - para la sustitución de botones.
El número máximo de botones que admite Whatsapp (360dialog) es 3.
Valor - el valor exacto, Expresión, o Variable de Contexto que debe ser sustituido en la plantilla.
Se pueden utilizar las variables del campo Clave contextual de la pestaña Datos entrantes, ya que el análisis sintáctico de los datos se realiza antes de que se forme la solicitud en el Canal final.
Importante: cuando haga referencia a una clave de objeto cuyo nombre coincida con Métodos reservados de objetos, utilice corchetes y comillas.
Ejemplo: {{ data["keys"] }}
Al crear una ranura, se generan automáticamente tres ranuras secundarias: Notificación fallida, Notificación sin cuenta y Notificación correcta.
Estas Ranuras Hijo no se pueden modificar y sólo se pueden eliminar con una Ranura Padre.
La ubicación de las Ranuras Hijo se determina automáticamente; no se pueden mover:
El fallo de notificación es siempre la subranura más alta de una determinada ranura compleja;
Notificación ninguna cuenta es siempre el segundo en orden Subslot en un determinado Complejo Ranura;
El éxito de la notificación es siempre la sub-ranura más baja de una determinada ranura compleja.
No se pueden añadir nuevas Subslots a la notificación de ranura padre.
Nombre - el nombre de la Ranura, que se mostrará en el Árbol de Script. La longitud máxima de un valor de campo es de 40 caracteres.
Nombre - el nombre de la Ranura, que se mostrará en el Árbol de Script. La longitud máxima de un valor de campo es de 40 caracteres.
Nombre - el nombre de la Ranura, que se mostrará en el Árbol de Script. La longitud máxima de un valor de campo es de 40 caracteres.
La Ranura de Notificación permite al Agente aceptar una Solicitud de Envío en forma de Solicitud Entrante al webhook del Chatbot (desde la pestaña General), incl. a un Chat inexistente (en este caso el Chat será creado).
La solicitud de envío debe incluir el identificador del destinatario en el canal de destino, que forma parte del channel_chat_id y se utiliza para generar el chat_id (por ejemplo, el número de teléfono en el caso de 360Dialog (WhatsApp)). A partir de este identificador, la Plataforma determinará el chat o, si no existe, creará un nuevo chat para enviar la solicitud.
La solicitud de envío puede ser urgente o no urgente (parámetro "is_urgent"):
valor verdadero - para una Solicitud de Envío urgente - se ejecuta inmediatamente e interrumpe el Diálogo Activo.
valor falso - para una Solicitud de Envío no urgente - se ejecuta después de cerrar el Diálogo.
si no se encuentra la clave is_urgent, se utiliza el valor por defecto false.
Importante: en la ranura de notificación, la búsqueda del parámetro "is_urgent" se realizará sólo en el cuerpo de la solicitud, a diferencia de la ranura de solicitud entrante, en la que la búsqueda del parámetro "is_urgent" se realiza tanto en el cuerpo como en los parámetros de solicitud de la URL.
Requisitos para la solicitud de envío:
Solicitud POST con un cuerpo JSON válido y cabecera "Content-Type": "application/json".
El cuerpo de la Solicitud de Envío en el primer nivel del JSON debe incluir un identificador válido del Usuario Bot en el Canal Final, el nombre de la clave depende del tipo de Canal Final.
El límite por defecto de solicitudes de envío es de 20 solicitudes por segundo por empresa. El límite se puede cambiar a través del soporte técnico.
Ejemplo de solicitud de envío en 360Dialog (WhatsApp): POST <http://localhost:10040/notification/13::9de6d0fbc9a547659457a0f7a0e21eda/chat> headers: {"Content-Type": "application/json"} body: { "phone_number": "79291642944", "is_urgent": true, "extra": { "foo": 42 } }
Ejemplo de solicitud de envío en Edna Pulse: POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json"} body: { "phone_number": "79291642944", "is_urgent": true }
Ejemplo de solicitud de envío en Chat2Desk: POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json", "Authorization: 3cb81e05cf1679e1af9e5d9164ab89"} body: { "phone_number": "79291642944", "is_urgent": true }
El token de autorización se toma de la cuenta personal de Chat2Desk: Chat2Desk
La operación Slot comienza en el momento en que la Plataforma recibe una Solicitud de Envío de un sistema externo.
Las siguientes operaciones se realizan en el orden especificado:
Comprobación del tamaño del cuerpo de la solicitud de envío:
Se comprueba el tamaño del cuerpo de la solicitud de envío:
Si el tamaño supera los 100 KB:
El cuerpo de la solicitud se sustituye por {}.
En caso contrario, pase a la siguiente operación.
Comprobación del límite de solicitudes de envío:
Si se supera el Límite de solicitudes de envío:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 404.
Comprobación del método de la solicitud de envío:
Si el método utilizado para la solicitud de envío no es un método POST:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 405.
Comprobando el encabezado content-type: application/json:
Si la solicitud de envío no tiene el encabezado content-type: application/json:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 400.
Validación de la corrección de JSON:
Si se encuentra un JSON no válido en el cuerpo de la solicitud de envío:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 400.
Encontrar el ID de usuario del bot:
Si el ID de usuario del bot no se encuentra o no es válido:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 405.
Encontrar el Canal Proyecto activo:
Si el Canal del Proyecto para la ranura de notificación está borrado o inactivo:
Se detiene el procesamiento de la solicitud.
Enviar una respuesta a la solicitud de envío con el estado: Estado HTTP: 404. BODY: "status": "No hay ningún canal activo para el evento recibido".
Determinar o crear un Chat:
El sistema encuentra un chat existente basado en el ID de usuario del bot ("phone_number") o genera uno nuevo si no lo encuentra.
Encontrar el parámetro "is_urgent":
Creación de una tarea de mailing:
Una tarea de mailing se crea con un ID de tarea único, que se registra en las variables de contexto del sistema notification_task_id.
Poner en cola o iniciar la tarea de envío.
Inicialización de variables del sistema.
El análisis sintáctico de las variables de usuario en la ranura de notificación analiza los datos de la solicitud de envío en una variable de contexto de acuerdo con la configuración de la pestaña Datos entrantes:
Si los datos no se analizan y la variable de contexto existe, su valor no se modifica.
Si los datos no se pueden analizar y la variable de contexto no existe, no se crea..
Preparando la Petición al Canal ensambla la petición al Canal Final a partir de los parámetros de la pestaña Destino y el ID de Usuario del Bot (número_teléfono):
Si la solicitud no se construye por cualquier motivo, la ejecución de la ranura de notificación finaliza, la solicitud no se envía al canal final y se pasa a la rama de fallo de notificación. En este caso:
el notification_raw_status se establece en {'description':'failed to build request'};
el notification_status se establece en 'failed'.
Si la solicitud se construye correctamente, su cuerpo se almacena en notification_raw_request.
Envío de la solicitud de envío al canal y gestión de las respuestas del canal La ranura de notificación envía la solicitud de envío al canal final seleccionado:
Si el Canal Final aceptó la solicitud y respondió con éxito, entonces:
{'descripción':'recibido por canal', 'channel_response': cuerpo de la respuesta del canal (objeto}se escribe en notification_raw_status
'enviado' se escribe en notification_status.
Si se envía la solicitud al canal final, pero se recibe como respuesta un código 4xx o 5xx, entonces:
{‘description’:’channel error <response code> ‘channel_response’: cuerpo de la respuesta del canal} se escribe en notification_raw_status;
'fallido' se escribe en notification_status.
Hay una transición a la rama de fallo de notificación.
Si la solicitud al canal final falla (el canal no está disponible, el ping no funciona, etc.), entonces:
{'description':'canal inaccesible'} se escribe en notification_raw_status.
‘failed' se escribe en notification_status;
Hay una transición a la rama de fallo de notificación.
La transición a la rama de fallo de notificación se produce en caso de cualquier problema relacionado con esta tarea de mailing específica, excepto la falta de una cuenta en este ID de usuario de bot. En caso de tal error:
{'description':'channel couldn't sent message', 'channel_response': cuerpo de la respuesta del canal tal cual (objeto)} se escribe en notification_raw_status Si se ha recibido un objeto JSON como respuesta al lanzamiento de un envío, este objeto JSON se guarda en 'channel_response'. Si la respuesta contiene texto, se guarda el texto. En caso contrario, no se guarda ninguno.
'failed' se escribe en notification_status
La transición a la rama Notificación sin cuenta se produce si no hay ninguna cuenta en el ID de usuario del bot dado (en el caso de WhatsApp, número de teléfono). En este caso:
{'description':'no account on <phone number\key identifier of the interlocutor>', 'channel_response': cuerpo de la respuesta del canal tal cual (object)} (si application/json = object, si text = str) se escribe en notification_raw_status ; en los demás casos, se escribe null).
'no_account' se escribe en notification_status;
La transición a la rama de éxito de la Notificación se produce al recibir el estado Técnico del envío - los estados de envío, entrega y lectura del mensaje por el Usuario Bot en el mensajero ('enviado', 'entregado', 'leído'), o Mensaje del Usuario Bot.
Si la transición a éxito de la Notificación se produjo debido a la recepción del estado técnico del envío:
{'description':'success','channel_response': cuerpo de la respuesta del canal (object)} se escribe en notification_raw_status (si application/json = object, si text = str; en caso contrario se escribe null).
En espera del resto el estado técnico del mailing se da por terminado, sólo se espera el mensaje del Usuario Bot;
'entregado' se escribe en notification_status;
Si la transición a éxito de la Notificación se produjo debido a la recepción del Mensaje del usuario del Bot (es decir, el Mensaje del usuario del Bot llegó antes que el estado técnico del mailing):
{'description':'success', 'channel_response': cuerpo de la solicitud recibida del canal (objeto) desde donde se analizó el texto del mensaje del usuario del bot} se escribe en notification_raw_status (si application/json = object, si text = str; en caso contrario se escribe null).
Se pone fin a la espera del estado técnico del mailing (ya no son necesarios)
En este caso, si se establece Esperar Reacción en el Script del Agente inmediatamente después del éxito de la Notificación, entonces se ignora Esperar Reacción y la Conversación pasa a la siguiente Ranura.
‘entregado' se escribe en notification_status.
Cascade id — the value of the field is pulled from the Channel webhook Token field in the settings of the . More about the settings:
Channel id — channel ID. It is obtained from the Chat2Desk API using the request.