ホームページ  >  記事  >  PHPフレームワーク  >  初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する

藏色散人
藏色散人転載
2021-12-14 15:02:304123ブラウズ

最近、新しい要求を受け取りました。サービス アカウントをフォローしているユーザーにテンプレート メッセージを送信する必要があります。この要求を完了するまでの過程を記録するブログを書く必要があります。拡張パッケージでは、 easywechat
laravel easywechat と組み合わせてパブリック アカウント テンプレート メッセージを送信するための詳細な手順。easywechat の作成者に感謝します。初心者にとっては非常に便利です。
今回の状況が特殊なため、ミニプログラムにバインドされる公式アカウントとプッシュされる公式アカウントが異なり、union_Idが不一致になる可能性があるため、両方の公式アカウントをバインドする必要があります。 WeChat オープン プラットフォーム。そうでない場合は、登録してバインドするだけです。
WeChat オープン プラットフォーム ドキュメント

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する

これはまったく新しい公開なので、アカウントはここにあるので、手順は比較的簡単です。

js セキュア ドメイン名を構成します

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する

シークレットを生成します (主に保存してフォローアップ リセットするとオンライン ビジネスに影響します)

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する

サーバー構成を入力して有効にします

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する
ここに入力されたサーバー アドレスは、今後、フォローやキャンセルなど、公式アカウントからのさまざまなイベント コールバックを受信するために使用されます。
ローカル デバッグにはイントラネットへの侵入が必要です。特定のチュートリアルは自分で検索してください。方法がわかりません

設定を変更します 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# のみを取得できます。

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する(未完成)

#WeChat 公式アカウントのフォロー コールバック イベントには、ユーザーの基本情報が保存されます。これは、unionid と一緒に送信されます。必ず、openid と Unionid を保存してください。公式アカウント。その後のテンプレート メッセージは、公式アカウントの openid に従って送信されます。

WeChat パブリック プラットフォームでテンプレート メッセージをアクティブ化するように申請してください。テンプレート メッセージは、次の Web サイトの「新機能」で見つけてください。右メニューの下部にあるアクティベーションを申請するには、1 ~ 3 営業日程度かかります。わずか 1 日で合格しました

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する(未完成)

アクティベーション後、業種とテンプレートの種類を選択します WeChat が提供するテンプレート ライブラリが見つからない場合と、ビジネスも同様で、自分で申請書を提出する必要がありますが、これには 7 ~ 15 日ほど時間がかかります。テンプレート ライブラリ

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する(未完成) を使用することをお勧めします。ここで、テンプレート 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' => '点击打开小程序'
            ],
        ],
    ]);
レンダリング

初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信する(未完成)

上記は、laravelとeasywechatを組み合わせてパブリックアカウントテンプレートメッセージを送信するプロセス全体で、完了です。

関連する推奨事項: 最新の 5 つの Laravel ビデオ チュートリアル

以上が初心者向けチュートリアル: laravel と easywechat を組み合わせてパブリック アカウント テンプレート メッセージを送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。