使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息

huozi1024發表於2022-08-04

這是一個laravel框架下基於laravel-wechat使用微信訊息通知作為notification通道的composer包,使用前請先熟讀laravel-訊息通知
目前已支援:

  • 公眾號模板訊息
  • 小程式模板訊息
  • 開放平臺公眾號模板訊息
  • 開放平臺小程式模板訊息
  • 企業微信訊息
  • 企業微信開放平臺訊息

使用方式:

0. 新增composer包:

composer require "huo-zi/laravel-wechat-notification"

1. 在繼承了notification的通知類中可以使用如下方法:

public function via($notifiable)
{
    /*
     * 支援的via列表
     * official_account:公眾號
     * mini_program:小程式
     * open_official_account:開放平臺公眾號
     * open_mini_program:開放平臺小程式
     * work:企業微信
     * open_work:開放平臺企業微信
     */
    return ['official_account', 'mini_program'];
}
  • 使用公眾號傳送模板訊息:
public function toOfficialAccount()
{
    return WechatMessage::officialAccount('app_name')->template('templateId')->url($url)->data(['fisrt'=>'...']);
}
  • 使用小程式傳送模板訊息:
public function toMiniProgram()
{
    return WechatMessage::miniProgram('app_name')->template($templateId)->formId($formId)->data([
        'first' => ''
        //
    ]);
}
  • 使用開放平臺公眾號傳送模板訊息:
public function toOpenOfficialAccount()
{
    return WechatMessage::openFlatform($name)->officateAccount($appId, $refreshToken, $accessToken)->template('templateId');
}
// 或使用閉包建立開放平臺的公眾號物件
public function toOpenOfficialAccount()
{
    return WechatMessage::openFlatform($name)->officateAccount(function ($open) {
        return $open->officateAccount($appId, $refreshToken, $accessToken);
    })->template('templateId');
}
// 或建立好開放平臺物件後使用
public function toOpenOfficialAccount()
{
    return (new WechatPlatform($openPlatform))->officateAccount($appId, $refreshToken, $accessToken)->template($templateId);
}
  • 使用開放平臺小程式傳送模板訊息:
public function toOpenMiniProgram()
{
    return WechatMessage::openFlatform($name)->miniProgram($appId, $refreshToken, $accessToken)->template($templateId);
}
  • 使用企業微信傳送訊息:
public function toWork()
{
    return WechatMessage::work($name)->message($message)->ofAgent($agentId);
}
  • 使用開放平臺企業微信傳送訊息:
public function toOpenWork()
{
    return WechatMessage::openWork($name)->work($authCorpId, $permanentCode)->message($message)->ofAgent($agentId);
    // 同樣也支援建立好開放平臺物件後使用及閉包建立work物件
    $messenger = (new WechatOpenWork($openWork))->work(function($openWork) {
        return $openWork->work($authCorpId, $permanentCode);
    });
    return $messenger->message($message)->ofAgent($agentid);
}

2. 在使用了triat Notifiable的模型裡增加獲取對應openid/userid的方法:

可以參考官方文件裡傳送郵件通知時自定義收件人

  • 獲取公眾號openid
public function routeNotificationForOfficialAccount($notification)
{
    // 返回當前model的公眾號openid
    return $this->openid;
}
  • 獲取小程式openid
public function routeNotificationForMiniProgram($notification)
{
    // 返回當前model的小程式openid
}
  • 獲取開放平臺公眾號openid
public function routeNotificationForOpenOfficialAccount($notification)
{
    // 返回對應開放平臺公眾號使用者的openid
}
  • 獲取開放平臺小程式openid
public function routeNotificationForOpenMiniProgram($notification)
{
    // 返回對應開放平臺小程式使用者的openid
}
  • 獲取企業微信userid
public function routeNotificationForWork($notification)
{
    // 返回當前model的企業微信userid
    return ;
}
  • 獲取開放平臺企業微信userid
public function routeNotificationForOpenWork($notification)
{
    // 返回對應開放平臺企業使用者userid
    return ;
}

3. 可參考官方文件:傳送通知

使用Notifiable特性的notify方法可以給使用者例項傳送通知

use App\Notifications\WorkNotify;

$user->notify(new WorkNotify(new Text('你好啊~')));

使用Notificationfacade 給多個可接收通知的實體傳送通知

Notification::send($users, new WorkNotify(new Markdown('#你好啊~')));

License

Licensed under The MIT License (MIT).


Git地址: laravel-wechat-notification
如果對您有幫助,勞煩點個Start謝謝.

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章