Objetivo
A API de atendimentos (Contacts) tem por objetivo consultar os atendimentos de uma determinada instância do Zenvia NLU.
Request
POST https://api.altubots.com/contacts/<instancia>
Parameters
Header
x-api-key <token>
Responses
🟢 200: OK OK - Contacts found
{
"contacts": [
...
{
"id": 3213,
"identifier": "52fe68c3-4501-cde1-e6fb-d3cb11d0ad9c",
"assistantId": 1,
"source": "widget",
"externalId": null,
"interactions": 30,
"dateCreated": "2020-06-01"
"finishedAt": "2020-06-03"
"attributes": {
"name": "...",
"email": "...",
...
},
"history": [
{
"time": "2020-06-01T12:45:59.158Z",
"sender": "bot",
"message": [
{
"text": "Olá! Eu sou o assistente virtual.",
"type": "text"
},
{
"text": "O que você deseja?",
"type": "text"
}
]
},
...
]
"events": [
...
{
"id": 13213,
"assistantId": 1,
"contactId": 16267,
"externalId": null,
"eventName": "transbordo",
"eventId": 12,
"extra1": null,
"extra2": null,
"details": {
"cpf": "12345678909",
"skill": "assistencia_tecnica"
},
"date": "2020-06-22 16:38:42"
},
...
]
},
...
]
"resultCount": "150",
"pagination": "Hash para consultar a próxima página"
}
🟠 400: Bad Request
{
"message": "Bad request",
"invalidParams": [
...
]
}
🟠 401: Unauthorized
{
"message": "Unauthorized"
}
🟠 404: Not Found Contacts not found
{
"contacts": [],
"resultCount": 0
}
🔴 500: Internal Server Error
{
"status": "error",
"message": "Unexpected error"
}
Body template
{
"filters": {
"id": "ID do atendimento",
"assistantId": "ID do assistente",
"identifier": "Identifier do contato",
"externalId": "External id do atendimento",
"startDate": "Início do período da consulta (Y-m-d)",
"endDate": "Fim do período da consulta (Y-m-d)",
"source": "Canal de origem do atendimento",
"limit": "Quantidade de resultados por página" //Default: 100 - max: 500
}
"attributes": {
"cpf": "CPF do atendimento",
"phone": "Telefone do atendimento",
"email": "Email do atendimento",
"identification_number": "Extra de identificação",
"identification_number2": "Extra de identificação 2",
"identification_number3": "Extra de identificação 3",
"identification_number4": "Extra de identificação 4"
},
"flags": {
"history": "Boolean para trazer ou não o histórico de mensagens do atendimento", //Default: false
"events": "Boolean para trazer ou não o histórico de eventos do atendimento" //Default: false
},
"pagination": "Hash para consultar a próxima página"
}
Limitações
- Máximo de resultados por consulta: 500
- Utilizar paginação para buscar páginas seguintes
- Consultas que não tenham o
filter id,identifierouphonenão retornarão histórico e eventos - Um fluxo comum de requisições/consultas seria:
- Consultar pelo
assistantId,startDateeendDate - Em cada atendimento encontrado, usar o
idouidentifierpara fazer uma nova consulta com a flaghistory: truepara buscar o histórico daquele atendimento
- Consultar pelo
- Limite de 50000 consultas por dia e 10 por segundo
O pagination é disponibilizado no response da primeira consulta para que você possa referenciá-lo no body da próxima consulta e assim sucessivamente.