Skip to main content

Passo a passo:

  • Realizar a requisição na API de tickets fechados:

  • 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

Nenhum comentário

Comente