Enviar mensajes de WhatsApp mediante los Webhooks de Zoho CRM

Enviar mensajes de WhatsApp mediante los Webhooks de Zoho CRM

En Zoho CRM podemos generar Webhooks para ejecutar un API. Además, estos Webhooks los podemos utilizar junto a los Workflows para realizar acciones automatizadas. En este artículo vamos a ver cómo utilizar los Webhooks de Zoho CRM y el API de WOZTELL para enviar mensajes de WhatsApp. Para ello veremos los siguientes puntos:

  1. Generar un Access Token
  2. Configurar un Webhook
    1. Enviar mensajes de texto
    2. Enviar plantillas de mensaje

Generar un Access Token


En API de WOZTELL necesita un Access Token para verificar la identidad del usuario. Por ello, antes de empezar a usar nuestra API debemos generarnos un token. Para ello podemos usar la documentación de la plataforma para generar un token.

Recuerda que el API para enviar mensajes utiliza los Scopes: bot:sendResponses, bot:admin
Recuerda que debes generar un SHORT Access Token para poder utilizarlo en los webhooks de Zoho CRM

Pulsa AQUÍ para ir directamente al artículo para generar los tokens.


Configurar un Webhook

En Zoho CRM podemos crear un Webhook siguiendo los siguientes pasos:

1. Accedemos a nuestra cuenta de Zoho CRM
2. Accedemos a Settings


3. En el apartado AUTOMATION accedemos a ACTIONS


4. Pulsamos en la pestaña de Webhooks


5. Pulsamos el botón Configure Webhook


6. Damos un nombre y una descripción a nuestro Webhook


7. Seleccionamos como Method el valor POST


8. En la URL to Notify debemos poner la url de la API y el Access Token. Donde quedaría así:

https://bot.api.woztell.com/sendResponses?accessToken={woztell-access-token}

Recuerda cambiar {woztell-access-token} por el valor de tú token.



9. En el apartado Authorization Type seleccionamos General


10. Debemos seleccionar el módulo de CRM con el que configuraremos este Webhook. En nuestro caso Leads.


11. En apartado de Header no configuramos nada.


12. En el apartado de Body seleccionamos como Type el valor Raw y Format el valor JSON.


13. Seguidamente, en el cuadro de texto que nos habrá aparecido deberemos pegar el JSON con la información que queremos enviar.

{
  "channelId": "{woztell-platform-channel-id}",
  "recipientId": "{wahstapp-phone}",
  "response": [
    {response-message-type}
  ]
}
Donde los parámetros son los siguientes:

channelId
El Channel Id se utiliza para identificar desde que número se va a enviar el mensaje. Para obtener el Channel Id lo podemos hacer mediante el siguiente ARTÍCULO.
recipientId
El Recipient Id es el teléfono al que queremos enviar el mensaje. Si queremos usar un campo del módulo seleccionado en el Webhook podemos pulsar # para que nos muestre los campos disponibles. Por ejemplo, al seleccionar el campo Mobile del módulo Leads Zoho CRM nos añadirá el texto ${Leads.Mobile} donde nos añadira el valor del campo Mobile cuando se ejecute el Webhook.
response
En response podemos añadir el tipo de mensaje que queremos enviar. En la documentación oficial de la plataforma de WOZTELL podemos ver todos los tipos permitidos. Pulsa AQUÍ para ir directamente. En los siguientes apartados veremos ejemplos de los diferentes mensajes.




Enviar mensajes de texto

Después de seguir los pasos anteriores, para enviar mensajes de texto deberemos añadir en el parámetro response un JSON con el mismo formato que nos especifica la documentación del API. En nuestro caso RAW del Webhook queraría:

{
  "channelId": "{woztell-platform-channel-id}",
  "recipientId": "{whatsapp-phone}",
  "response": [
    {
      "type": "TEXT",
      "text": "Hello World!"
    }
  ]
}
El parámetro del campo response sería un JSON con los siguientes valores:

type
El valor siempre será TEXT
text
El contenido del texto que queremos enviar.




Enviar plantillas de mensaje

Después de seguir los pasos anteriores, para enviar mensajes de texto deberemos añadir en el parámetro response un JSON con el mismo formato que nos especifica la documentación del API. En nuestro caso RAW del Webhook queraría:

{
    "channelId": "{woztell-platform-channel-id}",
    "recipientId": "{whatsapp-phone}",
    "response": [
        {
            "type": "TEMPLATE",
            "elementName": "{whatsapp-template-name}",
            "languageCode": "{whatsapp-template-language}",
            "components": [
                {components-json-value}
            ]
        }
    ]
}
El parámetro del campo response sería un JSON con los siguientes valores:


type
El valor siempre sería TEMPLATE
elemetName
Es el nombre único que se genera cuando creamos la plantilla. Podemos obtener este valor desde dentro del Channel de la plataforma o desde el WhatsApp Manager del Facebook Business Manager
languageCode
Es el código del idioma de la plantilla que queremos enviar. Podemos ver los idiomas de las plantillas dentro del Channel de la plataforma o desde el WhatsApp Manager del Facebook Business Manager. Además puedes ver los diferentes idiomas en el siguiente ARTÍCULO
components
Los parámetros de la plantilla variaran dependiendo si la plantilla tiene cabecera, imágenes, audios, videos, parámetros, footer y/o botones. Para ello, a continuación hemos preparado unos pasos para generar el JSON del campo components de forma fácil y rápida.

Generar el JSON de una plantilla

Para facilitar la tarea de generar el JSON para enviar una plantilla mediante el API podemos usar la plataforma para generarlo. Para ello, podemos seguir los siguientes pasos:

1. Accedemos a la plataforma de WOZTELL
2. El menú principal buscamos Resources y accedemos a Responses


3. Generamos una nueva respuesta a partir del botón New Response


4. Como queremos generar una plantilla de WhatsApp, en la nueva ventana que nos muestra deberemos abrir las opciones de tipo de Channel pulsado la pestaña de la izquierda.


5. En este nuevo menú seleccionamos una plataforma de WhatsApp Cloud mediante el botón Platform




6. Ahora, en el tipo de mensaje podemos seleccionar WhastApp Template


7. Seguidamente, en la plantilla seleccionamos la Integración que es el WABA con el cual tenemos el número de teléfono y después pulsamos en el botón Update Message Template


8. Al pulsar el botón debemos seleccionar la plantilla (Message Template)


9. Después de seleccionarla la opción de Language Policy la dejamos como Deterministic y seleccionamos el idioma (Language) deseado


10. Dependiendo de la plantilla nos mostrará los parámetros que debemos seleccionar. En nuestro caso tenemos un parámetro en el body y dos botones. Los rellenamos con los valores deseados.


11. Una vez rellenados todos los datos de la plantilla pulsamos el botón de Confirmar (Confirm).
12. Ahora veremos que la plantilla está toda rellenada. Para obtener los parámetros para el JSON deberemos pulsar en Avanzado (Advanced).


13. En este nuevo apartado podemos ver el JSON completo de la plantilla pero a nosotros solo nos interesa el valor de components, elementName y languageCode. Podemos copiar el valor de estos parámetros y pegarlos en nuestro Webhook de Zoho CRM. Quedaría así con todos los datos:


{
  "channelId": "{woztell-platform-channel-id}",
  "recipientId": "{whatsapp-phone}",
  "response": [
    {
      "type": "TEMPLATE",
      "elementName": "{whatsapp-template-name}",
      "languageCode": "{whatsapp-template-language}",
      "components": [
        {
          "type": "body",
          "parameters": [
            {
              "type": "text",
              "text": "NAME"
            }
          ]
        },
        {
          "type": "button",
          "sub_type": "quick_reply",
          "index": "0",
          "parameters": [
            {
              "type": "payload",
              "payload": "YES"
            }
          ]
        },
        {
          "type": "button",
          "sub_type": "quick_reply",
          "index": "1",
          "parameters": [
            {
              "type": "payload",
              "payload": "NO"
            }
          ]
        }
      ]
    }
  ]
}

14. Finalmente, en el Webhook de CRM podemos añadir las variables que deseamos en los componentes. Por ejemplo añadir en las variables de body.




Y con esto tendríamos finalizado el Webhook para nuestros Workflows.