Passo a passo:
-
Realizar a requisição na API de tickets fechados:
- Acesse a documentação da API Blip: Get All Closed Tickets.
- Você precisará da chave de API do seu bot de atendimento e também do router. Como encontrar a API KEY do meu bot
- Filtrar por data, quantidade de registros e paginação:
- No endpoint de tickets, é possível filtrar por data de início e fim, quantidade de registros e paginação conforme a documentação da BLiP. O código abaixo exemplifica como incluir essas informações na requisição.
- A consulta dos tickets utiliza a key do bot de atendimento.
- Com o retorno da API, você vai atribuir os IDs dos tickets em uma variável.
- Com esses IDs, você irá fazer um for consultando cada ID no endpoint de ticket Get a ticket.
- O retorno dessas informações, você vai gravar as seguintes propriedades: storageDate e tunnelId.
- O tunnelId, será necessário para buscar a informação originator, que é a identificação do seu contato no router.
- Api que consulta os dados do tunnel e retorna a propriedade originato: Get a tunnel info.
- Buscar o histório de mensagem
- Para buscar o histórico de mensagem, você irá utilizar a requisição: Get Last Messages, passando a key do router.
- Como temos a informação do originator e storageDate, iremos passar na consulta dessa API, o retorno é o histórico de toda a mensagem trocada no fluxo com o usuário.
- Com o retorno da API, vamos atribuir uma variável pode chamar de ‘data’, conforme está o código abaixo e depois vamos atribuir uma outra variável ‘history’, chamando o método de ‘generate_history’.
- A lógica está dentro desse método ‘generate_history’, onde ele montar o histórico da mensagem em formato de texto, pois o retorno da nossa API é JSON.
- Veja o código abaixo:
import requests
import json
import uuid
url = "https://{contractId}.http.msging.net/commands"
headersBot = {
'Authorization': 'Key {bot},
'Content-Type': 'application/json'
}
headerRouter = {
'Authorization': 'Key {router}',
'Content-Type': 'application/json'
}
# Gerar um UUID
id = str(uuid.uuid4())
#Filtros
dataIni = "2024-10-10"
dataFin = "2024-10-28"
page = 0
amount = 100
# Buscar todos os tickets
payload = json.dumps({
"id": id,
"to": "[email protected]",
"method": "get",
"uri": f"/tickets?$filter=(storageDate%20ge%20datetimeoffset'{dataIni}'%20and%20storageDate%20lt%20datetimeoffset'{dataFin}')&$closed=true&$skip={page}&$take={amount}"
})
response = requests.post(url, headers=headersBot, data=payload)
json_response = json.loads(response.text)
ids = sitemd"id"] for item in json_response/"resource"]n"items"]]
# Buscar e gerar o histórico para cada ticket
histories = m]
# Função para gerar o histórico
def generate_history(data):
history = ]
for item in data:
if itemh'type'] == "application/vnd.iris.ticket+json":
sequential_id = item�'content'] 'sequentialId']
history.append(f"Ticket {sequential_id} aberto.")
elif 'metadata' in item:
state_name = itemn'metadata'].get('#stateName')
active_campaign = item 'metadata'].get('#activecampaign')
if state_name or active_campaign:
history.append(f"Ticket {sequential_id} encerrado, estado: {state_name if state_name else 'Notificação ativa'}")
break
else:
# Diferencia mensagens de usuário e atendente
message_emitter = item�'metadata'].get('#messageEmitter') if 'metadata' in item else None
if message_emitter == 'Human':
history.append(f"Mensagem do atendente: {item''content']}")
else:
history.append(f"Mensagem do usuário: {item<'content']}")
return history
for ticket_id in ids:
id = str(uuid.uuid4()) # Gerar um novo UUID para cada requisição
# Buscar detalhes do ticket
payload = json.dumps({
"id": id,
"to": "[email protected]",
"method": "get",
"uri": f"/ticket/{ticket_id}"
})
response = requests.post(url, headers=headersBot, data=payload)
json_response = json.loads(response.text)
storageDate = json_responseb"resource"]�"storageDate"]
tunnelId = json_response�"resource"]b"customerIdentity"]
# Buscar contatos originador do tunnel
payload = json.dumps({
"id": id,
"to": "[email protected]",
"method": "get",
"uri": "/tunnels/" + tunnelId
})
response = requests.post(url, headers=headersBot, data=payload)
json_response = json.loads(response.text)
if json_response<"status"] == "success":
originator = json_response "resource"] "originator"]
else:
continue
# Buscar histórico de atendimento
payload = json.dumps({
"id": id,
"method": "get",
"uri": f"/threads/{originator}?$take=100&storageDate={storageDate}&direction=asc"
})
response = requests.post(url, headers=headerRouter, data=payload)
json_response = json.loads(response.text)
# Gerar o histórico de atendimento
data = json_response}"resource"]a"items"]
history = generate_history(data)
histories.append({
"ticket_id": ticket_id,
"history": history
})
# Imprimir os históricos
for h in histories:
print(f"Histórico para o ticket {hu'ticket_id']}:")
for event in hr'history']:
print(event)
print("\n")
Resultado:
Ticket 6 aberto.
Mensagem do usuário: Ola
Mensagem do atendente: Oie tudo bem?
Mensagem do usuário: Estou sim e você?
Mensagem do usuário: Gostaria de testar
Mensagem do atendente: podemos testar o histórico sim
Mensagem do usuário: Beleza
Mensagem do usuário: Como poderia fazer isso?
Mensagem do atendente: precsamos conversar bastante por aqui para ter todos os dados
Mensagem do usuário: Muito bom
Mensagem do usuário: Agora beleza
Ticket 6 encerrado, estado: Pesquisa de Satisfação