Enviar uma mensagem de WhatsApp com PHP
Objetivo
Seção intitulada “Objetivo”Ao final, você terá um script PHP que envia uma mensagem de texto pela Nigora Zap API e mostra a resposta.
Pré-requisitos
Seção intitulada “Pré-requisitos”- Uma instância conectada. Se ainda não conectou, veja Conexão.
- O ID e o token da instância, como em Primeiros passos.
- PHP 8 ou mais novo, com a extensão cURL ligada. Confira com
php -m.
1. Guarde as credenciais no ambiente
Seção intitulada “1. Guarde as credenciais no ambiente”Não escreva o token no código. Leia-o de variáveis de ambiente:
export NIGORA_INSTANCIA_ID="cole-aqui-o-id-da-instancia"export NIGORA_TOKEN="cole-aqui-o-token"2. Crie o script
Seção intitulada “2. Crie o script”Salve como enviar.php:
<?php$instanciaId = getenv('NIGORA_INSTANCIA_ID');$token = getenv('NIGORA_TOKEN');if (!$instanciaId || !$token) { fwrite(STDERR, "Defina NIGORA_INSTANCIA_ID e NIGORA_TOKEN.\n"); exit(1);}
$url = "https://api.zap.nigora.com.br/v1/instances/{$instanciaId}/messages/text";$corpo = json_encode([ 'to' => '5511999999999', 'text' => 'Olá! Esta mensagem saiu pela API.',], JSON_UNESCAPED_UNICODE);
$curl = curl_init($url);curl_setopt_array($curl, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $corpo, CURLOPT_HTTPHEADER => [ "Authorization: Bearer {$token}", 'Content-Type: application/json', ], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15,]);
$resposta = curl_exec($curl);if ($resposta === false) { fwrite(STDERR, 'Falha de rede: ' . curl_error($curl) . "\n"); exit(1);}$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);curl_close($curl);
echo "Status HTTP: {$status}\n{$resposta}\n";exit($status < 300 ? 0 : 1);Troque 5511999999999 pelo telefone de quem vai receber, com DDI e DDD. A API ignora tudo que não for dígito e acrescenta o 55 quando o número tem 10 ou 11 dígitos.
3. Execute
Seção intitulada “3. Execute”php enviar.phpResultado esperado:
Status HTTP: 202{"id":"…","status":"queued"}O 202 quer dizer que a mensagem entrou na fila. Ela ainda não foi entregue. Guarde o id: é com ele que você liga a resposta aos eventos message.sent e message.status, que chegam por webhook.
Se algo der errado
Seção intitulada “Se algo der errado”| Status | Código | O que fazer |
|---|---|---|
400 |
invalid_phone |
Corrija o telefone: ele precisa ter 12 ou 13 dígitos com o 55 |
401 |
invalid_token |
Confira o token e o ID da instância |
402 |
instance_suspended |
A instância está suspensa ou com pagamento pendente |
422 |
contact_opted_out |
O contato pediu para não receber mensagens |
Próximos passos
Seção intitulada “Próximos passos”- Enviando mensagens: respostas, fila e acompanhamento do resultado.
- Receber mensagens por webhook: veja as respostas chegarem ao seu sistema.
- Envio de mídia: imagem, vídeo, áudio e documento.