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í[a]. 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 a dos valores NAMESPACE y ELEMENT_NAME. Estos valores identifican tu Plantilla de Mensaje y serán necesarios durante el proceso.
- Debes tener saldo disponible en tu cuenta para activar notificaciones en WhatsApp (consulta al equipo de soporte de tu plan para revisar el saldo disponible en tu cuenta).
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.
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)[b]
POST https://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í[c].
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[d]
{
"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://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":{
"namespace":"{{NAMESPACE}}",
"name":"{{MESSAGE_TEMPLATE_NAME}}",
"language":{
"code":"pt_BR",
"policy":"deterministic"
},
"components":[
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "parâmetro1"
},
{
"type":"text",
"text":"parâmetro2"
}
]
}
]
}
}
}
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://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":{
"namespace":"{{NAMESPACE}}",
"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 o http://youtu.be/WU9gzjhyrcc.[e]
POST https://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":{
"namespace":"{{NAMESPACE}}",
"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://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":{
"namespace":"{{NAMESPACE}}",
"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://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":{
"namespace":"{{NAMESPACE}}",
"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"
}
]
}
]
}
}
}
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 a continuación muestra, paso a paso, cómo realizar este procedimiento.