ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使って公開アカウントの自動返信ルール管理機能を開発する方法

PHPを使って公開アカウントの自動返信ルール管理機能を開発する方法

WBOY
WBOYオリジナル
2023-09-19 11:01:59987ブラウズ

PHPを使って公開アカウントの自動返信ルール管理機能を開発する方法

PHP を使用してパブリック アカウントの自動返信ルール管理機能を開発する方法

WeChat パブリック アカウントの人気により、多くの企業や個人が理解し始めています。 WeChat の公開アカウントを使用します。 WeChat公式アカウントは機能豊富なインターフェースを提供しており、その中でも自動返信ルール管理機能は非常に重要な機能です。この記事では、PHPを使用してパブリックアカウントの自動返信ルール管理機能を開発する方法と具体的なコード例を紹介します。

まず、WeChat 公開アカウントの自動返信ルール管理機能の基本概念を理解する必要があります。 WeChat公式アカウントのバックエンド管理ページでは、カスタムメニューやキーワード自動返信ルールを設定できます。

カスタムメニューとは、ユーザーが公式アカウントをフォローした後にメニューをクリックすると、公式アカウントがメニューの設定に従って応答することを意味します。カスタム メニューは、第 1 レベルのメニューと第 2 レベルのメニューに分けることができ、各メニュー項目は、クリック後に応答メッセージ、ジャンプ リンク、インターフェイス呼び出しなどのイベントをトリガーするように設定できます。

キーワード自動返信ルールとは、ユーザーが特定のキーワードを含むメッセージを送信すると、設定された返信ルールに従って公式アカウントが返信するルールです。キーワードには、テキスト、画像、リンクなどを指定できます。返信ルールには、固定メッセージへの返信、ランダム メッセージへの返信、インターフェイスの呼び出しなどがあります。

次からは、PHPを使って公開アカウントの自動返信ルール管理機能を開発する方法を詳しく紹介していきます。

まず、Web サーバー (Apache や Nginx など)、PHP パーサー、MySQL データベースなどの PHP 開発環境を準備する必要があります。この環境では、PHP を使用して Web アプリケーションを開発し、WeChat サーバーからのリクエストを処理し、それに応じて応答することができます。

次に、WeChat 公式アカウントの AppID と AppSecret を取得する必要があります。 WeChat パブリック プラットフォームで開発者アカウントを申請し、パブリック アカウントを作成できます。公式アカウントの設定で、AppID と AppSecret を見つけることができます。

次に、WeChat パブリック プラットフォームの開発者ツールでサーバー アドレスとトークンを構成する必要があります。サーバーアドレスは弊社が構築したWebサーバーのアドレスであり、トークンはWeChatサーバーと弊社サーバー間の同一性を検証するために使用される文字列です。構成が完了したら、「確認」をクリックしてトークンを保存します。これはコードを記述するときに必要になります。

次に、PHP コードの記述を開始できます。まず、wechat.php という名前のファイルを作成し、そのファイルに次のコードを記述します。

<?php

define("TOKEN", "YOUR_TOKEN");

$wechatObj = new wechatCallbackAPI();
$wechatObj->valid();

class wechatCallbackAPI
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];

        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
                
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}

上記のコードでは、まず定数 TOKEN を定義して、データを WeChat 開発者ツールの構成トークンに保存します。次に、wechatCallbackAPI という名前のクラスを作成し、そのクラスに valid() と checkSignature() という 2 つのメソッドを定義しました。

valid() メソッドは、WeChat サーバーと弊社サーバー間の同一性を検証し、検証結果を返すために使用されます。このメソッドでは、まず WeChat サーバーから渡された echostr パラメーターを取得し、それを $echoStr 変数に保存します。次に、認証のために checkSignature() メソッドを呼び出します。検証に合格すると、$echoStr がクライアントに出力され、プログラムの実行が終了します。

checkSignature() メソッドは、WeChat サーバーから渡されたパラメーターが有効かどうかを確認するために使用されます。まず、WeChat サーバーから渡された署名、タイムスタンプ、ノンス パラメータを取得し、対応する変数に保存します。次に、TOKEN、タイムスタンプ、ノンスを辞書編集順に並べ替え、暗号化に SHA1 アルゴリズムを使用します。最後に、暗号化された文字列が WeChat サーバーから渡された署名と比較され、一致する場合は検証に合格し、一致しない場合は検証に失敗します。

次に、自動応答のコードを記述します。簡単のため、ここではキーワード自動返信機能のみを実装します。 wechat.php ファイルに、次のコードを追加します。

<?php

// 省略上面的代码

class wechatCallbackAPI
{
    // 省略上面的代码
    
    public function responseMsg()
    {
        // 获取微信服务器POST过来的XML数据
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $content = trim($postObj->Content);
            $time = time();

            if ($content == "你好"){
                $textTpl = "<xml>
";
                $textTpl .= "<ToUserName><![CDATA[%s]]></ToUserName>
";
                $textTpl .= "<FromUserName><![CDATA[%s]]></FromUserName>
";
                $textTpl .= "<CreateTime>%s</CreateTime>
";
                $textTpl .= "<MsgType><![CDATA[text]]></MsgType>
";
                $textTpl .= "<Content><![CDATA[%s]]></Content>
";
                $textTpl .= "</xml>";

                $msgType = "text";
                $replyContent = "你好!欢迎关注我的公众号!";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $replyContent);
                echo $resultStr;
            } else {
                echo "success";
            }
        }else {
            echo "success";
            exit;
        }
    }
}

$wechatObj = new wechatCallbackAPI();
$wechatObj->valid();
$wechatObj->responseMsg();

上記のコードでは、wechatCallbackAPI クラス (ユーザー メッセージの処理に使用) に responseMsg() という名前のメソッドを追加しました。このメソッドでは、まず WeChat サーバーから XML データ POST を取得し、それを $postStr 変数に保存します。次に、XML データは simplexml_load_string() 関数を通じて SimpleXMLElement オブジェクトに変換され、対応するノード値を持つ変数に保存されます。

ここではキーワード自動返信機能を例に説明します。ユーザーが送ったメッセージの内容が「こんにちは」であれば公式アカウントは「こんにちは!公式アカウントのフォローへようこそ!」と返信しますが、それ以外の場合は返信がありません。

最後に、wechat.php ファイルの最後に $wechatObj オブジェクトを作成し、valid() メソッドと responseMsg() メソッドを順番に呼び出して、WeChat サーバーと私たち自身のサーバー間の認証を完了しました。ユーザーメッセージを処理します。

ここまでで、PHPを使用して公開アカウントの自動返信ルール管理機能を開発するコードの記述が完了しました。次に、wechat.php ファイルを Web サーバーにデプロイし、WeChat パブリック プラットフォームでサーバー アドレスとトークンを構成して、コードが有効かどうかをテストします。

要約すると、この記事では、PHP を使用してパブリック アカウントの自動返信ルール管理機能を開発する方法と、具体的なコード例を紹介します。お役に立てれば幸いです。

以上がPHPを使って公開アカウントの自動返信ルール管理機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。