[Resolvido] O retorno de uma consulta das Threads está vindo vazio


#1

Olá,

Estou tendo problema quando estou consultando uma thread, ele está retornando o resource.items com um array vazio em muitas vezes e as vezes não. Isso começou a ocorrer hoje 24/11.

Minha consulta está assim…

let from = message.from.replace('/web', '');

await client.sendCommand({
    id: Lime.Guid(),
    method: "get",
    uri: `/threads/${from}`
})
.then( async res => {
    console.log(res);
    console.log(res.resource.items); // retorna vazio
}).catch(err => {
    console.log(err);
});

Meu objetivo no fazer a consulta da thread é que eu vou ver a última mensagem enviada pelo bot, e vejo se está dentro das perguntas que o bot faz para poder saber se a mensagem digitada pelo usuário é a resposta dela.

Vamos supor que o bot pergunte “Qual é o seu nome”… Verifico na thread se a última mensagem enviada pelo bot é “Qual é o seu nome” e se for verdadeiro eu indico que a message.content daquele momento é o nome do usuário.

Talvez exista algo mais fácil para fazer isso, mas no momento foi a solução que encontrei.


#2

Olá @odirleiborgert, tudo bem ?

Nos últimos dias tivemos incidentes com algumas requisições no histórico de threads de alguns bots.
Os problemas que vc relatou foram causados por esse incidente.

Tudo já está normalizado e suas requisições devem retornar os valores corretamente. Qualquer problema nos avise.

Aproveitando sua dúvida gostaria de dar um feedback sobre sua solução.

O problema relatado diz respeito a saber o estado dos clientes a cada mensagem recebida. A melhor solução para este problema é utilizar uma máquina de estado ao invés de consultar o histórico como vc está fazendo.

A máquina de estado é uma estrutura simples (veja este link para mais detalhes) que basicamente precisa armazenar um valor que indique o estado atual de cada cliente. É possível fazer isso em memória ou utilizando o bucket do BLiP por exemplo.