rocont/laravel-notification-channel-compass
最新稳定版本:0.0.9
Composer 安装命令:
composer require rocont/laravel-notification-channel-compass
包简介
Laravel Notification Channel for Compass Userbot
README 文档
README
Пакет разработан компанией Rocont (занимается веб-разработкой на Laravel).
Что это?
Данный пакет добавляет в Laravel новый канал нотификаций — compass, который позволяет отправлять сообщения, файлы и реакции через Compass Userbot API.
Теперь вы можете использовать привычный механизм Notification Laravel для:
- отправки сообщений конкретным пользователям (по
user_id), - отправки сообщений в группы (по
group_id), - написания ответов в треды (
message_id), - загрузки и пересылки файлов,
- выбора нужного бота через конфиг по ключу.
Установка
composer require vendor/laravel-notification-channel-compass
php artisan vendor:publish --provider="Vendor\\CompassChannel\\CompassServiceProvider" --tag=config
Конфигурация config/compass.php
<?php return [ 'default' => env('COMPASS_DEFAULT_BOT', 'main'), 'bots' => [ 'main' => [ 'token' => env('COMPASS_BOT_MAIN'), ], 'birthday' => [ 'token' => env('COMPASS_BOT_BIRTHDAY'), ], 'marketing' => [ 'token' => env('COMPASS_BOT_MARKETING'), ], ], 'base_url' => rtrim(env('COMPASS_BASE_URL', 'https://userbot.getcompass.com/'), '/').'/api/v3/', 'timeout' => (int) env('COMPASS_HTTP_TIMEOUT', 10), 'retries' => (int) env('COMPASS_HTTP_RETRIES', 1), ];
Пример .env
COMPASS_DEFAULT_BOT=main COMPASS_BOT_MAIN=xxxx-main-token-xxxx COMPASS_BOT_BIRTHDAY=xxxx-birthday-token-xxxx COMPASS_BOT_MARKETING=xxxx-marketing-token-xxxx COMPASS_BASE_URL=https://userbot.getcompass.com/ COMPASS_HTTP_TIMEOUT=10 COMPASS_HTTP_RETRIES=1
Использование
В модели пользователя
class User extends Model { use Notifiable; public function routeNotificationForCompass($notification = null): ?int { return $this->compass_user_id; } }
Пример уведомления (по умолчанию)
Если не указать bot, будет использован ключ default из config/compass.php.
class WelcomeOnCompass extends Notification { public function via($notifiable): array { return ['compass']; } public function toCompass($notifiable): array { return [ 'type' => 'text', 'text' => "Привет, {$notifiable->name}! 🎉 Добро пожаловать.", ]; } }
Пример уведомления с выбором бота
class BirthdayNotification extends Notification { public function via($notifiable): array { return ['compass']; } public function toCompass($notifiable): array { $message = "С днём рождения, {$notifiable->name}! 🎉"; return [ 'bot' => 'birthday', // ключ из config('compass.bots') 'type' => 'text', 'text' => $message, ]; } }
Отправка через route
Notification::route('compass', [ 'group_id' => env('COMPASS_GROUP_ID'), ]) ->notify(new WelcomeOnCompass());
Notification::route('compass', [ 'group_id' => env('COMPASS_GROUP_ID'), ]) ->notify(new BirthdayNotification());
Отправка файла в тред
Notification::route('compass', ['message_id' => $rootMessageId]) ->notify(new class('/path/to/file.pdf') extends Notification { public function __construct(private string $path) {} public function via($n) { return ['compass']; } public function toCompass($n): array { return [ 'bot' => 'marketing', 'type' => 'file', 'file' => $this->path, ]; } });
Тестирование
Http::fake([ 'userbot.getcompass.com/api/v3/*' => Http::response([ 'status' => 'ok', 'response' => ['message_id' => 'abc123'], ], 200), ]);
Лицензия
MIT License.
Авторство
Разработано компанией Rocont — мы специализируемся на веб-разработке на Laravel и интеграциях.
Если у вас есть проект или интеграция для Compass — свяжитесь с нами 🚀
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-10