johnrivera7/filament-issabel-click-to-call
Filament Issabel Click-to-Call adds one-click dialing to Laravel Filament apps. Launch calls through an Issabel PBX directly from phone numbers in tables and resources, with simple configuration and a smooth agent workflow.
This is the first stable release, so treat the assessment as provisional: the package ships three surface areas (AMI click-to-call, a call viewer wired to the filament-click-to-call context, and a publishable dialplan tag), and day-to-day usage is concentrated in the first two.
composer require <vendor>/filament-click-to-call
php artisan vendor:publish --tag=filament-click-to-call-config
.env (host, port, username, secret, and the dialplan context to originate into). Keep them out of the repo — this is a telephony credential with dial privileges.config/click-to-call.php, the Filament plugin class in src/, and the published dialplan tag under resources/.Contact (or Lead) resource with phone numbers — attach the click-to-call action to the table row and/or the infolist header, so an agent clicks a number and Asterisk originates the call to their extension, then bridges to the contact.filament-click-to-call context name is what ties the Filament side to the Asterisk dialplan. Define one context per routing policy (per tenant, per panel, per trunk) rather than one global context; the action should resolve the context from the current panel/tenant, not hardcode it.extensions.conf (or an #included file), then reload the dialplan before the first call. Automate this in your deploy script; a published-but-not-reloaded dialplan is the most common "it does nothing" failure.->visible()/->authorize() against a policy or permission. Outbound dialing costs money and can reach real people; treat it like a destructive action.Originate is a network call to Asterisk. If the action runs synchronously in the Livewire request, wrap it in a queued job and reflect state via Filament notifications or polling.Http::fake()-style determinism so CI never touches a real PBX.vendor:publish --force is safe.manager.conf. Port 5038 is normally closed. The AMI user needs permit= for your app server's IP and read=call,originate / write=originate — a correct secret with the wrong permit line is indistinguishable from a wrong password in the error you get back.php artisan config:cache in production means .env changes to AMI credentials have no effect until you re-cache. Bake credentials in at deploy time and verify with a health check.dialplan reload (or the AMI Command action) — and confirm the context actually exists with dialplan show <context>. If the context is missing, Originate fails and the call is silently dropped.asterisk -rx "manager show connected", then read the package's Laravel log entry for the originate payload, then check dialplan show. That ordering separates auth problems from routing problems from application problems.getPhoneNumber()/getContext()-style methods if the package exposes them), and Filament notifications for user feedback. If the viewer's context handling doesn't fit your tenancy model, override the plugin's context resolver rather than forking the package.How can I help you explore Laravel packages today?