# Outbound Zenvia

Ao habilitar a API de outbound é gerado um endpoint e um token, que serão utilizados para realizar o envio das mensagens de outbound.

![](https://776911411-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MBjaNm5lB1Yqgih1JCA%2Fuploads%2FW6vhOpUcFHKTTYbMDijz%2FScreen%20Shot%202022-05-19%20at%2017.22.48.png?alt=media\&token=c61074f7-da77-48a2-adf6-8a1529443c2d)

### Request

**Endpoint:**

**POST** <https://outbound.ms.altubots.com/zenvia/\\><slug>/\<id\_integracao>

**Header:**

* **Content-Type:** "application/json"
* **Authorization:** \<altu token>

```
{
    "destination": "numero_whatsapp_destino",
    "templateId": "id_template",
    "context": {
        "status": "aprovado"
    },
    "fields": {
        "<template_chave_1>": "<template_valor_1>",
        "<template_chave_2>": "<template_valor_2>",
        "...": "...",
        "<template_chave_n>": "<template_valor_n>"
    },
    "externalId": "seu_id_mensagem",
    "restartContact": false | true,
    "inactivityTime": 0
}
```

**Atributos:**

* **destination (obrigatório):** o número de WhatsApp que irá receber a mensagem
* **templateId (obrigatório):** o ID do template
* **context (opcional)**: variáveis que serão salvas no contexto do usuário
* **fields (opcional):** os campos disponíveis para serem usados ​​no template. Este atributo deve ser um objeto com chaves e valores
* **externalId (opcional):** identificador único para a mensagem a ser enviada. Este ID será retornado nos status de envio em seu webhook de status
* **restartContact (opcional):** booleano para resetar as variáveis de contexto do usuário
* **inactivityTime (opcional):** tempo em minutos que deve ser passado desde a última interação do usuário com o assistente para que a mensagem seja enviada. Exemplo: Se o usuário está interagindo ou interagiu com assistente há 1 minuto e o tempo de inatividade necessário para mensagem ser enviada é de 2 minutos ("inactivityTime": 2), a mensagem não seria enviada. Caso a interação tivesse ocorrido 3 minutos atrás, a mensagem seria enviada.

### Exemplo

```
{
    "destination": "35988001234",
    "templateId": "3b9c0955-bdd9-00de-4135-6cfb74f5fb2e",
    "fields": {
        "name": "Maria",
        "value": "R$ 1670,00"
    },
    "externalId": "meu_id_1"
}
```

### Response**s**

{% tabs %}
{% tab title="🟢   200" %}
**OK - Mensagem enviada:**

A mensagem foi enviada corretamente para a Zenvia e será encaminhada para o usuário.Body (exemplo):

```
{
    "status": "pending",
    "external_id": "meu_id_1",
    "message_id": 218,
    "contact_id": 874
}
```

* **status:** status da mensagem enviada
* **external\_id:** ID externo da mensagem enviada
* **message\_id:** ID interno da mensagem enviada
* **contact\_id:** ID do atendimento do usuário
  {% endtab %}

{% tab title="🔴   400" %}
**Bad Request:**&#x20;

Um ou mais parâmetros não estão no formato esperado ou os parâmetros obrigatórios não foram preenchidos. Verifique o formato e a obrigatoriedade de todos os parâmetros durante a requisição.Body (exemplo):

```
{
    "status": "error",
    "message": "Invalid destination!"
}
```

{% endtab %}

{% tab title="🔴   401" %}
**Unauthorized:**&#x20;

Não foi possível autorizar a requisição. Verifique se foi definido corretamente o header **Authorization** com valor **altu token**.Body (exemplo):

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

{% endtab %}

{% tab title="🔴   500" %}
**Internal Server Error:**

Houve um erro durante o envio da mensagem.Body (exemplo):

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

{% endtab %}
{% endtabs %}

## Webhook de Status

Para receber os status de mensagens enviadas pela API de outbound, deve se configurar um webhook de status semelhante ao webhook configurado na criação da integração, com o mesmo passo a passo e com as mesmas opções, ajustando:

* **Tipo do evento:** Selecione a opção **Status** para receber os status de mensagens enviadas para o usuário.
* **URL:** URL usada para receber os status de mensagens enviadas para seus clientes. Consulte a URL na plataforma Zenvia NLU, em **Status de Mensagens** da seção Webhooks

## Opção para Rich Notification - HSM

{% hint style="info" %}
Como enviar outbounds "no-hsm"(ou notification), ou seja, não é um template aprovado, pois é uma funcionalidade que somente é utilizável dentro da sessão de 24h do WhatsApp.
{% endhint %}

### Estrutura - Enviar arquivo

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.

{% tabs %}
{% tab title="Modelo" %}

```
{
    "destination": "11999999999",
    "contents": [
        {
            "type": "file",\\tipo do notification
            "fileUrl": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_640_3MG.mp4",\\arquivo a ser enviado t
            "fileMimeType": "video/mp4",\\extensão do arquivo enviado
            "fileCaption": "Our pic :)",\\Texto que vai abaixo do vídeo na mensagem
            "fileName": "example.png"\\nome do arquivo enviado - não mudar a extensão
        }
    ]
}
```

{% endtab %}

{% tab title="Visualização" %}
![](https://776911411-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MeZLFSm3Fg3dKuXgtf_%2F-Me_5dui7jWV8h45b2wn%2FCaptura%20de%20Tela%202021-07-13%20a_s%2015.38.25.png?alt=media\&token=eef66d4a-e81f-47f6-ad2d-c6cfbef38aa8)
{% endtab %}
{% endtabs %}

Tamanhos de arquivos:

| **Media** | **Content Type**                                                                 | **Post-Processing Media Size\*** |
| --------- | -------------------------------------------------------------------------------- | -------------------------------- |
| document  | Any valid MIME type.                                                             | 100 MB                           |
| image     | <p>image/jpeg</p><p>image/png</p>                                                | 5 MB                             |
| sticker   | <p>image/webp</p><p><strong>note</strong>: Animated sticker is not supported</p> | 100 KB                           |
| audio     |                                                                                  | 16 MB                            |
| video     |                                                                                  | 16 MB                            |

### **Estrutura - Botoes**

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.

{% tabs %}
{% tab title="Modelo" %}

```
{
    "destination": "11999999999",
    "contents": [
        {
            "type": "button",
            "header": {\\Header é opcional
                "type": "file",
                "fileUrl": "https://prime.altubots.com/chats/dev/cesar/07db4c9e4559050116d38e660548749a/uploads/3660b5fe-4c62-8979-2619-761f234892bf/20200909165426883_gato.jpg"\\URL do arquivo a ser enviado
            },
            "body": "Gostaria de agendar o seu treinamento sobre a plataforma?",\\texto da pergunta 
            "footer": "Selecione uma das opcões abaixo:",\\Texto mais claro abaixo do texto da pergunta
            "buttons": [\\botoes - limitado a 3 botoes
                {
                    "id": "Agendar",\\Input que chegará no bot
                    "title": "Agendar treinamento"\\Texto exibido no WhatsApp
                },
                {
                    "id": "encerrar",
                    "title": "Encerrar"
                },
                {
                    "id": "reiniciar",
                    "title": "Reiniciar"
                }
            ]
        }
    ]
}
```

{% endtab %}

{% tab title="Visualização" %}
![](https://776911411-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MeZLFSm3Fg3dKuXgtf_%2F-Me_C21hEqEeiMJ-AxcS%2FCaptura%20de%20Tela%202021-07-13%20a_s%2015.39.29.png?alt=media\&token=472a25d6-80be-4393-9b7f-3c97775c0685)
{% endtab %}
{% endtabs %}

## **Estrutura - Lista Modal**

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.

{% tabs %}
{% tab title="Modelo" %}

```
{
    "destination": "11999999999",
    "contents": [
        {
            "type": "list",
            "header": "Menu de Opções",\\Texto maior de titulo da lista(opcional)
            "body": "Para finalizar, selecione o módulo do treinamento você deseja fazer?",\\Texto comum de pergunta da lista(requerido)
            "footer": "Selecione abaixo",\\texto mais claro abaixo do texto comum(opcional)
            "button": "Opções disponíveis",\\Texto do botao que abrirá a lista - limitado a 20 caracteres(requerido)
            "sections": [
                {
                    "title": "Section Title",
                    "rows": [\\Classe dos botões - limitados a 10 botoes
                        {
                            "id": "builder",\\texto recebido no bot (requerido)
                            "title": "Builder",\\texto apresentado no WA(requerido)
                            "description": "Aprenda a programar no Build do ALTU"\\texto de descricao da opcao (opcional)
                        },
                        {
                            "id": "nlu",
                            "title": "NLU",
                            "description": "Aprenda a configurar seu NLU de forma assertiva"
                        },
                        {
                            "id": "builder_nlu",
                            "title": "Builder e NLU",
                            "description": "Aprenda a criar um assistente híbrido completo"
                        }
                    ]
                }
            ]
        }
    ]
}
```

{% endtab %}

{% tab title="Visualização" %}
![](https://776911411-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MeZLFSm3Fg3dKuXgtf_%2F-Me_DmegZDEiviKKo3pG%2Fagdsf.gif?alt=media\&token=a7dc76d2-74c6-4d16-a1d2-d43d08909ad6)
{% endtab %}
{% endtabs %}

### **Estrutura - Localização**

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.

{% tabs %}
{% tab title="Modelo" %}

```
{
    "destination": "11999999999",
    "contents": [
        {
            "type": "location",
            "latitude": -23.54220538772733,
            "longitude": -46.65812552818576,
            "name": "SMARKIO BRASIL",
            "address": "Rua Sergipe, 475 - 5º Andar - Higienópolis, São Paulo - SP, 01243-001",
            "url": "https://www.smarkio.com.br"
        }
    ]
}
```

{% endtab %}

{% tab title="Visualização" %}
![](https://776911411-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MeZLFSm3Fg3dKuXgtf_%2F-Me_EpUgeo9pbqsjgZJH%2FCaptura%20de%20Tela%202021-07-13%20a_s%2015.55.33.png?alt=media\&token=9609f9a8-6ddd-4bd5-a128-14c39ea1edb7)
{% endtab %}
{% endtabs %}
