octopusteam / waapi-laravel
WAAPI whatsapp api integration for Laravel
Fund package maintenance!
octopus-software-team
Installs: 204
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/octopusteam/waapi-laravel
Requires
- php: >=8.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
README
This package provides a simple and expressive API for interacting with the WAAPI (WhatsApp API) service within a Laravel application.
Features
- Send text messages, media, templates, stickers, voice notes, locations, and contacts.
- Fluent and expressive API.
- Automatic webhook route registration.
- New
WebhookReceivedevent for incoming data. - Integration with Webhook.site for easy debugging.
- Artisan command to renew Webhook.site token.
Installation
composer require octopusteam/waapi-laravel
Publish the configuration file:
php artisan vendor:publish --provider="OctopusTeam\Waapi\WaapiServiceProvider"
This will create a config/waapi.php file in your application.
Configuration
Update your .env file with your WAAPI credentials:
WAAPI_APP_URL=https://waapi.octopusteam.net/api/create-message
WAAPI_APP_KEY=your_app_key
WAAPI_AUTH_KEY=your_auth_key
WAAPI_WEBHOOK_SITE_TOKEN=your_webhook_site_token
WAAPI_UPDATE_DEVICE_WEBHOOK=your_device_uuid_for_webhook_update
Usage
Sending Messages
You can send messages using the Waapi facade or by injecting the Waapi class.
use OctopusTeam\Waapi\Facades\Waapi; // Send a simple text message Waapi::sendMessage('201xxxxxxxxx', 'Hello, world!'); // Send an OTP with custom message $otp = Waapi::generateOtp(); Waapi::sendOtp('201xxxxxxxxx', $otp, false, false, ":otp is your verification code."); // Send Media (File) Waapi::sendMedia('201xxxxxxxxx', 'Here is your invoice', 'https://example.com/invoice.pdf'); // Send Template Waapi::sendTemplate('201xxxxxxxxx', 'template_id', [ 'variables[{1}]' => 'Value 1', 'variables[{2}]' => 'Value 2' ]); // Send Sticker Waapi::sendSticker('201xxxxxxxxx', 'https://example.com/sticker.webp'); // Send Voice Note Waapi::sendVoice('201xxxxxxxxx', 'https://example.com/voice.mp3'); // Send Location Waapi::sendLocation('201xxxxxxxxx', '30.0444', '31.2357'); // Send Contact Waapi::sendContact('201xxxxxxxxx', 'John Doe', '201xxxxxxxxx', 'Octopus Team');
Device Status & QR Code
// Get Device Status $status = Waapi::getDeviceStatus('device_id'); // Get QR Code $qr = Waapi::getQrCode('device_id');
Webhook Handling
The package can automatically register a webhook route to handle incoming data from WAAPI. To enable this, ensure the following is in your config/waapi.php:
'webhook' => [ 'enabled' => true, 'auto_register' => true, ],
By default, the route is POST /api/webhook/whatsapp.
Events
When a webhook is received, the package fires the OctopusTeam\Waapi\Events\WebhookReceived event. You can listen to this event in your application's EventServiceProvider.
use OctopusTeam\Waapi\Events\WebhookReceived; protected $listen = [ WebhookReceived::class => [ SendEmailNotification::class, ], ];
The event contains the webhook data in the $data property.
Webhook.site Integration
For development and debugging, you can use the Webhook.site integration to inspect incoming webhook data.
// Get the last 50 requests from Webhook.site $data = Waapi::getWebhookSiteData(50); // Get the decoded content from the last 50 requests $content = Waapi::getWebhookSiteContent(50); // Get a specific request by its ID $request = Waapi::getWebhookSiteRequest('request-uuid');
Artisan Command
To renew your webhook.site token automatically, you can run the following Artisan command. This will generate a new token, update your .env file, and update the webhook URL via the WAAPI service.
php artisan waapi:webhook-renew
