Search by

spokospace / filament-ops-notify

spokospace

Operational notifications (inquiries, errors, builds) for Laravel + Filament panels, delivered to Telegram forum topics.

Package info

github.com/spokospace/filament-ops-notify

Documentation

pkg:composer/spokospace/filament-ops-notify

Statistics

Installs: 29

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 1


README

Filament Ops Notify: inquiries, errors and builds from your Filament panel, delivered to Telegram forum topics

Filament Ops Notify

Tests Latest release PHP Laravel Filament

Operational notifications for Laravel + Filament panels: inquiries, errors and builds, delivered to Telegram forum topics. Built on Laravel notifications, so existing Filament database notifications reach Telegram with no code changes.

Features

  • Bell notifications → Telegram, no code. Every sendToDatabase() notification is forwarded once, however many users receive it (with a shared cache).
  • Any Laravel notification, too. Apps without the bell can forward mail, SMS or push notifications, once each and without secrets such as password reset links.
  • Topics and routing. Create forum topics from the panel and route events to them by pattern (inquiry.*Inquiries). Filament notifications are routed by title.
  • Settings in the panel. Token (encrypted), chat id, service name, topics and rules, all without touching .env.
  • Message templates. Change an event's title, body, fields and hashtag by pattern (inquiry.*New inquiry from :field.Name), and preview it on the latest logged message before saving (Message templates).
  • Reliable delivery. Queued, retried, rate-limit aware, and never breaks the request that sent it.
  • Bot profile. Pick an avatar (a preset or your own) and set the display name and descriptions from the panel.
  • Translated. The panel ships in 25 languages, and a separate setting controls the language of the messages.
  • History. Every message is logged with its status and Telegram error, and failed ones can be resent.
  • ops notification channel and a fluent OpsMessage for events that are not bell notifications.

Screenshots

The Ops Notify page: the Telegram connection, where messages are delivered (queue and Horizon state), and the history of every message sent, with failed ones ready to resend.

Ops Notify page with the connection status and the message history

Settings: bot token, chat id and message language, forum topics that can be created in Telegram or imported from it, routing rules and message templates. Filled lists collapse to a one-line summary.

Settings slide-over with the Telegram connection and the topics list

Bot profile: pick a preset avatar or upload your own, and set the name and descriptions Telegram shows.

Bot profile slide-over with preset avatars, display name and descriptions

Requirements

  • PHP 8.3 / 8.4 / 8.5
  • Laravel 12 / 13
  • Filament 5

Installation

composer require spokospace/filament-ops-notify
php artisan migrate
use Spokospace\OpsNotify\Filament\OpsNotifyPlugin;

$panel->plugin(OpsNotifyPlugin::make()->navigationGroup('System'));

Then say who may use it. Until you do, the page opens only in the local environment:

// In a service provider's boot(), with your app's own admin check:
Gate::define('viewOpsNotify', fn (User $user): bool => $user->is_admin);

manageOpsNotify can limit Settings, Bot profile, Send test and Resend further. See Who may use it.

Delivery runs on the queue, so the app needs a worker (Horizon or queue:work) and the scheduler.

Quick start

  1. Create a bot with @BotFather and a Telegram group with Topics turned on. Add the bot and promote it to admin.
  2. In the panel, open Ops Notify → Settings and enter the bot token and chat id.
  3. Press Send test.

The setup checklist has every step in order. Installing with an AI coding agent? Give it Installing with an AI agent.

Your existing Filament notifications now reach Telegram. To send something yourself:

use Spokospace\OpsNotify\OpsMessage;

OpsMessage::make('build.completed')
    ->success()
    ->title('Frontend build completed')
    ->field('Duration', '4m 12s')
    ->button('Open site', 'https://shop.example')
    ->send();

In Telegram it reads:

✅ [shop.example.com] Frontend build completed

Duration: 4m 12s

#build_completed

with an Open site button below. The title and field labels are bold.

Documentation

  • Setup checklist: what to set up, in order, the rights the bot needs, and instructions for AI agents
  • Installation: requirements, migrations, plugin options
  • Telegram setup: bot, group, topics, finding the chat id, bot profile
  • Settings: panel vs .env, every option, languages, the Ops Notify page
  • Routing and topics: topics, event rules, forwarding Filament notifications
  • Sending messages: the ops channel, the OpsMessage API, message templates, delivery, tests
  • Drivers: writing your own channel driver
  • Troubleshooting: common Telegram and queue errors and fixes

Testing

composer test

Credits

Built and maintained by spoko.space, where it runs in production on our own Filament panels.

License

MIT, see LICENSE.md.