Automatiza mensagens de WhatsApp com Webhooks no Zoho CRM

Envia mensagens de WhatsApp usando Webhooks do Zoho CRM

Antes de começar a programar, recomendamos que utilizes o seguinte método:  https://support.woztell.com/portal/en/kb/articles/whatsapp-workflows-inside-zoho-crm

Em Zoho CRM podemos gerar Webhooks para executar uma API. Além disso, estes Webhooks podem ser usados em conjunto com Regras de Workflow para automatizar ações. Neste artigo, vamos ver como usar os Webhooks do Zoho CRM e a API da WOZTELL para enviar mensagens de WhatsApp. Para isso, podemos seguir estes passos:

  1. Gerar um Access Token
  2. Configurar um Webhook
    1. Enviar mensagem de texto
    2. Enviar mensagem de template

Gerar um Access Token

A API da WOZTELL necessita de um Access Token para verificar a identidade do utilizador. Portanto, antes de começar a usar a nossa API, é necessário gerar um token. Para isso, podes utilizar a documentação da plataforma para criar um token.

Alerta
Lembra-te que a API de envio de mensagens utiliza os Scopes: bot:sendResponses, bot:admin
Info
Nota que para usar Webhooks no Zoho CRM deves gerar um Access Token CURTO.

Clica AQUI para aceder diretamente ao artigo sobre como gerar o token.

Configurar um Webhook

No Zoho CRM, podemos criar um Webhook seguindo estes passos:

1. Inicia sessão na tua conta do Zoho CRM.
2. Vai a Definições.

3. Na secção AUTOMAÇÃO, clica em AÇÕES.

4. Clica no separador Webhooks.

5. Clica no botão Configurar Webhook.

6. Atribui um nome e uma descrição ao Webhook.

7. Em "Método", seleciona a opção POST.

8. Em "URL para Notificar", devemos colocar a URL da API e o Access Token. Ficaria assim:


Lembra-te de substituir {woztell-access-token} pelo valor do teu token.

9. Na secção "Tipo de Autorização", escolhe a opção Geral (General).

10. Deves selecionar o módulo do CRM onde pretendes configurar este Webhook. Neste exemplo, Leads.

11. Na secção Header, não é necessário configurar nada.

12. Na secção Body, escolhe como Tipo a opção "Raw" e como Formato "JSON".

13. Depois disso, poderemos colar o ficheiro JSON com as informações que pretendemos enviar no campo de texto que aparece.

Notas
{
  "channelId": "{woztell-platform-channel-id}",
  "recipientId": "{whatsapp-phone}",
  "response": [
    {response-message-type}
  ]
}

Onde os parâmetros serão os seguintes:

channelId
O Channel ID é utilizado para identificar o número de telefone a partir do qual será enviada a mensagem. Podemos obter o Channel ID seguindo os passos explicados neste ARTIGO.
recipientId
O recipientId refere-se ao número de telefone para o qual queremos enviar a mensagem. Se precisarmos usar um campo do Zoho CRM no Webhook, podemos digitar # para exibir os campos disponíveis (ex.: se selecionarmos o campo Mobile no módulo Leads, o Zoho CRM adicionará o texto ${Leads.Mobile} e utilizará automaticamente o valor guardado no campo Mobile).
response
No campo response adicionamos a mensagem que queremos enviar. Como explicado na documentação oficial da WOZTELL, existem vários tipos de mensagens que podem ser enviadas.

Envio de mensagens de texto

Depois dos passos anteriores, para enviar mensagens de texto devemos adicionar o parâmetro response num JSON. Neste caso, o RAW do Webhook será:

Notas
{
  "channelId": "{woztell-platform-channel-id}",
  "recipientId": "{whatsapp-phone}",
  "response": [
    {
      "type": "TEXT",
      "text": "Hello World!"
    }
  ]
}

O parâmetro response seria um JSON com os seguintes valores:

type
Este valor será sempre TEXT.
text
Conteúdo da mensagem que queremos enviar.

Envio de mensagens de template

Depois dos passos anteriores, para enviar mensagens de template devemos adicionar o parâmetro response num JSON. Neste caso, o RAW do Webhook seria:
Notes
{
    "channelId": "{woztell-platform-channel-id}",
    "recipientId": "{whatsapp-phone}",
    "response": [
        {
            "type": "TEMPLATE",
            "elementName": "{whatsapp-template-name}",
            "languageCode": "{whatsapp-template-language}",
            "components": [
                {components-json-value}
            ]
        }
    ]
}

O parâmetro response seria um JSON com os seguintes valores:

type
Este valor será sempre TEMPLATE.
elementName
Nome único gerado ao criar o template. Pode ser encontrado na plataforma WOZTELL ou no WhatsApp Manager do Facebook Business.
languageCode
Código do idioma do template. Podes consultar na plataforma WOZTELL ou no WhatsApp Manager do Facebook Business. Ver idiomas disponíveis aqui.
components
Os componentes variam dependendo se o template tem header, imagem, áudio, vídeo, parâmetros, footer ou botões.

Gerar o JSON do template

Podes obter facilmente o JSON de um template a partir da plataforma para enviá-lo por API. Para isso, basta seguir estes passos:

1. Acede à plataforma WOZTELL.
2. Procura a secção Recursos e clica em Respostas.

3. Clica em Nova Resposta para gerar uma nova resposta.

4. Como queremos criar uma nova mensagem de template para WhatsApp, na janela que aparece podemos escolher as diferentes opções de canal clicando no separador à esquerda.

5. Neste menu, selecionamos uma plataforma WhatsApp Cloud usando o botão Plataforma.


6. Agora, no tipo de mensagem, selecionamos Template WhatsApp.

7. Depois, no template, escolhemos a integração (WABA) onde temos o número de telefone e clicamos em Atualizar Modelo de Mensagem.

8. Ao clicar no botão, devemos selecionar o modelo de mensagem (Message Template).

9. Depois de escolher, deixamos a opção Política de Idioma como Determinístico e selecionamos o idioma desejado.

10. Dependendo do template, aparecerão os parâmetros que devemos preencher. No nosso caso, temos um parâmetro no corpo e dois botões. Preenchemos com os valores desejados.

11. Uma vez preenchidos todos os dados do template, clicamos em Confirmar.
12. Agora que o template está preenchido, podemos obter os parâmetros JSON clicando em Avançado.

13. Nesta nova secção veremos o JSON completo do template, mas apenas nos interessam os valores de components, elementName e languageCode. Copiamos estes valores para colá-los no Webhook do Zoho CRM. O JSON final seria algo como:

Notas
{
  "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. Por fim, podemos adicionar as variáveis que desejarmos no campo components dentro do Webhook do Zoho CRM.

Feito isto, poderemos aplicar este Webhook a uma Regra de Workflow no Zoho CRM.