Victor78 / yii2-messenger-target
任何消息传递器的日志目标。
Requires
- php: >=7.0
- victor78/yii2-zipper: ~0.0.4
- yiisoft/yii2: *
- yiisoft/yii2-httpclient: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-23 16:22:36 UTC
README
用于通过消息传递器发送日志(作为文本和/或文件)的Yii2 MessengerTarget扩展。现在这个扩展仅支持Telegram作为消息传递器。
Yii2 MessengerTarget扩展用于通过消息传递器发送日志(作为文本和/或文件)的Yii2扩展。目前此扩展仅支持Telegram作为消息传递器。
英文:
俄语:
安装
安装此扩展的首选方式是通过composer。
运行
php composer.phar require --prefer-dist victor78/yii2-messenger-target:"~0.0.4"
或
"victor78/yii2-messenger-target": "~0.0.4"
将以下内容添加到您的composer.json的require部分。
配置
return [ 'components' => [ 'telegramPusher' => [ 'class' => 'Victor78\MessengerTarget\TelegramPusher', 'recipients' => [ //any element is not required //all messages of levels and categories will be received by these users: '*' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //messages which initiated by Yii::error('some message') or Yii::info('some message', 'error') //or during catching ErrorException //will be sent to these chats 'error' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //messages which initiated by Yii::warning('some message') or Yii::info('some message', 'warning') //will be sent to these chats 'warning' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //messages which initiated by Yii::debug('some message') or Yii::info('some message', 'trace') //will be sent to these chats 'trace' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //messages initiated by //Yii::info('info message', 'some_category_1') or //Yii::debug('trace message', 'some_category_1') or //Yii::warning('warning message', 'some_category_1') or //Yii::error('error message', 'some_category_1') //will be sent to these chats 'some_category_1' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //messages initiated by //Yii::info('info message', 'some_category_2') or //Yii::debug('trace message', 'some_category_2') or //Yii::warning('warning message', 'some_category_2') or //Yii::error('error message', 'some_category_2') //will be sent to these chats 'some_category_2' => [ 'telegram_chat_id_0', //for example, user_id 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], ], // level or category accroding to telegram bot through 'tokens' => [ //all elements are optional //'some_level_or_category' => 'telegram_bot_api_token' 'info' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'error' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'warning' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'trace' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'some_category_1' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'some_categiry_2' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', ], ] ], //.... 'log' => [ 'targets' => [ [ //SPECIFIC OPTIONS for Yii2MessengerTarget //required properties 'class' => 'Victor78\MessengerTarget\MessengerTarget', //required 'messenger' => 'telegramPusher', //name of configured component //optional 'archiverMethod' => 'zip', // default 'zip', also '7zip', 'tar', '.tar.gz', '.tar.bz2' 'enableArchiving' => true, //default true; set false to disable archiving of sending files 'password7zip' => 'password12345', //optional, only with type '7zip' 'viewBothInOneAs' => false, //false is default, choice 'file' or 'text' - if you want glue text and context (global PHP vars) and send it by one message ('text') or one file ('file'). // if viewBothInOneAs = false, you can choice view of text and context 'viewMessageAs' => 'text', //also 'file' and false 'viewContextAs' => 'file', //also 'text' and false //also if you want you can use your own archiver, which implements Victor78\Zipper\ZipperInterface 'archiver' => function(){ return new Some\Namespace\SomeArchiver(); }, //USUAL OPTIONS for log target //for example 'categories' => [ 'yii\db\*', 'yii\web\HttpException:*', ], 'levels' => ['error', 'warning', 'trace', 'info'], 'except' => [ 'yii\web\HttpException:404', ], 'logVars' => ['_SERVER'], ] ] ] ];
如何创建Telegram机器人
-
向 @botfather https://telegram.me/botfather 发送以下文本:
/newbot
如果您不知道如何通过用户名发送消息,请点击您的Telegram应用中的搜索字段,并输入@botfather
,您应该能够开始对话。请注意不要发送给错误联系人,因为一些用户的用户名与botfather
相似。 -
@botfather 会回复
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
-
输入您想要为您的机器人输入的任何名称。
-
@botfather 会回复
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
-
输入您想要为您的机器人输入的任何用户名,最小5个字符,并且必须以
bot
结尾。例如:telesample_bot
-
@botfather 会回复
Done! Congratulations on your new bot. You will find it at telegram.me/telesample_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. Use this token to access the HTTP API: 123456789:AAG90e14-0f8-40183D-18491dDE For a description of the Bot API, see this page: https://core.telegram.org/bots/api
-
记下上面提到的 'token'。
-
向 @botfather 输入
/setprivacy
。 -
@botfather 会回复
Choose a bot to change group messages settings.
-
输入(或选择)
@telesample_bot
(更改步骤5以上设置的名称,但以@
开头) -
@botfather 会回复
'Enable' - your bot will only receive messages that either start with the '/' symbol or mention the bot by username. 'Disable' - your bot will receive all messages that people send to groups. Current status is: ENABLED
-
输入(或选择)
Disable
以允许您的机器人接收发送到群组的所有消息。实际上这一步取决于您。 -
@botfather 会回复
Success! The new status is: DISABLED. /help
如何获取将接收机器人消息的聊天ID
向Telegram机器人 @get_id_bot 发送 /my_id 或使用说明。
如何使用
只需正确配置组件即可。要测试您的配置,例如将其添加到某个控制器中。
Yii::info('INFO MESSAGE'); Yii::debug('DEBUG MESSAGE'); Yii::warning('WARNING MESSAGE'); Yii::error('ERROR MESSAGE'); //also you can try create catching of Exception, for example: 1/0;
注意
对于存档MessengerTarget,请使用yii2-zipper。
- 对于zip类型的Zipper,请尝试使用控制台命令zip或php zip扩展,因此服务器上需要其中之一用于压缩。
- 对于tar、tar.gz、tar.bz2类型的Zipper,请尝试使用GNU tar和BSD tar,因此服务器上需要其中之一用于这些存档方式。
- 对于使用7zip进行压缩,服务器上需要7za实用程序。
安装
首选通过composer安装此扩展。
从控制台启动
php composer.phar require --prefer-dist victor78/yii2-messenger-target:"~0.0.4"
或
"victor78/yii2-messenger-target": "~0.0.4"
配置
return [ 'components' => [ 'telegramPusher' => [ 'class' => 'Victor78\MessengerTarget\TelegramPusher', 'recipients' => [ //не один элемент не является обязательным, но необходим хотя бы один //все сообщения будут отправлены в следующие чаты: '*' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //сообщения которые инициированы Yii::error('some message') or Yii::info('some message', 'error') //или во время отлавливания исключения будет отправлены в данные чаты 'error' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //сообщения, которые инициированы Yii::warning('some message') или Yii::info('some message', 'warning') //будут отправлены в следующие чаты 'warning' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //сообщения, инициированные Yii::debug('some message') или Yii::info('some message', 'trace') //будут отправлены в следующие чаты 'trace' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //сообщения, инициированные //Yii::info('info message', 'some_category_1') или //Yii::debug('trace message', 'some_category_1') или //Yii::warning('warning message', 'some_category_1') или //Yii::error('error message', 'some_category_1') // будут отправлены в данные чаты 'some_category_1' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], //сообщения, инициированные //Yii::info('info message', 'some_category_1') или //Yii::debug('trace message', 'some_category_1') или //Yii::warning('warning message', 'some_category_1') или //Yii::error('error message', 'some_category_1') // будут отправлены в данные чаты 'some_category_2' => [ 'telegram_chat_id_0', //id чата, например, id пользователя 'telegram_chat_id_1', //... 'telegram_chat_id_N', ], ], // уровень или категория и соответствующий ей токен телеграм бота 'tokens' => [ //все элементы опциональны //'some_level_or_category' => 'telegram_bot_api_token' 'info' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'error' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'warning' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'trace' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'some_category_1' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'some_categiry_2' => 'NNNNNNNNN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', ], ] ], //.... 'log' => [ 'targets' => [ [ //СПЕЦИФИЧЕСКИЕ для Yii2MessengerTarget ОПЦИИ //обязательные свойства 'class' => 'Victor78\MessengerTarget\MessengerTarget', 'messenger' => 'telegramPusher', //имя сконфигурированного компонента мессенджера //необязательные свойства 'archiverMethod' => 'zip', // по умолчанию 'zip', also '7zip', 'tar', '.tar.gz', '.tar.bz2' 'enableArchiving' => true, //по умолчанию true; установить false для отключения архивации отправляемых файлов 'password7zip' => 'password12345', //опционально, работает только с типом '7zip' 'viewBothInOneAs' => false, //false по умолчанию, выбрать 'file' или 'text' если хотите объединить текст и контекст (глобальные переменные PHP) и отправить их одним сообщением ('text') или одним файлом ('file'). // если viewBothInOneAs = false, вы можете выбрать вид текста и контекста 'viewMessageAs' => 'text', //ещё можно выбрать 'file' или false 'viewContextAs' => 'file', //ещё можно выбрать 'text' или false //При необходимости вы можете использовать свой архиватор, который реализует Victor78\Zipper\ZipperInterface 'archiver' => function(){ return new Some\Namespace\SomeArchiver(); }, //ОБЫЧНЫЕ ОПЦИИ для log target //любые обычные опции, например 'categories' => [ 'yii\db\*', 'yii\web\HttpException:*', ], 'levels' => ['error', 'warning', 'trace', 'info'], 'except' => [ 'yii\web\HttpException:404', ], 'logVars' => ['_SERVER'], ] ] ] ];
如何创建Telegram机器人
-
请向@botfather发送以下文本(命令):
/newbot
如果您不知道如何通过用户名向用户发送消息,点击您的Telegram应用程序的搜索并输入@botfather
,您将有机会开始与该用户(在这种情况下是机器人)的对话。请注意,一些用户使用与botfather
相似的username。 -
@botfather将回复:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
-
回复消息,包含机器人的名称。
-
@botfather将回复:
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
-
回复username,它应该至少有5个字符,以
bot
结尾。例如:telesample_bot
-
@botfather将回复:
Done! Congratulations on your new bot. You will find it at telegram.me/telesample_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. Use this token to access the HTTP API: 123456789:AAG90e14-0f8-40183D-18491dDE For a description of the Bot API, see this page: https://core.telegram.org/bots/api
-
保存令牌。
-
向@botfather发送消息
/setprivacy
。 -
@botfather将回复:
Choose a bot to change group messages settings.
-
输入(或选择)您的机器人
@telesample_bot
(根据您的机器人username选择) -
@botfather将回复:
'Enable' - your bot will only receive messages that either start with the '/' symbol or mention the bot by username. 'Disable' - your bot will receive all messages that people send to groups. Current status is: ENABLED
-
输入(或选择)
Disable
以允许您的机器人在群组中工作。 -
@botfather将回复:
Success! The new status is: DISABLED. /help
如何获取机器人将接收消息的聊天ID(用户ID)
向Telegram机器人@get_id_bot发送/my_id
或使用说明。
如何使用
只需正确配置组件,通过消息传递的日志记录就会工作。可以通过在控制器中添加以下代码来测试日志记录是否设置正确,例如:
Yii::info('INFO MESSAGE'); Yii::debug('DEBUG MESSAGE'); Yii::warning('WARNING MESSAGE'); Yii::error('ERROR MESSAGE'); //также можно можно инициировать исключение, например: 1/0;
注意
为了存档文件,MessengerTarget使用yii2-zipper。
- 为了使用纯zip存档,使用zip工具或PHP的zip扩展,因此服务器上必须安装工具或扩展以便压缩和解压zip。
- 对于tar、tar.gz、tar.bz2,Zipper尝试使用GNU tar或BSD tar,服务器上必须安装其中之一以支持这些存档类型。
- 为了使用7zip进行存档/解档,服务器上必须安装7za工具。