Índice:
- Video con paso a paso
- Introducción
- Enviando una notificación
- Solicitud 1: obtener el identificador de un cliente
- Solicitud 2: Enviar notificación únicamente con texto
- Solicitud 3: Envío de notificación con imagen
- Solicitud 4: Envío de notificación con video
- Solicitud 5: Envío de notificación con documento
- Solicitud 6: envío de la notificación con respuesta rápida
- Dirigir a un subbot registrado como un servicio de enrutador
Video con paso a paso
Introducción
A través de Blip, es posible crear aplicaciones para el canal de WhatsApp capaces, además de responder a los mensajes entrantes, de enviar mensajes (notificaciones) al cliente de forma activa.
Cualquier mensaje enviado por el bot, después de un período de 24 horas en relación al último mensaje enviado por el cliente, se considera una notificación. Para obtener más información sobre las diferencias entre un mensaje normal y una notificación, haz clic aquí. Las notificaciones en WhatsApp siempre están asociadas a una Plantilla de Mensaje (Message Template), previamente aprobada por el propio WhatsApp.
Para enviar una notificación (mensaje activo) es necesario asegurarnos de que ya se hayan cumplido los requisitos previos que detallaremos a continuación:
- Tener un bot previamente publicado en el canal de WhatsApp (únicamente disponible para clientes Business y Enterprise).
- Tener una Plantilla de Mensaje (Message Template) creada y aprobada por WhatsApp. Después de crear y aprobar Plantilla de Mensaje, tendrás acceso acceso a un valor NAME (nombre de la plantilla). Estos valores identifican tu Plantilla de Mensaje y serán necesarios durante el proceso.
Enviando una notificación
Para enviar una notificación a través de la API de Blip, deberás realizar 2 solicitudes HTTP en la API de Blip. El primero tiene el objetivo de buscar el identificador de un cliente en WhatsApp y debe ejecutarse una sola vez para cada usuario. La segunda solicitud es responsable de activar efectivamente una notificación a través de una Plantilla de Mensaje específica.
Solicitud 1: obtener el identificador de un cliente
Antes de enviar una notificación, debes tener acceso al identificador del usuario en WhatsApp. Recuerda realizar esta operación solo una vez por cada cliente.
“+ DDI DDD NÚMERO DE TELÉFONO”. PUNTO DE ATENCIÓN: No olvide agregar el signo "+" (más) antes de enviar.
- Más detalles sobre verificación de usuario, contacto de verificación y vigencia del número consultado, acceda aquí.
La búsqueda del identificador se realiza mediante una solicitud HTTP teniendo en cuenta el número de celular del cliente en formato internacional.
Observa un ejemplo de un número considerando el identificador de país igual a 52 (México).
+5219999988888 (signo de + / código internacional / 1 (indica que es un celular) / código nacional + número del celular).
Nota: Use la URL con la identificación del contrato para consumir los puntos finales informados a continuación, su rendimiento y operación pueden verse afectados si no tiene la identificación del contrato, por lo que es esencial usar la URL con la identificación del contrato para usar las solicitudes http.
POST https://{{contractid}}.http.msging.net/commands HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id": "a456-42665544000-0123e4567-e89b-12d3",
"to": "postmaster@wa.gw.msging.net",
"method": "get",
"uri": "lime://wa.gw.msging.net/accounts/+5531999998888"
}
Observa que uno de los encabezados de esta solicitud requiere un token de autorización de bot (YOUR_TOKEN). Para saber dónde encontrar el token de tu bot, haz clic aquí.
A continuación, te mostramos un ejemplo de una respuesta a esta solicitud. Ten en cuenta que la propiedad del recurso tiene un objeto JSON que contiene la propiedad AlternativeAccount, este es el valor que identifica al cliente en el canal de WhatsApp.
5219999988888@wa.gw.msging.net - identificador del cliente que tiene el número de móvil 5219999988888
{
"type": "application/vnd.lime.account+json",
"resource": {
"fullName": "John Doe",
"alternativeAccount": "5531999998888@wa.gw.msging.net",
"identity": "5531999998888@wa.gw.msging.net",
"phoneNumber": "+5531999998888",
"source": "WhatsApp"
},
"method": "get",
"status": "success",
"id": "a456-42665544000-0123e4567-e89b-12d3",
"from": "postmaster@wa.gw.msging.net",
"to": "bot@msging.net",
"metadata": {
"#command.uri": "lime://wa.gw.msging.net/accounts/+5531999998888"
}
}
Observación: Esta operación debe realizarse solo una vez para cada cliente.
Solicitud 2: Enviar notificación únicamente con texto
En posesión del identificador del cliente que recibirá la notificación, realiza la solicitud HTTP que se describe a continuación cambiando el id de la misma:
POST https://{{contractid}}.http.msging.net/messages HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id":"{{RANDOM_ID}}",
"to":"553175713755@wa.gw.msging.net",
"type":"application/json",
"content":{
"type":"template",
"template":{
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "parâmetro1"
},
{
"type":"text",
"text":"parâmetro2"
}
]
}
]
}
}
}
(En este código de envio, la plantilla de mensaje contiene 2 variables de texto)
Solicitud 3: Envío de notificación con imagen
En posesión del identificador del cliente que recibirá la notificación, realiza la solicitud HTTP que se describe a continuación cambiando el ID de la misma:
POST https://{{contractid}}.http.msging.net/messages HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id":"{{RANDOM_ID}}",
"to":"553199998888@wa.gw.msging.net",
"type":"application/json",
"content":{
"type":"template",
"template":{
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type":"header",
"parameters":[
{
"type":"image",
"image":{
"link":"https://www.blip.ai/wp-content/uploads/2018/02/logo-blip.png"
}
}
]
},
{
"type":"body",
"parameters":[
]
}
]
}
}
}
Solicitud 4: Envío de notificación con video
En posesión del identificador del cliente que recibirá la notificación, realiza la solicitud HTTP que se describe a continuación cambiando el id de la misma:
El tamaño del video debe ser de un máximo de 16 MB.
No se aceptan enlaces de YouTube, como:
- https://www.youtube.com/watch?v=WU9gzjhyrcc
- http://youtu.be/WU9gzjhyrcc.
POST https://{{contractid}}.http.msging.net/messages HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id":"{{RANDOM_ID}}",
"to":"553199998888@wa.gw.msging.net",
"type":"application/json",
"content":{
"type":"template",
"template":{
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type":"header",
"parameters":[
{
"type":"video",
"video":{
"link":"http://techslides.com/demos/sample-videos/small.mp4"
}
}
]
},
{
"type":"body",
"parameters":[
]
}
]
}
}
}
Solicitud 5: Envío de notificación con documento
En posesión del identificador del cliente que recibirá la notificación, realiza la solicitud HTTP que se describe a continuación cambiando el ID de la misma:
POST https://{{contractid}}.http.msging.net/messages HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id":"{{RANDOM_ID}}",
"to":"553199998888@wa.gw.msging.net",
"type":"application/json",
"content":{
"type":"template",
"template":{
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type":"header",
"parameters":[
{
"type":"document",
"document":{
"filename":"take.pdf",
"link":"http://www.orimi.com/pdf-test.pdf"
}
}
]
},
{
"type":"body",
"parameters":[
{
"type":"text",
"text":"BLiP"
}
]
}
]
}
}
}
Solicitud 6: envío de la notificación con respuesta rápida
En posesión del identificador del cliente que recibirá la notificación, realiza la solicitud HTTP que se describe a continuación cambiando el ID de la misma:
POST https://{{contractid}}.http.msging.net/messages HTTP/1.1
Content-Type: application/json
Authorization: Key YOUR_TOKEN
{
"id":"{{RANDOM_ID}}",
"to":"553175713755@wa.gw.msging.net",
"type":"application/json",
"content":{
"type":"template",
"template":{
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "Uma mensagem qualquer. Gostaria de responder?"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": 0,
"parameters": [
{
"type": "payload",
"payload": "Sim"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": 1,
"parameters": [
{
"type": "payload",
"payload": "Sim"
}
]
}
]
}
}
}
(En el código de envio arriba, el objeto parameters es opcional, solamente en caso de querer crear um payload para los botones del quick Reply)
Observa que, además del token del bot y el identificador de cliente, será necesario cambiar los valores NAMESPACE y MESSAGE_TEMPLATE_NAME en el cuerpo de la solicitud correspondiente a la plantilla de mensaje preaprobada. Además, es necesario insertar los valores de las variables definidas en la creación de la Plantilla de Mensaje, cuando corresponda.
El video al final de este artículo, muestra paso a paso, cómo realizar este procedimiento.
Nota: Dirigir el usuário a un subbot registrado como un servicio de un router
Importante: Para que este proceso funcione, en las configuraciones del flujo, la opción Usar el contexto del enrutador, debe estar activada en todos los subbots (servicios) del Enrutador.
Para dirigir un usuario a un subbot registrado como un servicio de un router, luego de enviar un mensaje activo a través de API, es necesario ejecutar la solicitud de estado Master state para identificarlo.
Master state:
POST https://{{contractid}}.http.msging.net/commands HTTP/1.1
Content-Type: application/json
Authorization: Key {YOUR_ROUTER_TOKEN}
{
"id": "{{$guid}}",
"to": "postmaster@msging.net",
"method": "set",
"uri": "/contexts/{{contact.identity}}/Master-State",
"type": "text/plain",
"resource": "{{idDoSubbot}}@msging.net"
}
Si desea ubicar el usuário en un bloque específico del bot, es necesario ejecutar la solicitud de cambio de estado de usuario (change user state), utilizando la misma contact.identity y la misma clave(key) de autorización del enrutador.
Change user state:
POST https://{{contractid}}.http.msging.net/commands HTTP/1.1
Content-Type: application/json
Authorization: Key {YOUR_ROUTER_TOKEN}
{
"id": "{{$guid}}",
"to": "postmaster@msging.net",
"method": "set",
"uri": "/contexts/{{contact.identity}}/stateid@{{flow-identifier}}",
"type": "text/plain",
"resource": "{{state-id}}"
}
Cabe mencionar que el bloque al que será dirigido el usuario no mostrará su contenido, ejecutándose únicamente las condiciones y acciones de salida, las cuales serán validadas luego de la respuesta del usuario.
Por este motivo, se sugiere mantener um botón de input del usuario (entrada del usuario) en el bloque donde será recibida la respuesta del usuario y sin contenido (mensajes). Luego, crear una condición de salida para tratar su respuesta y dirigirlo para el bloque deseado.
Ejemplo:
Para obtener más información, acceda a la discusión sobre el tema en nuestra comunidad o los videos en nuestro canal. 😃