Search
K
Links
Comment on page

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>
{
"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"
}

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):
{
"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
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):
{
"status": "error",
"message": "Invalid destination!"
}
Unauthorized:
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"
}
Internal Server Error:
Houve um erro durante o envio da mensagem.Body (exemplo):
{
"status": "error",
"message": "Unexpected error"
}

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

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
{
"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
}
]
}
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
{
"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"
}
]
}
]
}

Estrutura - Lista Modal

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
Modelo
Visualização
{
"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"
}
]
}
]
}
]
}

Estrutura - Localização

Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
Modelo
Visualização
{
"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"
}
]
}