Respondido

Exportação do Histórico de conversas via API


Olá,


Recentemente nós estamos encarando um problema com os históricos de conversas do BLiP, pois foi informado a mim que depois de um certo período de tempo os dados das conversas são expirados…


Então estamos procurando uma forma de implementar uma plataforma que possa armazenar diariamente os chats do BLiP através da API, como um backup, precisamos dessas informações para dar continuidade em alguns atendimentos.


Vocês conseguem me recomendar alguma plataforma ou serviço que eu possa fazer esse backup com uma boa eficiência? Ou me auxiliar com as requisições HTTP recomendadas para extrair esse tipo de informação…


Desde já agradeço,


Atenciosamente,


Lucas Athayde

icon

Melhor resposta por ErickRos 12 May 2021, 22:29

Veja o original

5 comentários

Olá @Lucas_Athayde, tudo bem?


Não vou entrar no mérito a respeito da plataforma/serviço para realizar os backups, contudo em relação as requisições HTTPs para extrair este tipo de informação segue algumas orientações:


Você pode recuperar o histórico de conversa do seu chatbot através de duas URIs principais:



POST https://your.endpoint/commands



Este request body (corpo da requisição) irá trazer às ultimas threads (histórico da conversa) do bot, se limitando ao valor máximo de 100 threads. Esta requisição não irá trazer a conversa completa de cada contato, mas apenas parte dela.



  • Request body 1


{
"id": "{{$guid}}",
"method": "get",
"uri": "/threads"
}

Caso você deseje a conversa de um contato específico, você precisa passar a “identidade” do usuário (representada pela variável do Blip contact.identiy) como parte integrante da uri, da seguinte forma:



  • Request body 2


{
"id": "{{$guid}}",
"method": "get",
"uri": "/threads/{{user_identity}}"
}

Realizando a requisição com o segundo corpo acima apresentado você obterá o histórico da conversa associado ao contato X, por exemplo.


OBS : Não esqueça de adicionar à requisição o header Authorization cujo valor pode ser encontrado nas informações de conexão do seu bot.


Maiores informações sobre as referidas requisições podem ser encontradas aqui.

Caro Erick, boa noite.


Estou usando os dois requests sugeridos acima, porém, minha dúvida é:



  • Pelo método “uri”: “/threads” ele me traz as threads e há uma propriedade identity que ao meu entendimento seria o identificador do contato;

  • Porém seu eu uso este identity para o método “uri”: “/threads/{{user_identity}}” ele não me traz nenhum item da conversa;


Estou fazendo correto, ou devo pegar o user_identity de outro lugar?

Sim, em meu entendimento sim. Essa propriedade identity é de fato o identificador do contato. Se certifique que ele está digitado corretamente, pois se o contato de fato conversou com o bot, esses dois requests deveriam ser suficientes (não vejo uma explicação plausível para este caso).

Olá Erick, bom dia. Muito obrigado pelo retorno.


Vou colocar abaixo os retornos que a API está me trazendo:


Request para


/threads?refreshExpiredMedia=true&$take=100&messageDate=2021-10-15


Me traz como resposta:


 {
"type": "application/vnd.lime.collection+json",
"resource": {
"itemType": "application/vnd.iris.thread+json",
"items": [
...
{
"ownerIdentity": "[email protected]",
"identity": "[email protected]",
"lastMessage": {
"id": "31363258-886c-4c7a-8eef-5ff6617e7718",
"direction": "sent",
"type": "text/plain",
"content": "Sempre que precisar, é só me chamar! 😉",
"date": "2021-10-14T14:45:35.018Z"
},
"unreadMessages": 0
},
...
]
},
"method": "get",
"status": "success",
"id": "24bcc1a8-e60b-4bdc-a535-050fef4e1f41",
"from": "[email protected]/#iris-hosted-4",
"to": "[email protected]/!iris-hosted-4-txihouxb",
"metadata": {
"#command.uri": "lime://[email protected]/threads?refreshExpiredMedia=true&$take=100&messageDate=2021-10-15",
"uber-trace-id": "6981b8a1e489906c%3A9a96aab88160d439%3A6981b8a1e489906c%3A1"
}
}

Se eu pego o identity do item selecionado e faço o request para:


/tickets/[email protected]?refreshExpiredMedia=true&$take=100


Recebo o seguinte retorno


{
"method": "get",
"status": "failure",
"reason": {
"code": 62,
"description": "There's no processor available for requested resource type"
},
"id": "46a8c191-d54f-44f3-aeaa-72453f4862e0",
"from": "[email protected]/#iris-hosted-4",
"to": "[email protected]/!iris-hosted-4-txihouxb",
"metadata": {
"#command.uri": "lime://[email protected]/tickets/[email protected]?refreshExpiredMedia=true&$take=100&storageDate=2021-07-20T00:00:00.000-03:00&direction=asc",
"uber-trace-id": "865213aa041ba92e%3A15e257870c0fe97c%3A865213aa041ba92e%3A1"
}
}

Ou se eu faço o request para:


/threads/[email protected]?refreshExpiredMedia=true&$take=100

Me retorna as mensagens em branco:


{
"type": "application/vnd.lime.collection+json",
"resource": {
"itemType": "application/vnd.iris.thread-message+json",
"items": []
},
"method": "get",
"status": "success",
"id": "e2c26528-a707-4594-990a-5641e85a147d",
"from": "[email protected]/#iris-hosted-5",
"to": "[email protected]/!iris-hosted-5-txihouxb",
"metadata": {
"#command.uri": "lime://[email protected]/threads/[email protected]?refreshExpiredMedia=true&$take=100",
"uber-trace-id": "f272374af2199a08%3A3799183450c7affb%3Af272374af2199a08%3A1"
}
}

O que poderia estar ocorrendo?


Mais uma vez obrigado pelo apoio.

Reputação 3

estou com o mesmo problema,

alguém tem uma resposta ?

Comente