Messaging Adapters
Messaging drivers translate platform-specific payloads into IncomingMessage DTOs. Some platforms require an adapter layer to normalize the payload before the driver produces IncomingMessage records.
Core Interfaces
- Driver contract:
Tonsoo\TaskTracker\Messaging\Contracts\MessagingDriver - Adapter contract:
Tonsoo\TaskTracker\Messaging\Contracts\MessagingAdapter - Built-in driver:
Tonsoo\TaskTracker\Messaging\Drivers\WhatsAppDriver - Built-in adapter:
Tonsoo\TaskTracker\Messaging\Adapters\WhatsAppAdapter
WhatsApp Driver Behavior
- Iterates
entry[].changes[].value.messages[] - Accepts only
type === 'text' - Produces
IncomingMessage(platform: 'whatsapp', senderId, text, rawPayload)
Creating a New Driver
namespace App\Messaging\Drivers;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Tonsoo\TaskTracker\Messaging\Contracts\MessagingDriver;
final class TelegramDriver implements MessagingDriver
{
public function verify(Request $request): Response
{
return response('', 200);
}
public function parse(Request $request): array
{
$payload = $request->all();
// Map Telegram payload to IncomingMessage[]
return [
[
'external_id' => 'abc',
'text' => '...',
'source' => 'telegram',
'processed' => false,
],
];
}
}
Register the driver in config/task-tracker.php under messaging.drivers.*.