Informações

Enviando notificações via WhatsApp pelo OTOBO


O OTOBO é o novo sistema de atendimento baseado no OTRS, tem se apresentando uma solução prática e estável.

Vou mostrar aqui como fazer uma integração com API de WhatsApp para enviar notificações, sem desenvolvimento e sem necessidade de AddOns. 🙂

Vamos em frente.

Nesse caso vamos usar a API do Winzap é um API não oficial que vem funcionando bem com a gente.

Como funciona o Winzap ?

Você pode cadastrar no link abaixo.

https://winzap.com.br/usuarios/login/

Faz a assinatura e vai receber um token para enviar mensagens.

Veja a documentação aqui.

https://winzap.com.br/docs/envio/

Crie um web service como abaixo.

Use um invoker.

Generic::PassThrough

No XLTS

<?xml version=”1.0″ encoding=”UTF-8″?>

<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt;

  <xsl:template match=”RootElement”>

       <xsl:copy>

           <cmd>chat</cmd>

           <to>TEFEFONE@c.us</to>

           <token>TOKEN_WINZAP</token>

           <msg>

Assunto : <xsl:value-of select=”//OldTicketData/Title” />

Proposta : <xsl:value-of select=”//OldTicketData/TicketID” />

https://crm.serviceup.com.br/otobo/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select=”//OldTicketData/TicketID” />

           </msg>

       </xsl:copy>

  </xsl:template>

  <xsl:template match=”content” />

</xsl:stylesheet>

No REST use as configurações abaixo.

Com isso ao criar um chamado ou adicionar uma nota ele vai enviar uma notificação via Whatsapp

Vou enviar a fonte do Web Service para facilitar pra vocês.

Debugger:

  DebugThreshold: debug

  TestMode: ‘0’

Description: ”

FrameworkVersion: 10.0.9

Provider:

  Transport:

    Type: ”

RemoteSystem: ”

Requester:

  Invoker:

    Alert:

      Description: ”

      Events:

      – Asynchronous: ‘1’

        Event: ArticleCreate

      MappingOutbound:

        Config:

          DataInclude: []

          PostRegExFilter: ~

          PostRegExValueCounter: ~

          PreRegExFilter: ~

          PreRegExValueCounter: ~

          Template: “<?xml version=\”1.0\” encoding=\”UTF-8\”?>\r\n<xsl:stylesheet

            version=\”1.0\” xmlns:xsl=\”http://www.w3.org/1999/XSL/Transform\”>\r\n

            \ <xsl:template match=\”RootElement\”>\r\n       <xsl:copy>\r\n           <cmd>chat</cmd>\r\n

            \          <to>TELEFONE@c.us</to>\r\n           <token>TOKEN</token>\r\n

            \          <msg>\r\nAssunto : <xsl:value-of select=\”//OldTicketData/Title\”

            />\r\nProposta : <xsl:value-of select=\”//OldTicketData/TicketID\” />\r\nhttps://crm.serviceup.com.br/otobo/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of

            select=\”//OldTicketData/TicketID\” />\r\n           </msg>\r\n       </xsl:copy>\r\n

            \ </xsl:template>\r\n  <xsl:template match=\”content\” />\r\n</xsl:stylesheet>”

        Type: XSLT

      Type: Generic::PassThrough

  Transport:

    Config:

      DefaultCommand: GET

      Host: https://api.winzap.com.br

      InvokerControllerMapping:

        Alert:

          Command: GET

          Controller: /send/?token=:token&msg=:msg&cmd=:cmd&to=:to

      Timeout: ’30’

    Type: HTTP::REST

Esse mesmo conceito você pode usar para integração com Twillio, utalk ou qualquer outro serviço que aceite um POST ou GET  com JSON para alguma ação.

Espero que a dica de hoje seja útil

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.