Olá a todos! Estou com dificuldades para conseguir as mensagens de um usuário anterior a 3 meses.
Sempre que busco essas mensagens, os endpoints me retornam vazio.
Temos uma estrutura com 2 bots, 1 roteador e 1 builder para o atendimento.
Vou chamar o builder de bot BU e o roteador de bot RO.
Estou buscando o histórico de uma conversa que ocorreu em 07/02/2024.
Antes de entrar no caso, gostaria também de informar que já procurei exaustivamente aqui no fórum e documentação na documentação da API. Tudo que tentei não funcionou.
Também gostaria de informar, que consigo o históricos das conversas até 3 meses.
E por fim, também gostaria de informar que em vários tópicos aqui do forum o pessoal referencia um link para documentação das /threads (https://docs.blip.ai/#get-last-threads), porém não consigo encontrar isso na documentação atual da blip. Não sei se houve alguma atualização na documentação que removeu, mas não encontro apesar dos endpoints funcionarem.
Bom, então vou começar a história da saga que estou, e tudo que tentei.
Problema 1: Encontrar o ticket
Dentro do nosso HelpDesk, o pessoal documenta os atendimentos feitos na Blip tirando prints, então esse ticket está printado, mostrando sua existência, como pode ser visto aqui (esse é bot BU):
A primeira coisa que estou achando estranho, é que não consigo encontrar esse ticket em especifico.
Para tentar encontrar esse ticket, fiz as requisições paginadas (do...while até que a resposta venha com array vazio) para o endpoint /tickets utilizando a seguinte request:
{
"url": "***/commands",
"headers": {
"Authorization": "{{BU_KEY}}"
},
"body": {
"id": "{{$guid}}",
"to": "[email protected]",
"uri": "/tickets?$take=100&$skip={{skip}}",
"method": "get"
}
}
Porém, esse ticket em especifico (sequentialId) não aparece nessa request
Também tentei a request, utilizando o contactId (tunnel), e não encontra o ticket
{
"url": "***/commands",
"headers": {
"Authorization": "{{BU_KEY}}"
},
"body": {
"id": "{{$guid}}",
"to": "[email protected]",
"uri": "/tickets?$filter=(CustomerIdentity%20eq%20'[email protected]')"
"method": "get"
}
}
{
"type": "application/vnd.lime.collection+json",
"resource": {
"itemType": "application/vnd.iris.ticket+json",
"items": ]
},
"method": "get",
"status": "success",
"id": "4699f29b-fbb4-4b65-bb4e-1202e7f7da44",
"from": "[email protected]/!msging-application-desk-84bd8dc56b-xnw44",
"to": "*******[email protected]/!msging-server-n9rhw-d53nycw4",
"metadata": {
"traceparent": "00-3ed560fa00e43bacfae800d2845d6fbd-3ece355fbfb87111-01",
"#command.uri": "lime://*******[email protected]/tickets?$filter=(CustomerIdentity%20eq%20'[email protected]')"
}
}
E esse ticket pode ser encontrado na exportação de tickets do mês, que vem por e-mail via CSV:
"226339";"[email protected]";"*******@blip.ai";"ClosedAttendant";"2024-02-08 08:15:44 -03:00";"";"2024-02-08 14:29:14 -03:00";"****- Atendimento geral";"True";""""Atendimento Geral""]";"0d 00:46:46";"0d 01:41:22";"739.21 s";"";"";"";"";"";"****";"*****"
Por conta disso, todos os próximos passos vou tentar utilizando 2 contatos, esse do ticket e outro de um ticket que foi possível encontrar via API:
Contato desejado: [email protected]
Contato de outro ticket: [email protected]
Segue a request/response desse outro contato
{
"url": "***/commands",
"headers": {
"Authorization": "{{BU_KEY}}"
},
"body": {
"id": "{{$guid}}",
"to": "[email protected]",
"uri": "/tickets?$filter=(CustomerIdentity%20eq%20'[email protected]')"
"method": "get"
}
}
{
"type": "application/vnd.lime.collection+json",
"resource": {
"total": 1,
"itemType": "application/vnd.iris.ticket+json",
"items": t
{
"id": "ea7af050-a340-47db-9fb4-018fb5946c74",
"sequentialId": 310748,
"ownerIdentity": "********[email protected]",
"customerIdentity": "[email protected]",
"customerDomain": "wa.gw.msging.net",
"agentIdentity": "********@blip.ai",
"provider": "Lime",
"status": "ClosedAttendant",
"storageDate": "2024-05-26T15:45:54.290Z",
"openDate": "2024-05-27T12:04:59.360Z",
"closeDate": "2024-05-28T12:42:18.550Z",
"statusDate": "2024-05-28T12:42:18.550Z",
"externalId": "ea7af050-a340-47db-9fb4-018fb5946c74",
"rating": 0,
"team": "********- Tesouraria",
"unreadMessages": 0,
"closed": true,
"closedBy": "********@blip.ai",
"tags":
"Financeiro"
],
"averageAgentResponseTime": 3369.399,
"firstResponseDate": "2024-05-27T13:43:24.910Z",
"priority": 0,
"isAutomaticDistribution": true,
"distributionType": "Redis"
}
]
},
"method": "get",
"status": "success",
"id": "ae6bda3d-4a2b-438c-a466-d9873adde458",
"from": "[email protected]/!msging-application-desk-84bd8dc56b-69999",
"to": "********[email protected]/!msging-server-5kntn-d53nycw4",
"metadata": {
"traceparent": "00-5123026af690938b2afbc2f681628577-6af44024c3ddaaf6-01",
"#command.uri": "lime://********[email protected]/tickets?$filter=(CustomerIdentity%20eq%20'[email protected]')"
}
}
Problema 2: Encontrar as mensagens do contato
Para tentar encontrar as mensagens do contato, tentei tanto na uri /tickets/{ticketId}/messages quanto na uri /threads/{contactId}
Ambas as tentativas, retornam vazio, e tentei de diversas formas possíveis, estas sendo:
Para /tickets/messages utlizando o id do ticket
{
"url": "***/commands",
"headers": {
"Authorization": "{{BU_KEY}}"
},
"body": {
"id": "{{$guid}}",
"to": "[email protected]",
"uri": "/tickets/{ticketId}/messages?getFromOwnerIfTunnel=true&$take=100",
"method": "get"
}
}
Para /threads utilizando o ID do contato (tunnel) - é o que vem do ticket - + chave de api do bot BU
{
"url": "***/commands",
"headers": {
"Authorization": "{{BU_KEY}}"
},
"body": {
"id": "{{$guid}}",
"method": "get"
}
}
{
"urisTentadas": >
"/threads/{tunnelId}",
"/threads/{tunnelId}?getFromOwnerIfTunnel=true",
"/threads/{tunnelId}?getFromOwnerIfTunnel=true&$take=100&direction=asc",
"/threads/{tunnelId}?getFromOwnerIfTunnel=true&$take=100&direction=asc&storageDate={dataStorageDateTicket}",
"/threads/{tunnelId}?getFromOwnerIfTunnel=true&$take=100&direction=asc&messageDate={dataStorageDateTicket}",
]
}
Também vi em um outro tópico
Que tinha a possibilidade de colocar messageDate como parametro, tentei e não funciou também
Para /threads utilizando o ID do contato no bot originador + chave de api do bot RO
Também tentei seguir as instruções conforme o tópico
Pegando o ID do contato através do ID do tunnel e fazendo as requests (como acima) utilizando o ID do contato + chave de API do bot owner, as requests continuam retornando sem nenhuma mensagem...