1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Components;
- use GuzzleHttp\Client;
- use Log;
- class PushNotification {
- public static function send($title, $content) {
- switch(sysConfig('is_notification')){
- case 'serverChan':
- return self::ServerChan($title, $content);
- case 'bark':
- return self::Bark($title, $content);
- default:
- return false;
- }
- }
- /**
- * ServerChan推送消息
- *
- * @param string $title 消息标题
- * @param string $content 消息内容
- *
- * @return mixed
- */
- private static function ServerChan($title, $content) {
- // TODO:一天仅可发送不超过500条
- $request = (new Client(['timeout' => 15]))->get('https://sc.ftqq.com/'.sysConfig('server_chan_key').'.send?text='.$title.'&desp='.urlencode($content));
- $message = json_decode($request->getBody(), true);
- // 发送成功
- if($request->getStatusCode() == 200){
- if(!$message['errno']){
- Helpers::addNotificationLog($title, $content, 2);
- return $message;
- }
- // 发送失败
- Helpers::addNotificationLog($title, $content, 2, 'admin', -1, $message? $message['errmsg'] : '未知');
- return false;
- }
- // 发送错误
- Log::debug('ServerChan消息推送异常:'.var_export($request, true));
- return false;
- }
- /**
- * Bark推送消息
- *
- * @param string $title 消息标题
- * @param string $content 消息内容
- *
- * @return mixed
- */
- private static function Bark($title, $content) {
- $request = (new Client(['timeout' => 15]))->get('https://api.day.app/'.sysConfig('bark_key').'/'.$title.'/'.$content);
- $message = json_decode($request->getBody(), true);
- if($request->getStatusCode() == 200){
- // 发送成功
- if($message['code'] == 200){
- Helpers::addNotificationLog($title, $content, 3);
- return $message;
- }
- // 发送失败
- Helpers::addNotificationLog($title, $content, 3, 'admin', -1, $message);
- return false;
- }
- // 发送错误
- Log::debug('Bark消息推送异常:'.var_export($request, true));
- return false;
- }
- }
|