# Eventos

## **Objetivo** <a href="#d21a2652-b522-40c2-a08e-2e37e41d0535" id="d21a2652-b522-40c2-a08e-2e37e41d0535"></a>

&#x20;A API de Eventos permite consultar os eventos disparados nos atendimentos de um determinado Assistente do Zenvia NLU.

## **API de eventos**

Permite consultar os eventos disparados nos atendimentos de um determinado Assistente do Zenvia NLU.

### **Request**

&#x20;**Endpoint:** POST `https://api.altubots.com/events/<instancia>`

**Header:** `x-api-key: <token>`

**Body template:**

```
{
    "filters": {
       "assistantId": "ID do assistente",
       "identifier": "Identificador do contato",
       "contactId": "ID do atendimento",
       "environment": "Ambiente (dev, homol ou prod)",
       "externalId": "ID do sistema externo quando o evento é relativo a uma integração, por exemplo",
       "eventName": "Nome (identificador) do evento",
       "startDate": "Início do período da consulta (Y-M-d H:m:s)",
       "endDate": "Fim do período da consulta (Y-M-d H:m:s)",
       "limit": "Quantidade de resultados por página", //Default: 100 - max: 1000
       "sort": "Define a ordem de retorno sendo ASC|DESC - o padrão é DESC" 
    },
    "pagination": "Hash para consultar a próxima página"
}
```

### Response

### **Status 200 (OK - Eventos encontrados)**

**Body (exemplo):**

```
{
	"events": [
		...
		{
			"id": 13213,
			"assistantId": 1,
			"channel": "whatsapp"
			"contactId": 16267,
			"externalId": null,
			"eventId": 12,
			"eventName": "transbordo",
			"extra1": null,
			"extra2": null,
			"details": {
				"cpf": "12345678909",
				"skill": "assistencia_tecnica"
			},
			"date": "2020-12-04T14:53:11"
		},
		...
	],
	"resultCount": 150,
	"pagination": "Hash para consultar a próxima página"
}
```

&#x20;**Atributos de um evento:**

* **id:** ID único do evento
* **assistantId:** Assistente em que o evento foi gerado
* **channel:** canal do atendimento
* **contactId:** Atendimento em que o evento foi gerado
* **externalId:** ID do sistema externo, caso o evento seja relacionado a uma integração, por exemplo.
* **eventId:** ID do tipo do evento
* **eventName:** Identificador do tipo do evento
* **extra1:** Atributo extra 1.
* **extra2:** Atributo extra 2.
* **details:** Objeto que contém todos os dados referentes ao evento. Esse objeto é flexível e os dados podem variar de evento para evento.
* **date:** Data em que o evento foi disparado (UTC).

### Status code 400 (Bad Request) <a href="#id-7ea508fe-1cf0-4088-aba1-12569f3fb400" id="id-7ea508fe-1cf0-4088-aba1-12569f3fb400"></a>

**Body:**

```
{
	"status": "error",
	"message": "Bad request",
	"invalidParams": [
		...
	]
}
```

### Status code 401 (Unauthorized) <a href="#id-5bfcb2ea-ff80-4541-a8c5-a2d29b8dedce" id="id-5bfcb2ea-ff80-4541-a8c5-a2d29b8dedce"></a>

**Body:**

```
{
	"status": "error",
	"message": "Unauthorized"
}
```

### **Status code 404 (Not Found - Eventos não encontrados)** <a href="#id-26c7fc2b-b285-4146-b25d-104dae4dccf3" id="id-26c7fc2b-b285-4146-b25d-104dae4dccf3"></a>

**Body:**

```
{
	"status": "ok",
	"events": [],
	"resultCount": 0
}
```

### Status code 500 (Internal Server Error) <a href="#f1779128-4626-4125-afa5-baf33e403e9d" id="f1779128-4626-4125-afa5-baf33e403e9d"></a>

**Body:**

```
{
	"status": "error",
	"message": "Unexpected error"
}
```

## &#x20;Observações <a href="#id-77d1fd84-353c-469e-9522-07ce5f3659d8" id="id-77d1fd84-353c-469e-9522-07ce5f3659d8"></a>

* Máximo de resultados por consulta: 1000
  * Utilizar `pagination` para buscar páginas seguintes
* O resultado sempre será ordenado pelos eventos mais recentes
* Os filtros não são obrigatórios. Caso nenhum for passado, o resultado trará os eventos mais recentes da instância
* Limite de 50000 consultas por dia e 10 por segundo

## **Dados dos atendimentos na API de Eventos**

A API de eventos agora tem um campo extra com informações sobre o atendimento:

```
"flags":{
        "includeContactsData": true
    }
```

Por padrão, esse campo recebe o valor de `false`, mas ao incluí-lo na chamada da API o retorno terá um campo com dados como ID, nome, CPF, e-mail e phone atrelados aos eventos.

Exemplo de resposta parcial da api com o campo igual a `true`:

```
{
            "id": 1232,
            "assistantId": 29,
            "contactId": 730,
            "externalId": "ckhzb8v2p003x0un3cs7basdx",
            "eventId": 16,
            "eventName": "saudacoes",
            "extra1": null,
            "extra2": null,
            "details": {
                "mensagem_bot": "ola"
            },
            "date": "2020-12-04T14:53:11",
            "contact": {
                "id": 730,
                "name": null,
                "cpf": null,
                "email": null,
                "phone": null
            }
}
```

{% hint style="info" %}
**Nota:** O campo **`date`** retorna o valor em horário UTC - 3 (Fortaleza).
{% endhint %}

## **API de disparo de eventos**

Permite disparar eventos de api.

![](/files/-MdOwapB868GD34vu7rG)

{% hint style="info" %}
As credenciais a serem usadas são as mesmas que para a api de eventos.
{% endhint %}

Para usar a API, copie o **endpoint** que se encontrará na aba api de disparo de eventos e preencha o **body** com as informações necessárias. Segue um template de exemplo:

```
{
    "assistant_id": <id do assistente>,
    "contact_id": <id do contato>
    "event_name": <nome do evento de api>,
    "extra1": <extra1>,
    "extra2": <extra2>,
    "details": {
           "field1": "<value1>",
           "field2": "<value2>"
       },
    "channel": <channel por onde o atendimento será feito>
}
```

**Atributos:**

* **dcassistant\_id**: id do assistente;
* **contact\_id** **(opcional)**: id do contato (deve ser um id de um contato existente)
* **event\_name**: nome do evento (deve ser Evento de api e deve existir)
* **extra1 (opcional)**;
* **extra2 (opcional)**;
* **details (opcional)**: limite de 1024 caracteres e deve ser um objeto. Qualquer tipo diferente vai ser salvo como {}
* **channel**
  * Se o contact\_id estiver presente, ele se torna opcional
  * Caso não tiver o contact\_id, ele se torna obrigatório
  * Channels aceitos: api, apple, facebook, gbm, rcs, whatsapp, widget, workplace

Na seção de eventos no nó em **builder**, não será possível disparar um evento de apipois ela é reservada apenas para disparo de **evento personalizados**.&#x20;

{% hint style="info" %}
Caso tente utilizar um evento de api, não será disparado e surgirá um **issue** do tipo Evento inválido.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.altu.d1.cx/connect/apis/eventos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
