Fala galera! Eu preciso gerar um ticket com o histórico de conversas em outra plataforma quando um chat é encerrado. Eu consegui fazendo um POST na url https://http.msging.net/commands passando os seguintes parâmetros no body:
até aí tudo bem. Ele retorna um JSON meio complicado, mas consegui tratar:
function run(historico) {
var aux = JSON.parse(historico);
var mensagens = aux.resource.items;
var resp = "";
for(i = mensagens.length - 1; i >= 0;i--)
{
//sent = mensagem do bot ou do agente
if(mensagens[i].direction === "sent")
{
resp = resp.concat("Group: ");
//se for objeto o valor fica em outro lugar
if(typeof mensagens[i].content === 'object')
resp = resp.concat(mensagens[i].content.text.toString());
else
resp = resp.concat(mensagens[i].content.toString());
}
//mensagem do cliente
else if(mensagens[i].direction === "received")
{
resp = resp.concat("Cliente: ");
//se for objeto o valor fica em outro lugar
if(typeof mensagens[i].content === 'object')
resp = resp.concat(mensagens[i].content.customerInput.value.toString());
else
resp = resp.concat(mensagens[i].content.toString());
}
//quebra de linha
resp = resp.concat("<br>");
}
return resp.replace(/\n/g,"<br>");
}
Até aí tudo bem, tá tudo funcionando bonitinho.
O problema é que, quando faço essa mesma requisição via Whatsapp vem um JSON totalmente diferente, sem nenhuma mensagem…
Seria quando o canal do contato é WhatsApp? Não ficou claro pra mim.
Mas bom, eu percebi que nesse modelo do WhastApp que você postou abaixo, você está passando o contact identity do seu router, certo?
Será que não é isso?
Eu preciso ver esse seu modelo pra entender melhor, pois eu acabei que implementando através de outro método. Ao invés de pegar em /threads eu pego os /tickets/{id}/messages:
É isso mesmo! Fazendo um POST para https://http.msging.net/commands eu consigo pegar todo o histórico e depois tratá-lo como fiz na pergunta, porém o retorno desse post é totalmente diferente quando o canal é o Whatsapp
Sobre a sugestão de usar o tickets/id/messagens, estou disposto a tentar, mas como pego esse id? se eu uso a variável input.content só recebo o texto da última mensagem enviada pelo usuário, não tem nenhum id no meio
Claro, consigo dar uma olhada em como é o formato, porém entender o porque vem diferente eu diria ser um trabalho pro time da Take conseguir uma resposta, o máximo que eu consigo é olhar a docs do Whatsapp porém não encontrei nada a respeito de “histórico de mensagens”, pode ser por isso que talvez não exista nenhum histórico (FAQs - WhatsApp Business Platform On-Premises API - Documentation - Meta for Developers). @BrunoC você sabe algo a respeito disso?
Você está realizando a requisição dentro de algum subbot?
Consegue confirmar se o {{contact.identity}} enviado na requisição é realmente o Id do usuário no Wpp ([email protected]) e não o id do tunnel?
Estou tentando acessar o histórico da conversa porém não estou conseguindo. Funciona normal quando eu faço o teste pelo “testar” do blip portal. Porém, quando tento pegar o histórico em uma conversa “real” via WhatsApp , não retorna nenhum conteúdo.
Não retorna nenhuma das mensagens trocadas :/. Isso só ta funcionando quando eu passo um ticketID de uma conversa originada internamente no blip. As conversas via WhatApp não retornam nada pelo ticketID
Fala Galera, pra quem tá tendo o problema, entrei em contato com o suporte e me ajudaram a resolver. Na requisição troquem a authorization key para a do router, e, no corpo, coloquem assim:
Olá! Obrigado pelo retorno pessoal! Se aplica em partes, na verdade. Eu consegui acessar as mensagem
O “problema” é que a thread retorna todas as ultimas conversas daquele cliente. (dentro de uma certa quantidade máxima de itens) e eu precisava das mensagens “filtradas” por ticket.
Preciso desse filtro pq o meu objetivo é, ao término de um atendimento humano, ter o histórico daquele atendimento específico (incluindo o que foi tratado no bot). Caso eu precise registrar em algum outro lugar. Nesse cenário, não seria interessante receber uma série de informações “passadas”. Entende?