Skip to main content

Necessito vincular as mensagens de threads aos seus devidos tickets mas estou confuso como fazer isso, eu tentei usar o end point /tickets/ID_TICKET/messages mas ele não parece estar funcionando o skip, não consigo paginar.

Necessito vincular as mensagens de threads aos seus devidos tickets mas estou confuso como fazer isso, eu tentei usar o end point /tickets/ID_TICKET/messages mas ele não parece estar funcionando o skip, não consigo paginar.

Olá @Roger Amaro tudo bem ? 

 

Esse end point só pega o histórico de um ticket você esta juntando tickets de um mesmo contato ? 

 

Poderia no enviar a request de como está fazendo isso ? 


Necessito vincular as mensagens de threads aos seus devidos tickets mas estou confuso como fazer isso, eu tentei usar o end point /tickets/ID_TICKET/messages mas ele não parece estar funcionando o skip, não consigo paginar.

Olá @Roger Amaro tudo bem ? 

 

Esse end point só pega o histórico de um ticket você esta juntando tickets de um mesmo contato ? 

 

Poderia no enviar a request de como está fazendo isso ? 

Sim, são do mesmo contato, estou tentando pegar as mensagens no threads que estejam no intervalo de abertura e fechamento do ticket para aquele usuário para fazer o vínculo entre mensagens da thread e o ticket, porém o filtro de data não funciona, e como o endpoint da thread não tem skip se o ticket tiver mais de 100 mensagens acho que não conseguiria paginar 

"/threads/<USER_IDENTITY>@wa.gw.msging.net?$take=100&filter=(lastmessagedate%20ge%20datetimeoffset'2024-09-11T00%3A11%3A53'%20and%20lastmessagedate%20le%20datetimeoffset'2024-09-12T18%3A11%3A56')"


@Roger Amaro a parâmetro skip realmente não funciona nesse endpoint.

Você pode paginar por Data ou/e ID de mensagem.

Ex

{
"id": "IDALEATORIO",
"method": "get",
"uri": "/threads/[email protected]?refreshExpiredMedia=false&$take=100"
}

 

1 - Percorra o retorno dessa requisição até a última mensagem, capture a data

    "date": "2024-09-09T14:31:28.719Z",

 

2 - em seguida faça outra requisição passando a data na URI no parâmetro “storageDate

{
"id": "IDALEATORIO",
"method": "get",
"uri": "/threads/[email protected]?refreshExpiredMedia=false&$take=100&storageDate=2024-09-09T14:31:28.719Z"
}

 

Faça esse looping de paginação até as threads finalizar 

Também é possível usar essa mesma paginação com o parâmetromessageId’ passando o id da mensagem no parametro

 

 

{
"id": "IDALEATORIO",
"method": "get",
"uri": "/threads/[email protected]?refreshExpiredMedia=false&$take=100&messageId=917e579e-9931-4079-8a8f-aa4f0db1be77"
}

 


Olhando sua necessidade, verifica esse endpoint abaixo, ele filtra apenas as mensagens trocadas dentro do ticket

 

{
"id": "{{$guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tickets/{ticketId}/messages?attendanceTranscriptionOnly=true&getFromOwnerIfTunnel=true"
}

 


Olhando sua necessidade, verifica esse endpoint abaixo, ele filtra apenas as mensagens trocadas dentro do ticket

 

{
"id": "{{$guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tickets/{ticketId}/messages?attendanceTranscriptionOnly=true&getFromOwnerIfTunnel=true"
}

 

pensei nesse endpoint, mas ela só retorna 100 e o a paginação não funciona, se o ticket tiver mais de 100 mensagens eu não consigo recuperar.


Olhando sua necessidade, verifica esse endpoint abaixo, ele filtra apenas as mensagens trocadas dentro do ticket

 

{
"id": "{{$guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tickets/{ticketId}/messages?attendanceTranscriptionOnly=true&getFromOwnerIfTunnel=true"
}

 

pensei nesse endpoint, mas ela só retorna 100 e o a paginação não funciona, se o ticket tiver mais de 100 mensagens eu não consigo recuperar.

 

Acho que está se confundindo, essa chamada não tem na documentação, ela foi criado depois e o bacana é que pega todas as mensagens sem ficar limitado a 100, ou seja, sem precisar paginar. Fiz um teste passando de 100 mensagens e olha o retorno na API

 

Retornou todas as 168 mensagens sem precisar usar skip, take e etc. 

 


Olhando sua necessidade, verifica esse endpoint abaixo, ele filtra apenas as mensagens trocadas dentro do ticket

 

{
"id": "{{$guid}}",
"to": "[email protected]",
"method": "get",
"uri": "/tickets/{ticketId}/messages?attendanceTranscriptionOnly=true&getFromOwnerIfTunnel=true"
}

 

pensei nesse endpoint, mas ela só retorna 100 e o a paginação não funciona, se o ticket tiver mais de 100 mensagens eu não consigo recuperar.

 

Acho que está se confundindo, essa chamada não tem na documentação, ela foi criado depois e o bacana é que pega todas as mensagens sem ficar limitado a 100, ou seja, sem precisar paginar. Fiz um teste passando de 100 mensagens e olha o retorno na API

 

Retornou todas as 168 mensagens sem precisar usar skip, take e etc. 

 

oque o attendanceTranscriptionOnly=true faz? não encontrei na documentação, tem casos que uso este parâmetro e não retorna nada, a para o mesmo ticket sem o parâmetro me retorna mensagens


attendanceTranscriptionOnly=true é um parâmetro que foi construído para resolver um problema que a API de tickets tem, resolve a paginação e mensagens que vinham a mais.


Comente