Ir para o conteúdo

Como enviar mensagem de notificação sem cabeçalho

Mensagens de notificação são conversas via Whatsapp iniciadas pela empresa cliente em que o usuário final não iniciou uma conversa. Podem conter texto puro ou, também, um cabeçalho customizado. Este documento explica como fazer o envio de mensagens de notificação que contem apenas o corpo de texto, não incluindo nenhum tipo de cabeçalho.

Importante

Toda mensagem de notificação precisa ter um template previamente cadastrado e aprovado na Meta.

1. Primeiro passo - Obter token de acesso

Antes de solicitar o envio de mensagens de notificação sem cabeçalho utilizando o endpoint para envio de mensagens de notificação, a aplicação cliente deve obter o token de acesso às APIs, conforme descrito no guia Como autenticar.

2. Segundo passo - Definição do pacote de requisições

Após obter o token de acesso, a aplicação cliente deve montar o payload da requisição de envio de mensagens de notificação, que corresponde ao pacote de requisições de envio de mensagens, conforme explicado na documentação O que é um pacote de requisições.

Este payload será enviado no corpo da requisição de envio de mensagens de notificação e abaixo há um exemplo para envio de mensagem sem cabeçalho:

{
    "nomeTemplate": "NOME_DO_TEMPLATE_META",
    "wabaId": "VALOR_ID_WABA_META",
    "destinatarios": [ "CONTATO_1", "CONTATO_2", "CONTATO_N" ],
    "body": {
        "parametros": [ 
            { 
                "tipo": "text", 
                "valor": "10 dias" 
            }
        ]
    }
}

3. Segundo passo - Solicitar envio de mensagens de notificação

Para solicitar o envio de mensagens de notificação deve-se fazer uma requisição HTTP POST para o endpoint https://api.whatsapp.serpro.gov.br/notificacao/v1/FROM_PHONE_NUMBER_ID/requisicoes, enviando o payload do pacote de requisições no corpo da requisição, conforme exemplo abaixo usando curl.

FROM_PHONE_NUMBER_ID

Este campo deve ser o mesmo informado no client_id na geração do token.

Exemplo com curl

curl -v --request POST \
  --url 'https://api.whatsapp.serpro.gov.br/notificacao/v1/FROM_PHONE_NUMBER_ID/requisicoes' \
  --header 'Authorization: Bearer VALOR_TOKEN' \
  --header 'Content-Type: application/json' \
  -d ' {
    "nomeTemplate": "NOME_DO_TEMPLATE_META",
    "wabaId": "VALOR_ID_WABA_META",
    "destinatarios": [ "CONTATO_1", "CONTATO_2", "CONTATO_N" ],
    "body": {
        "parametros": [ 
            { 
                "tipo": "text", 
                "valor": "10 dias" 
            }
        ]
    }
}
  '

Exemplo com Spring Boot

final String nomeTemplate = "NOME_DO_TEMPLATE_META";
final String wabaId = "VALOR_ID_WABA_META";
final String body = String.format("" +
        "{" +
        " \"nomeTemplate\": \"%s\", " +
        " \"wabaId\": \"%s\", " +
        " \"destinatarios\": [ \"CONTATO_1\", \"CONTATO_2\", \"CONTATO_N\" ], " +
        " \"body\": { " +
        "     \"parametros\": [ { \"tipo\": \"text\", \"valor\": \"10 dias\" }] " +
        "   } " +
        "}", nomeTemplate, wabaId);

final String serverUrl = "https://api.whatsapp.serpro.gov.br/notificacao/v1/FROM_PHONE_NUMBER_ID/requisicoes";

final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth("VALOR_TOKEN");

final HttpEntity<String> requestEntity = new HttpEntity<>(body, headers);

final RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new MyResponseErrorHandler());
final ResponseEntity<String> response = restTemplate.postForEntity(serverUrl, requestEntity, String.class);

4. Quarto passo - Resultado da solicitação de envio de mensagens de notificação

A resposta do serviço de envio de requisições de mensagens de notificação é um objeto json contendo três informações, conforme exemplo abaixo:

Este exemplo ilustra uma resposta com sucesso na internalização da solicitação de envio de mensagens de notificação. Em caso de sucesso o campo sucesso tem o valor true e o campo idRequisicao contém o identificador interno do pacote de requisições. Este valor deverá ser usado posteriormente na consulta ao status da solicitação de envio.

{
    "idRequisicao": "309d87e6-dca1-49dd-a378-edbec5e05481",
    "mensagensErro": null,
    "sucesso":true
}

Em caso de falha na solicitação de envio de mensagens de notificação, o campo sucesso terá valor false e o campo mensagensErro conterá a lista de erros encontrados na internalização da solicitação de envio. No exemplo abaixo a solicitação falhou porque o template informado na requisição não foi previamente cadastrado na Cloud Api da Meta, conforme os requisitos para envios de mensagens.

{
    "idRequisicao": null,
    "mensagensErro": [
        "O template exemplo_de_confirmao_de_envio_inexistente nao foi encontrado na lista de templates cadastrados."
    ],
    "sucesso": false
}

5. Quinto passo - Consultar status da solicitação de envio de mensagens de notificação

Em caso de sucesso no requisição de envio de mensagens de notificação o próximo passo é consultar o status do envio das mensagens, conforme descrito no guia Como consultar status de envio de mensagens.