Victor78/yii2-messenger-target

任何消息传递器的日志目标。

安装: 68

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

类型:yii2-extension

0.0.5 2018-05-08 12:14 UTC

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机器人

  1. 向 @botfather https://telegram.me/botfather 发送以下文本:/newbot 如果您不知道如何通过用户名发送消息,请点击您的Telegram应用中的搜索字段,并输入 @botfather,您应该能够开始对话。请注意不要发送给错误联系人,因为一些用户的用户名与 botfather 相似。

    botfather initial conversation

  2. @botfather 会回复 Alright, a new bot. How are we going to call it? Please choose a name for your bot.

  3. 输入您想要为您的机器人输入的任何名称。

  4. @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. 输入您想要为您的机器人输入的任何用户名,最小5个字符,并且必须以 bot 结尾。例如: telesample_bot

  6. @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
    
  7. 记下上面提到的 'token'。

  8. 向 @botfather 输入 /setprivacy

    botfather later conversation

  9. @botfather 会回复 Choose a bot to change group messages settings.

  10. 输入(或选择) @telesample_bot(更改步骤5以上设置的名称,但以 @ 开头)

  11. @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
    
  12. 输入(或选择) Disable 以允许您的机器人接收发送到群组的所有消息。实际上这一步取决于您。

  13. @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机器人

  1. 请向@botfather发送以下文本(命令):/newbot 如果您不知道如何通过用户名向用户发送消息,点击您的Telegram应用程序的搜索并输入@botfather,您将有机会开始与该用户(在这种情况下是机器人)的对话。请注意,一些用户使用与botfather相似的username。

    botfather initial conversation

  2. @botfather将回复:Alright, a new bot. How are we going to call it? Please choose a name for your bot.

  3. 回复消息,包含机器人的名称。

  4. @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. 回复username,它应该至少有5个字符,以bot结尾。例如:telesample_bot

  6. @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
    
  7. 保存令牌。

  8. 向@botfather发送消息/setprivacy

    botfather later conversation

  9. @botfather将回复:Choose a bot to change group messages settings.

  10. 输入(或选择)您的机器人@telesample_bot(根据您的机器人username选择)

  11. @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
    
  12. 输入(或选择)Disable以允许您的机器人在群组中工作。

  13. @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工具。