Respondido

Coletar automaticamente histórico de um ticket


Olá,


Gostaria de saber como faço para coletar o histórico de mensagens de um ticket após ele ser finalizado.


Consigo coletar o ID do ticket e realizar a requisição conforme o docs (Blip Docs | API Reference)


Porém não retorna nenhuma mensagem da interação do ticket. Sei que tem a feature de fazer download manual do histórico, mas preciso que seja automático esse processo.

icon

Melhor resposta por Caiof 3 February 2021, 14:01

Veja o original

14 comentários

Reputação 5

Olá @Adilson_Torres_Grego,


Atualmente, há uma maneira de buscar essas mensagens, o processo pode ser um pouco moroso sem a automação do processo 👨‍💻


Segue passo a passo (só funciona para contexto do roteador desligado) 💁🏿‍♂️



  1. Busque as informações do ticket utilizando o endpoint https://docs.blip.ai/?http#get-a-ticket

    Veja um exemplo de retorno:


    {
"type": "application/vnd.iris.ticket+json",
"resource": {
"id": "bd7690b2-3711-4d6b-9fec-017628f48edb",
"sequentialId": 1,
"ownerIdentity": "[email protected]",
"customerIdentity": "[email protected]",
"customerDomain": "tunnel.msging.net",
"provider": "Lime",
"status": "ClosedClient",
"storageDate": "2020-12-03T14:14:44.700Z",
"closeDate": "2020-12-03T14:15:50.570Z",
"statusDate": "2020-12-03T14:15:50.570Z",
"externalId": "bd7690b2-3711-4d6b-9fec-017628f48edb",
"rating": 0,
"team": "Default",
"unreadMessages": 0,
"closed": true,
"closedBy": "[email protected]",
"priority": 0
},
"method": "get",
"status": "success",
"id": "73df280d-c9d7-459e-bb58-242798be0823",
"from": "[email protected]/#iris-hosted-6",
"to": "[email protected]/!iris-hosted-6-rti1lbrg",
"metadata": {
"#command.uri": "lime://[email protected]/ticket/bd7690b2-3711-4d6b-9fec-017628f48edb",
"uber-trace-id": "b9d4474f3026e67e%3Abcd479dc9489418b%3Ab9d4474f3026e67e%3A1"
}
}


  1. Veja que no retorno anterior, há dois valores que iremos utilizar como intervalo de busca além do customerIdentity:




  • storageDate: data de abertura do ticket


  • closeDate: data de fechamento do ticket




  1. Adiante utilizaremos o endpoint: Blip Docs | API Reference




  2. Neste endpoint utilizaremos o seguinte body, como início para iterar, neste body iremos buscar as próximas 100 mensagens do customerIdentity a partir da data que o ticket foi criado. Obs: Substitua os valores {customerIdentity} e {storageDate} com seus respectivos valores.




{  
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{customerIdentity}?$take=100&storageDate={storageDate}&direction=asc"
}


  1. Seguindo a lógica anterior, para buscar mais de 100, execute a requisição com o body abaixo, sempre substituindo o lastMessageId com o id da última mensagem recuperada e o lastMessageStorageDate com o storageDate da última mensagem recuperada.

    Faça até que não haja nenhuma mensagem onde o storageDate é maior que closeDate ou o retorno seja vazio.


   {  
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{customerIdentity}?$take=100&messageId={lastMessageId}&storageDate={lastMessageStorageDate}&direction=asc"
}

Conseguiu entender? 🤔

Consegui entender sim, obrigado.


Irei testar aqui.

Reputação 7
Crachá +1

Depende da usabilidade, mas eu uso a requisição:


POST https://http.msging.net/commands HTTP/1.1
Content-Type: application/json
Authorization: Key {YOUR_TOKEN}

{
"id": "{{random.guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tickets/{{input.content@id}}/messages"
}

Onde a variável {{input.content@id}} é o ID do Ticket, conforme orientado pelo @caiof no 1º tópico.


A partir daí, eu consigo TODAS as mensagens (não só o do chat) daquela conversa do meu cliente com o BOT. Após receber o retorno da requisição, eu trato as mensagens através de um script, selecionando quais eu quero e quais não quero, enfim… o resultado é um histórico de conversa que eu insiro no meu ITSM, fica mais ou menos isso:


Segue outra forma de fazer 😉 hehe

Reputação 7

Bom dia @GabrielPetrone, pode me ajudar na coleta desses dados de histórico de conversas.

Reputação 7
Crachá +1

Opa, posso tentar sim!


Basicamente é fazer conforme o Caio e eu escrevemos aí em cima, mas conte-nos mais um pouco sobre o que você precisa exatamente…

Reputação 7
Crachá +1

Então, eu usei aquela API que passei acima, você chegou a dar uma olhada nela?


Além disso, você sabe javascript?

Reputação 7
Crachá +1

Poxa hein! 😦

Mas a API você conseguiu conectar e tirar um resultado?


Infelizmente esse código não foi criado por mim e não recebi autorização para compartilhá-lo com a comunidade 😦 Também não sei muito sobre script e esse foi bem avançado mesmo (pra mim pelo menos). Quem sabe alguém aqui consegue dar uma mão pra gente montar um modelo.


Inclusive, isso poderia ser um dos apoios dos devs né @Bia o que acha de montarmos um template de chat history para integração e disponibilizarmos pra comunidade? hehe

Reputação 7

A API consigo ter resultados.

Reputação 7

Boooa, @GabrielPetrone!


Vamos trabalhar nisso com os devs do lado de cá e podemos disponibilizar esse tipo de conteúdo tanto no Help Center, quanto aqui no fórum, na sessão Central Blip. Inclusive, tá rolando uma votação importante lá (apesar da tentativa frustrada de fixar o tópico ☹) . Rola de ajudar a gente participando? O link é esse aqui: Tracking Automático

Reputação 7
Crachá +1

Aeeeee!! Muito bom Bia, obrigado pelo empenho e help de sempre!


É pra já, ontem tentei votar mas falhou 🙈 haha!

Realizei alguns testes, porém ainda não consigo receber histórico de nenhum ticket.


Eu consigo pegar os tickets fechados de um usuário em especifico, porém a partir desses tickets tanto via thread quando ticket/messages não retorna nada.


Últimos tickets fechados de um usuário:



Resultado, sem nenuhma mensagem de retorno:



O acesso e requisições eu faço tudo a partir de um subbot dentro de um router, não sei se isso interfere em algo, além do usuário ter um id via tunnel.

Reputação 5

@Adilson_Torres_Grego,


Realmente tem um furo no tutorial 😦

Seguindo os passos anteriores só ira funcionar caso o contexto do roteador no bot esteja desligado. 😅


Mas não se preocupe adaptei o tutorial para casos onde o contexto esteja ligado, basicamente será necessário realizar mais um passo para obter as mensagens 💁🏿‍♂️


(Funciona para contexto ligado)



  1. Busque as informações do ticket utilizando o endpoint https://docs.blip.ai/?http#get-a-ticket no subbot de atendimento (chave do subbot)

    Veja um exemplo de retorno:


    {
"type": "application/vnd.iris.ticket+json",
"resource": {
"id": "bd7690b2-3711-4d6b-9fec-017628f48edb",
"sequentialId": 1,
"ownerIdentity": "[email protected]",
"customerIdentity": "[email protected]",
"customerDomain": "tunnel.msging.net",
"provider": "Lime",
"status": "ClosedClient",
"storageDate": "2020-12-03T14:14:44.700Z",
"closeDate": "2020-12-03T14:15:50.570Z",
"statusDate": "2020-12-03T14:15:50.570Z",
"externalId": "bd7690b2-3711-4d6b-9fec-017628f48edb",
"rating": 0,
"team": "Default",
"unreadMessages": 0,
"closed": true,
"closedBy": "[email protected]",
"priority": 0
},
"method": "get",
"status": "success",
"id": "73df280d-c9d7-459e-bb58-242798be0823",
"from": "[email protected]/#iris-hosted-6",
"to": "[email protected]/!iris-hosted-6-rti1lbrg",
"metadata": {
"#command.uri": "lime://[email protected]/ticket/bd7690b2-3711-4d6b-9fec-017628f48edb",
"uber-trace-id": "b9d4474f3026e67e%3Abcd479dc9489418b%3Ab9d4474f3026e67e%3A1"
}
}


  1. Veja que no retorno anterior, há dois valores que iremos utilizar como intervalo de busca além do customerIdentity:




  • storageDate: data de abertura do ticket


  • closeDate: data de fechamento do ticket



  1. Utilize o endpoint Get a tunnel info para buscar o contato originador do tunnel no subbot de atendimento (key do subbot), após enviar o comando salve o valor do originator, substitua a variável {tunnelId} pelo valor do customerIdentity, veja um exemplo do comando abaixo:


{  
"id": "{{$guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tunnels/{tunnelId}"
}

Veja o retorno deste comando:


{
"type": "application/vnd.iris.tunnel+json",
"resource": {
"owner": "[email protected]",
"originator": "[email protected]",
"destination": "[email protected]"
},
"method": "get",
"status": "success",
"id": "4834e606-da60-4c2a-a82f-a27be81cd7ac",
"from": "[email protected]/#iris-hosted-6",
"to": "[email protected]/!iris-hosted-6-titub06b",
"metadata": {
"#command.uri": "lime://[email protected]/tunnels/[email protected]",
"uber-trace-id": "171974c7d90892b7%3A65f4e241fbfd812d%3A171974c7d90892b7%3A1"
}
}



  1. Adiante utilizaremos o endpoint: Blip Docs | API Reference buscando mensagens no router (key do roteador).




  2. Neste endpoint utilizaremos o seguinte body, como início para iterar, neste body iremos buscar as próximas 100 mensagens do originator no roteador (key do roteador) a partir da data que o ticket foi criado. Obs: Substitua os valores {originator} e {storageDate} com seus respectivos valores.




{  
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{originator}?$take=100&storageDate={storageDate}&direction=asc"
}


  1. Seguindo a lógica anterior, para buscar mais de 100, execute a requisição com o body abaixo, sempre substituindo o lastMessageId com o id da última mensagem recuperada e o lastMessageStorageDate com o storageDate da última mensagem recuperada.

    Faça até que não haja nenhuma mensagem onde o storageDate é maior que closeDate ou o retorno seja vazio.


   {  
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{originator}?$take=100&messageId={lastMessageId}&storageDate={lastMessageStorageDate}&direction=asc"
}

Consegui te explicar bem? 🤔

Bom dia,


Entendi sim! Agora consigo pegar as mensagens, obrigado.

Este tópico foi fechado automaticamente 7 dias depois da úlima resposta. Novas respostas não são mais permitidas.

Comente