Categorias
< All Topics
Print

Como notificar novos chamados no Telegram

ATENÇÃO: ESTE DOCUMENTO FOI ATUALIZADO E NO FINAL DELE EXPLICAMOS COMO NOTIFICAR GRUPOS DIFERENTES DO TELEGRAM, DE ACORDO COM A FILA DO CHAMADO.

Em maio de 2021 um membro da comunidade LigeroSmart nos perguntou: É possível notificar um grupo no Telegram quando um chamado é criado?

Aproveitando a ideia, lançamos um pequeno desafio para os participantes da comunidade: Quem conseguiria criar tal notificação utilizando o LigeroEasyConnector!

No vídeo abaixo (cerca de 9 minutos), apresentamos a solução do problema e, logo abaixo, um passo-a-passo para você replicar o feito e começar a receber notificações no seu Telegram:

Passo-a-passo para realizar a integração

1 – Crie um BOT not Telegram (Anote o Token de seu BOT fornecido pelo Bot Father do Telegram

2 – Crie um grupo no Telegram com o BOT que você criou e com as demais pessoas que serão notificadas

3 – Adicione o BOT MyChatInfoBot a este grupo. O que este BOT faz é mostrar o ID do grupo, que será utilizado na integração. Exemplo:

4 – Acesse o LigeroSmart e vá para Administração -> Web Services

5 – Adicione um Web Service, coloque o nome que preferir (utilizarei Telegram no exemplo), adicione um Transporte de Rede como “Requisitante” do tipo LigeroEasyConnector::REST e clique no botão “Salvar”

6 – Ainda na área de “Requisitante”, clique na caixa “Adicionar invoker” e selecione Ligero::LigeroEasyConnector

7 – Coloque o nome que preferir (no exemplo utilizei SendMessage) e adicione um mapeamento de dados de saída da Requisição, selecionando XSLTLigero:

Clique em “Salvar”

8 – Adicione o Disparador “TicketCreate”. Não se esqueça de clicar no + como abaixo (Salve novamente em seguida):

9 – Clique em Configurar no mapeamento XSLTLigero e adicione o código abaixo:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="RootElement">
    <xsl:copy>
        <chat_id>-560306189</chat_id>
        <parse_mode>Markdown</parse_mode>
        <text>Novo chamado criado:

*<xsl:value-of select="//Ticket/Title" />*

Para visualizar, acesse:
https://meuligero.com/otrs/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select="//Ticket/TicketID" />

        </text>
    </xsl:copy>
    </xsl:template>
</xsl:stylesheet>  

Ficará assim:

(Ajuste a URL para visualizar o chamado conforme necessário)

Clique em Salvar e Finalizar e, quando voltar para a tela do Invoker, clique mais uma vez no Salvar e Finalizar. Você voltará para a tela do Web Service que está sendo criado

10 – Clique no botão Configurar do nosso transporte de Rede como Requisitante:

11 – Ajustes os seguintes parametros:

  • Endpoint: https://api.telegram.org
  • *Mapeamento do controlador para o invoker ‘SendMessage’: /botXXXXXXXXXXXXXXX/sendMessage
    (Substitua XXXXXXX pelo Token do BOT que você criou)
  • Comando válido da requisição para o invoker ‘SendMessage’: POST

Ficará assim:

Salve, Finalize e realize seus testes.

Você pode acompanhar o resultado no Depurador do Web Service:

Notificar grupos diferentes no Telegram de acordo com a fila do Chamado

Uma forma de notificar grupos diferentes, é ajustando o Chat ID de cada grupo no XSLT, de acordo com a fila, utilizando a propriedade xsl:choose.

IMPORTANTE: Você precisa adicionar o BOT que criou em todos os grupos que deseja enviar notificações.

No exemplo abaixo, podemos utilizar o mesmo template de mensagem para notificar dois grupos diferentes no Telegram, de acordo com a fila do chamado (//Ticket/Queue):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="RootElement">
    <xsl:copy>
        <chat_id><xsl:choose>
            <xsl:when test="//Ticket/Queue='Raw'">-560306189</xsl:when>
            <xsl:when test="//Ticket/Queue='Junk'">-574581430</xsl:when>
            <xsl:otherwise>-574581430</xsl:otherwise>
        </xsl:choose></chat_id>
        <parse_mode>Markdown</parse_mode>
        <text>Novo chamado criado:

*<xsl:value-of select="//Ticket/Title" />*

Para visualizar, acesse:
https://meuligero.com/otrs/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select="//Ticket/TicketID" />

        </text>
    </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Você também pode enviar textos diferentes de acordo com o fila, ou seja, cada grupo poderá receber um template diferente. Neste caso, o XSLT ficaria assim:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="RootElement">
    <xsl:copy>
        <xsl:choose>
          <xsl:when test="//Ticket/Queue='Raw'">
             <chat_id>-560306189</chat_id>
             <text>Novo chamado criado:
*<xsl:value-of select="//Ticket/Title" />*
Para visualizar, acesse:
https://meuligero.com/otrs/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select="//Ticket/TicketID" />
            </text>
          </xsl:when>
          <xsl:when test="//Ticket/Queue='Junk'">
             <chat_id>-574581430</chat_id>
             <text>New ticket created:
*<xsl:value-of select="//Ticket/Title" />*
https://meuligero.com/otrs/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select="//Ticket/TicketID" />
            </text>
          </xsl:when>
            <xsl:otherwise>
             <chat_id>-560306189</chat_id>
             <text>Novo chamado criado:
*<xsl:value-of select="//Ticket/Title" />*
Para visualizar, acesse:
https://meuligero.com/otrs/index.pl?Action=AgentTicketZoom;TicketID=<xsl:value-of select="//Ticket/TicketID" />
            </text>
            </xsl:otherwise>
        </xsl:choose>
        <parse_mode>Markdown</parse_mode>

    </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Restringindo o disparo a apenas algumas filas

Se quiser que a notificação seja disparada apenas quando o chamado for criado em uma ou mais filas específicas, edite o disparador do Invoker, clicando no botão de edição conforme abaixo:

Em seguida, adicione o filtro com o nome da(s) fila(s), conforme a seguir:

Note que escolhemos a opção Regexp para poder definir que a notificação será disparada apenas quando o chamado for criado ou na fila Raw ou na fila Junk.

Anterior Como funciona o mapeamento XSLT?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sumário