@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)
- 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"
}
}
- 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
- 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"
}
}
-
Adiante utilizaremos o endpoint: Blip Docs | API Reference buscando mensagens no router (key do roteador).
-
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"
}
- 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? 🤔