ALTU
Search…
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.

Request

Endpoint:
POST https://outbound.ms.altubots.com/zenvia/<slug>/<id_integracao>
Header:
  • Content-Type: "application/json"
  • Authorization: <altu token>
1
{
2
"destination": "numero_whatsapp_destino",
3
"templateId": "id_template",
4
"context": {
5
"status": "aprovado"
6
},
7
"fields": {
8
"<template_chave_1>": "<template_valor_1>",
9
"<template_chave_2>": "<template_valor_2>",
10
"...": "...",
11
"<template_chave_n>": "<template_valor_n>"
12
},
13
"externalId": "seu_id_mensagem",
14
"restartContact": false | true,
15
"inactivityTime": 0
16
}
Copied!
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

1
{
2
"destination": "35988001234",
3
"templateId": "3b9c0955-bdd9-00de-4135-6cfb74f5fb2e",
4
"fields": {
5
"name": "Maria",
6
"value": "R$ 1670,00"
7
},
8
"externalId": "meu_id_1"
9
}
Copied!

Responses

🟢 200
🔴 400
🔴 401
🔴 500
OK - Mensagem enviada:
A mensagem foi enviada corretamente para a Zenvia e será encaminhada para o usuário.Body (exemplo):
1
{
2
"status": "pending",
3
"external_id": "meu_id_1",
4
"message_id": 218,
5
"contact_id": 874
6
}
Copied!
  • 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
Bad Request:
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):
1
{
2
"status": "error",
3
"message": "Invalid destination!"
4
}
Copied!
Unauthorized:
Não foi possível autorizar a requisição. Verifique se foi definido corretamente o header Authorization com valor altu token.Body (exemplo):
1
{
2
"status": "error",
3
"message": "Unauthorized"
4
}
Copied!
Internal Server Error:
Houve um erro durante o envio da mensagem.Body (exemplo):
1
{
2
"status": "error",
3
"message": "Unexpected error"
4
}
Copied!

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 ALTU, em Status de Mensagens da seção Webhooks

Opção para Rich Notification - HSM

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.

Estrutura - Enviar arquivo

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
Modelo
Visualização
1
{
2
"destination": "11999999999",
3
"contents": [
4
{
5
"type": "file",\\tipo do notification
6
"fileUrl": "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_640_3MG.mp4",\\arquivo a ser enviado t
7
"fileMimeType": "video/mp4",\\extensão do arquivo enviado
8
"fileCaption": "Our pic :)",\\Texto que vai abaixo do vídeo na mensagem
9
"fileName": "example.png"\\nome do arquivo enviado - não mudar a extensão
10
}
11
]
12
}
Copied!
Tamanhos de arquivos:
Media
Content Type
Post-Processing Media Size*
document
Any valid MIME type.
100 MB
image
image/jpeg
image/png
5 MB
sticker
image/webp
note: Animated sticker is not supported
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.
Modelo
Visualização
1
{
2
"destination": "11999999999",
3
"contents": [
4
{
5
"type": "button",
6
"header": {\\Header é opcional
7
"type": "file",
8
"fileUrl": "https://prime.altubots.com/chats/dev/cesar/07db4c9e4559050116d38e660548749a/uploads/3660b5fe-4c62-8979-2619-761f234892bf/20200909165426883_gato.jpg"\\URL do arquivo a ser enviado
9
},
10
"body": "Gostaria de agendar o seu treinamento sobre a plataforma?",\\texto da pergunta
11
"footer": "Selecione uma das opcões abaixo:",\\Texto mais claro abaixo do texto da pergunta
12
"buttons": [\\botoes - limitado a 3 botoes
13
{
14
"id": "Agendar",\\Input que chegará no bot
15
"title": "Agendar treinamento"\\Texto exibido no WhatsApp
16
},
17
{
18
"id": "encerrar",
19
"title": "Encerrar"
20
},
21
{
22
"id": "reiniciar",
23
"title": "Reiniciar"
24
}
25
]
26
}
27
]
28
}
Copied!

Estrutura - Lista Modal

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
Modelo
Visualização
1
{
2
"destination": "11999999999",
3
"contents": [
4
{
5
"type": "list",
6
"header": "Menu de Opções",\\Texto maior de titulo da lista(opcional)
7
"body": "Para finalizar, selecione o módulo do treinamento você deseja fazer?",\\Texto comum de pergunta da lista(requerido)
8
"footer": "Selecione abaixo",\\texto mais claro abaixo do texto comum(opcional)
9
"button": "Opções disponíveis",\\Texto do botao que abrirá a lista - limitado a 20 caracteres(requerido)
10
"sections": [
11
{
12
"title": "Section Title",
13
"rows": [\\Classe dos botões - limitados a 10 botoes
14
{
15
"id": "builder",\\texto recebido no bot (requerido)
16
"title": "Builder",\\texto apresentado no WA(requerido)
17
"description": "Aprenda a programar no Build do ALTU"\\texto de descricao da opcao (opcional)
18
},
19
{
20
"id": "nlu",
21
"title": "NLU",
22
"description": "Aprenda a configurar seu NLU de forma assertiva"
23
},
24
{
25
"id": "builder_nlu",
26
"title": "Builder e NLU",
27
"description": "Aprenda a criar um assistente híbrido completo"
28
}
29
]
30
}
31
]
32
}
33
]
34
}
Copied!

Estrutura - Localização

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
Modelo
Visualização
1
{
2
"destination": "11999999999",
3
"contents": [
4
{
5
"type": "location",
6
"latitude": -23.54220538772733,
7
"longitude": -46.65812552818576,
8
"name": "SMARKIO BRASIL",
9
"address": "Rua Sergipe, 475 - 5º Andar - Higienópolis, São Paulo - SP, 01243-001",
10
"url": "https://www.smarkio.com.br"
11
}
12
]
13
}
Copied!