@cstefano , tudo bem?
Estava com um problema parecido com o seu e inclusive utilizei esse fórum aqui para pensar uma solução. Acredito que ela vá te ajudar no que você está querendo resolver, visto que seu problema era bem parecido com o meu.
Vou compartilhar com você por aqui e com mais pessoas que tiverem essa necessidade. Para o meu caso de uso, funcionou perfeitamente. E o que eu precisava era ter o registro das conversas separadamente, por cada sessão.
A minha solução passa por dois momentos chave: o início da sessão e a finalização da sessão.
Início da sessão
O início da sessão, no meu caso, sempre é no bloco início do bot principal. Nas ações de saída do bloco, introduzi um script para salvar a data e hora daquele momento no formato ISO 8601 (ex.: 2024-07-25T13:16:05.007Z). Esse formato é necessário para a requisição que é realizada posteriormente.
function run() {
// Obtém a data e hora atual
let dateObject = new Date();
// Converte para o formato ISO 8601
let formattedDate = dateObject.toISOString();
return formattedDate;
}
No meu caso e para esse exemplo, a variável salva é storageDate
Final da sessão
No meu caso, todos os atendimentos finalizados são direcionados para um bot específico que eu chamo de “Fim do atendimento”. Nesse bot, eu faço a requisição get last messages utilizando os filtros “take”, “storageDate” e “direction”.
{
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{{contact.identity}}?refreshExpiredMedia=true&$take=100&storageDate={{storageDate}}&direction=asc"
}
Veja que ao utilizar o filtro storageDate, eu utilizo a variável que eu salvei no início da sessão. Defino ainda “direction” como “asc” para obter todas as mensagens após a data filtrada.
Dessa forma, eu sempre garanto que a requisição é feita somente para aquela sessão específica, já que a data será salva no início e será utilizada para a requisição ao final da sessão.
Espero ter ajudado!