Bot de Mensagens - Evento "Ao enfileirar mensagem"

Visão Geral

O Bot de Mensagens permite o envio de mensagens por diferentes canais, como E-mail e WhatsApp, com informações extraídas diretamente do banco de dados. É uma maneira prática e versátil de enviar mensagens em processos automatizados através do LPA.

Cada linha retornada de uma Fonte de Dados adiciona uma mensagem na fila de envio do Bot de Mensagens.

Quando queremos enviar mensagens em intervalos regulares de tempo, é muito prático: basta configurar o Bot de Mensagens no Agendamento de Mensagens (ou de Tarefas) definindo o intervalo de tempo desejado entre as execuções.

Problema

No entanto, quando precisavamos enviar mensagens sem depender de um intervalo regular, mas sim de uma fila personalizada ou da ocorrência de um evento, era necessário adicionar uma complexidade adicional: criar uma função no banco de dados para gerenciar a fila, “queimando” o registro no momento em que ele retorna da fonte dados, para que não fosse retornado na próxima execução.


Exemplo:

Necessidade: Enviar uma mensagem de boas vidas para um novo cliente cadastrado.

Processo:

  1. O cliente é inserido na tabela clientes, onde existe uma coluna data_email_boasvindas.

  2. Criamos uma função fnc_retorna_mensagens_boasvindas() no banco de dados, que retorna as informações dos clientes que ainda não receberam a mensagem de boas vindas, e ao mesmo tempo, atualiza a data de envio (data_email_boasvindas) de cada uma das linhas retornadas da tabela de clientes.

    É aqui que mora a parte mais complexa do processo.

  3. O Bot de Mensagens é configurado usando a fonte de dados, que consome a função de banco de dados:

    SELECT * FROM fnc_retorna_mensagens_boasvindas()
    

Solução

Para simplificar este processo, removemos a necessidade da criação de uma função ou procedure de banco de dados para gerenciar a fila, criando o evento (gatilho) “Ao enviar mensagem”, que ocorre logo após o processamento de cada registro da fonte de dados pelo Bot de Mensagens.

Neste evento, podemos executar um comando SQL, tendo acesso à todas os campos da linha correspondente na Fonte de Dados.


Exemplo:

Reproduzindo o exemplo anterior, com o novo recurso, teríamos o seguinte cenário:

Processo com o novo recurso:

  1. O cliente é inserido na tabela clientes, onde existe uma coluna data_email_boasvindas.

  2. O Bot de Mensagens é configurado usando a fonte de dados:

    SELECT * FROM clientes WHERE data_email_boasvindas IS NULL;
    

    Neste passo, não há mais a necessidade de uma função de banco de dados.

  3. No evento “Ao enfileirar mensagem”, adicionamos o comando SQL abaixo:

    UPDATE clientes 
    SET data_email_boasvindas = CURRENT_TIMESTAMP
    WHERE cliente_id = {?Dados.cliente_id} 
    
2 curtidas