sendity / whatsapp-channel
Framework-agnostic Sendity WhatsApp Business Cloud webhook channel parser.
Requires
- php: >=8.2
- psr/http-message: ^1.0
- sendity/core: ^0.1.7 || ^0.2.0
Requires (Dev)
- guzzlehttp/psr7: ^2.0
- phpunit/phpunit: ^11.0
This package is not auto-updated.
Last update: 2026-06-12 09:22:25 UTC
README
Framework-agnostic PHP package for parsing Sendity inbound WhatsApp Business Cloud webhook payloads.
sendity/whatsapp-channel accepts PSR-7 HTTP requests containing official WhatsApp Business Cloud webhook JSON, extracts sender identity and Sendity authentication codes, and returns sendity/core ParsedMessage values for the consuming server glue.
Boundaries
This package intentionally contains no Laravel/server glue and no persistence/session matching. sendity/laravel-server is responsible for webhook routing, signature/app-secret verification, channel registration, persistence, event dispatching, and auth/session matching.
Dependencies on sendity/core are limited to contracts and value objects used to express parsed channel messages.
Basic usage
use Sendity\Core\Contract\AuthCodeServiceInterface;
use Sendity\WhatsAppChannel\WhatsAppChannel;
/** @var AuthCodeServiceInterface $authCodeService */
$channel = new WhatsAppChannel(
recipient: '+49123456789',
authCodeService: $authCodeService,
);
$parsed = $channel->parse($psr7Request);
// $parsed->channel === 'whatsapp'
// $parsed->identifierType === 'phone'
// $parsed->codes contains extracted Sendity auth codes, if present.
Supported webhook content
The parser extracts codes from:
- text message bodies
- button message text
- interactive button/list reply IDs, titles, and descriptions
- media captions for image/video/document/audio/sticker payloads
Status-only webhook payloads do not produce codes, but may expose recipient_id as the phone identifier.