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
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
Estrutura - Enviar arquivo
Utilizar o body abaixo usando a mesma API que utiliza para o outbound com template.
{
    "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.
{
    "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.
{
    "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.
{
    "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"
        }
    ]
}
Last updated
Was this helpful?