advhub/meta-whatsapp-laravel

Laravel package for WhatsApp Cloud API (Meta) integration.

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/advhub/meta-whatsapp-laravel

v1.0.0 2026-02-22 16:22 UTC

This package is auto-updated.

Last update: 2026-02-22 16:29:50 UTC


README

Pacote Laravel para integração com a WhatsApp Cloud API (Meta).

Recursos

  • Envio de mensagem de texto
  • Envio de imagem por link
  • Envio de documento por link
  • Envio de template
  • Marcar mensagem como lida
  • Verificação de webhook (hub.challenge)
  • Validação opcional de assinatura (X-Hub-Signature-256)
  • Extração de status (sent, delivered, read, etc.)

Instalação (Composer)

composer require advhub/meta-whatsapp-laravel

Para desenvolvimento local (path repository):

{
  "repositories": [
    {
      "type": "path",
      "url": "packages/advhub/meta-whatsapp-laravel"
    }
  ],
  "require": {
    "advhub/meta-whatsapp-laravel": "*"
  }
}

Depois:

composer update advhub/meta-whatsapp-laravel

Publicar configuração

php artisan vendor:publish --tag=meta-whatsapp-config

Arquivo publicado: config/meta-whatsapp.php

Variáveis de ambiente

META_WA_BASE_URL=https://graph.facebook.com
META_WA_GRAPH_VERSION=v23.0
META_WA_PHONE_NUMBER_ID=
META_WA_ACCESS_TOKEN=
META_WA_VERIFY_TOKEN=
META_WA_APP_SECRET=
META_WA_DEFAULT_COUNTRY_CODE=55
META_WA_TIMEOUT=15

Uso

use AdvHub\MetaWhatsApp\MetaWhatsAppClient;

$meta = app(MetaWhatsAppClient::class);
$meta->sendText('11999999999', 'Olá!');

Facade

MetaWhatsApp::sendText('11999999999', 'Olá!');

Imagem

$meta->sendImage('11999999999', 'https://site.com/imagem.jpg', 'Legenda');

Documento

$meta->sendDocument('11999999999', 'https://site.com/arquivo.pdf', 'arquivo.pdf', 'Segue em anexo');

Template

$meta->sendTemplate(
    '11999999999',
    'notificacao_tarefa',
    'pt_BR',
    [
        [
            'type' => 'body',
            'parameters' => [
                ['type' => 'text', 'text' => 'Ricardo'],
                ['type' => 'text', 'text' => '#123'],
            ],
        ],
    ]
);

Webhook (verify + assinatura)

use AdvHub\MetaWhatsApp\Support\WebhookVerifier;
use Illuminate\Http\Request;

public function verify(Request $request, WebhookVerifier $verifier)
{
    $challenge = $verifier->verifyChallenge($request);
    if ($challenge === null) {
        return response()->json(['message' => 'Token inválido'], 403);
    }

    return response($challenge, 200);
}

public function handle(Request $request, WebhookVerifier $verifier)
{
    if (!$verifier->hasValidSignature($request)) {
        return response()->json(['message' => 'Assinatura inválida'], 401);
    }

    $statuses = $verifier->extractStatuses($request->all());
    // atualizar dt_lido etc.

    return response()->json(['ok' => true]);
}