Histórico da conversa

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:

{  
  "id": "{{$guid}}",
  "method": "get",
  "uri": "/threads/{{contact.identity}}?refreshExpiredMedia=true"
}

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…

{"type":"application/vnd.lime.collection+json","resource":{"itemType":"application/vnd.iris.thread-message+json","items":[]},"method":"get","status":"success","id":"{{$guid}}","from":"postmaster@msging.net/#iris-hosted-6","to":"ninagroup@msging.net/!iris-hosted-6-valor_aqui","metadata":{"#command.uri":"lime://ninagroup@msging.net/threads/valor_aqui@tunnel.msging.net? refreshExpiredMedia=true","uber-trace-id":"valor_aqui"}}

Note que eu troquei uns ids por valor_aqui porque não sei se tem algo “confidencial”

Como faço então para pegar o histórico de mensagens? Eu estou perdendo algo e tem uma maneira mais fácil de fazer isso? Realmente estou sem direções…

estou com o mesmo problema !!!

Eu não entendi o que você quis dizer com:

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?
image

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:

{
  "id": "{{random.guid}}",
  "to": "postmaster@desk.msging.net",
  "method": "get",
  "uri": "/tickets/{{input.content@id}}/messages"
}
1 Curtida

Gabriel estou com o mesmo problema que amigo acima, no widgest funciona corretamente mais no whatszap não funciona ???

o que fazer???

Como assim?

Você consegue pegar o Ticket History via Blip Chat, mas via Whatsapp não?

Confesso que não entendi, um dos motivos é o fato de eu nunca ter testado no wpp, mas creio não ter diferença no canal do cliente.

É 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

Eu pego da variável {{input.content@id}} pode usar que é sucesso, foi o Bruno que me ensinou.

@GabrielPetrone , tem como dar uma olhada no porque do json vir diferente via Whatsapp?

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 (https://developers.facebook.com/docs/whatsapp/faq/). @Bruno você sabe algo a respeito disso?

Isso ocorre na utilização da estrutura Router SubBot, neste caso você deverá utilizar o id do contato no router e a chave do router.

2 Curtidas

Boa tarde Vitor, tudo bem?

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 (5511999999999@msging.net) e não o id do tunnel?

1 Curtida

Estou tendo problema similar:

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.

Request:

{
“id”: “{{$guid}}”,
“to”: “postmaster@desk.msging.net”,
“method”: “get”,
“uri”: “/tickets/3642a7f9-31d0-4c5b-a933-0178c89dd7d1/messages”
}

O ticket id foi obtido utilizando a variável {{input.content@id}} , também ja tentei obter ticketid utilizando a request:

{
“id”: “{{$guid}}”,
“to”: “postmaster@desk.msging.net”,
“method”: “get”,
“uri”: “/tickets?$filter=(CustomerIdentity%20eq%20’9657881d-b81e-4566-9803-0737cbbd9e8c@tunnel.msging.net’)&$closed=true&$skip=0&$take=100”
}

E o resultado foi exatamente o mesmo, ou seja, um ticketid que não retorna nenhuma mensagem.

Acredito que seja algo relacionado ao tunnel.msging.net, porém não estou sabendo como configurar, alguém pode ajudar?

Já tentei fazer a requisição utilizando o usuario no formato [5511999999999@msging.net] q peguei no {{tunnel.originator}} .

Obrigado

Poderia dar mais detalhes?

Obrigado

1 Curtida

Se você estiver com o Contexto do Roteador ativado:

Você poderá passar a variável de entrada como: contact.identity

Caso esteja desativado:
image

A variável de entrada deverá ser: tunnel.originator

Tem mais informações nestes artigos, sobre variáveis no Router:

Espero que lhe ajude! :rocket:

2 Curtidas

Não consegui :confused:

Independente do que eu to passando na requisição:

{
“id”: “{{$guid}}”,
“to”: “postmaster@desk.msging.net”,
“method”: “get”,
“uri”: “/tickets/TicketID/messages”
}

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:

{ 
  "id": "{{random.guid}}",
  "method": "get",
  "uri": "/threads/{{tunnel.originator}}?refreshExpiredMedia=true&$take=50"
} 

Só que aí vocês tem que trocar o bot do site de vcs para que seja o router, se não só vai funcionar o whatsapp kkkkkk

2 Curtidas

Ei @Anderson_Luiz_Baptis, tudo bem?

Será que a solução do @Vitor_Ceolin_Porfiri se aplica para você? Consegue fazer um teste?

Olá! Obrigado pelo retorno pessoal! Se aplica em partes, na verdade. Eu consegui acessar as mensagem :raised_hands:

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?

Por isso eu tinha tentado utilizar a requisição:

{
“id”: “{{$guid}}”,
“to”: “postmaster@desk.msging.net”,
“method”: “get”,
“uri”: “/tickets/TicketID/messages”
}

Pq por ela dava pra especificar o ticketID na URI

Seria possível, obter a thread ou o histórico das mensagens para ticketsID específicos ?

Anderson, dá um olhada se essa documentação atende sua demanda por favor:

https://docs.blip.ai/#get-all-messages-from-a-customer-by-a-ticket