最近、新しい要求を受け取りました。サービス アカウントをフォローしているユーザーにテンプレート メッセージを送信する必要があります。この要求を完了するまでの過程を記録するブログを書く必要があります。拡張パッケージでは、 easywechat
laravel easywechat と組み合わせてパブリック アカウント テンプレート メッセージを送信するための詳細な手順。easywechat の作成者に感謝します。初心者にとっては非常に便利です。
今回の状況が特殊なため、ミニプログラムにバインドされる公式アカウントとプッシュされる公式アカウントが異なり、union_Idが不一致になる可能性があるため、両方の公式アカウントをバインドする必要があります。 WeChat オープン プラットフォーム。そうでない場合は、登録してバインドするだけです。
WeChat オープン プラットフォーム ドキュメント
js セキュア ドメイン名を構成します
シークレットを生成します (主に保存してフォローアップ リセットするとオンライン ビジネスに影響します)
サーバー構成を入力して有効にします
ここに入力されたサーバー アドレスは、今後、フォローやキャンセルなど、公式アカウントからのさまざまなイベント コールバックを受信するために使用されます。
ローカル デバッグにはイントラネットへの侵入が必要です。特定のチュートリアルは自分で検索してください。方法がわかりません
設定を変更します WeChat は、入力されたサーバー アドレスが正常に受信できるかどうかを確認します。そのため、検証プロセスが実行され、インターフェースは正しい戻りパラメータを与える必要があります
アクセスドキュメントリンク参照
WeChat 検証と後続のコールバックのため、このルートが使用され、検証は GET リクエストで、後続のイベント コールバックなどはポストリクエストであるため、ルートを任意のタイプに設定する必要がありますRoute::any('official/notify', 'WechatController@officialNotify');ログイン後にコピーeasywechat 作者 An Zhengchao が検討してくれました サーバー検証 は、1 つのリンクで メッセージの受信と返信 と互換性があるため、ドキュメント
public function officialNotify() { Log::channel('wechat')->info("公众号回调!!!!!1" ); $body = file_get_contents('php://input'); Log::channel('wechat')->info($body); $config = [ 'app_id' => config('wechat.yueliu_official_account.app_id'), 'secret' => config('wechat.yueliu_official_account.secret'), 'token' => config('wechat.yueliu_official_account.token'),// 'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式请勿填写 EncodingAESKey 'aes_key' => '', // 明文模式请勿填写 EncodingAESKey 'log' => [ 'level' => 'error', 'file' => storage_path('logs/wechat.log'), ], 'response_type' => 'array' ]; $app = Factory::officialAccount($config); $app->server->push(function ($message) { Log::channel('wechat')->info($message); switch ($message['MsgType']) { case 'event': return '收到事件消息'; break; case 'text': return '收到文本消息'; break; case 'image': return '收到图片消息'; break; case 'voice': return '收到语音消息'; break; case 'video': return '收到视频消息'; break; case 'location': return '收到坐标消息'; break; case 'link': return '收到链接消息'; break; case 'file': return '收到文件消息'; // ... 其它消息 default: return '收到其它消息'; break; } }); // 在 laravel 中: $response = $app->server->serve(); // $response 为 `Symfony\Component\HttpFoundation\Response` 实例 // 对于需要直接输出响应的框架,或者原生 PHP 环境下 $response->send(); // 而 laravel 中直接返回即可: return $response; }ログイン後にコピー
ユーザーが注意を払った後、ビジネスのニーズに応じて、ミニ プログラムにジャンプできるメッセージをユーザーに送信します。ここでは、イベント メッセージを受信した後、それがイベント メッセージであるかどうかを判断する必要があります。関心のあるイベントを選択し、返信メッセージを次のコードに変更します。ここのリンクをクリックして、ミニ プログラムを直接開きます。ユーザーに確認するかどうかを尋ねるプロンプトは表示されません。
次の点に注意してください:公開アカウントをフォローすると、[$app->user->get($openId);] を通じて UnionID といくつかの基本情報を取得できます。フォローを解除すると、openid
case 'event': return '欢迎关注音视频资产管理与协同交付平台「laravel」官方微信。 <a>点击跳转</a> 网页版请至: https://learnku.com'; break;
Rendering# のみを取得できます。
#WeChat 公式アカウントのフォロー コールバック イベントには、ユーザーの基本情報が保存されます。これは、unionid と一緒に送信されます。必ず、openid と Unionid を保存してください。公式アカウント。その後のテンプレート メッセージは、公式アカウントの openid に従って送信されます。WeChat パブリック プラットフォームでテンプレート メッセージをアクティブ化するように申請してください。テンプレート メッセージは、次の Web サイトの「新機能」で見つけてください。右メニューの下部にあるアクティベーションを申請するには、1 ~ 3 営業日程度かかります。わずか 1 日で合格しました
アクティベーション後、業種とテンプレートの種類を選択します WeChat が提供するテンプレート ライブラリが見つからない場合と、ビジネスも同様で、自分で申請書を提出する必要がありますが、これには 7 ~ 15 日ほど時間がかかります。テンプレート ライブラリ
を使用することをお勧めします。ここで、テンプレート ID をコードに保存する必要があります。後でテンプレート メッセージを送信するには、
$openId = '公众号的openid'; $config = [ 'app_id' => config('wechat.yueliu_official_account.app_id'), 'secret' => config('wechat.yueliu_official_account.secret'), 'token' => config('wechat.yueliu_official_account.token'), // 'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式请勿填写 EncodingAESKey 'aes_key' => '', // 明文模式请勿填写 EncodingAESKey 'log' => [ 'level' => 'error', 'file' => storage_path('logs/wechat.log'), ], 'response_type' => 'array' ]; $app = Factory::officialAccount($config);// $user = $app->user->get($openId);// dd($user); // 发送模板消息 $app->template_message->send([ 'touser' => $openId, 'template_id' => '模板id', 'url' => 'http://www.网站.cn', 'miniprogram' => [ // 跳转到小程序,和上面的url同时存在的话,则优先显示小程序 'appid' => '小程序的id', 'pagepath' => '小程序页面地址', ], 'data' => [ 'first' => [ 'value' => '赵师傅已加入群组演示项目', 'color' => '#888888' ], 'keyword1' => [ 'value' => '加入项目' ], 'keyword2' => [ 'value' => '加入成功' ], 'keyword3' => [ 'value' => '2021-12-10 14:21:05' ], 'remark' => [ 'value' => '点击打开小程序' ], ], ]);
関連する推奨事項: 最新の 5 つの Laravel ビデオ チュートリアル
以上が初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。