PHP の基本チュートリアル WeChat パブリック プラットフォームの開発

巴扎黑
リリース: 2023-03-15 10:38:01
オリジナル
1360 人が閲覧しました


要約: WeChat パブリック プラットフォームによって提供されるインターフェイスは非常にシンプルです。最初にメッセージ インタラクション プロセスを見てみましょう。より簡単に言うと、ユーザーは WeChat を使用してメッセージを送信します。WeChat は開発者にデータを送信します。メッセージを処理してデータを返す WeChat へ - WeChat は返されたデータをユーザーに送信します。その間、データのやり取りは XML を通じて完了します。それだけです...

WeChat パブリック プラットフォームが提供するインターフェイスは非常にシンプルです。まずメッセージ対話プロセスを見てみましょう:

PHP の基本チュートリアル WeChat パブリック プラットフォームの開発

は、ユーザーが WeChat を使用してメッセージを送信する -> WeChat が開発者にデータを送信する -> 開発者がメッセージを処理して WeChat にデータを返す -> WeChat が返されたデータを送信する、と述べました。データをユーザーに送信する間、データのやり取りは XML を通じて完了します。

WeChat インテリジェント チャットボットを開発するには、以下の例を作成してください:

  1. WeChat パブリック プラットフォーム アカウントを登録します
    WeChat パブリック プラットフォーム:
    https://mp.weixin.qq.com/
    注: 現在 ID カード登録できるアカウント名はV認定に関わるものですので、慎重に登録してください。

  2. サーバー/仮想ホストを申請する
    サーバー/仮想ホストのない子供用の靴はBAEとSAEを使用でき、これ以上の紹介はありません。

  3. 開発者モードを有効にする
    WeChatパブリックプラットフォームには2つのモードがあり、1つは編集モード(愚者モード)で、シンプルですが機能は1つです。もう 1 つは開発者モードで、開発を通じて複雑な機能を実装できます。明らかに、2 つのモードは相互に排他的です。WeChat パブリック プラットフォームにログインし、[高度な機能] メニューから開発者モードをオンにします。

  4. インターフェース構成情報を入力します
    これは「高度な機能」メニューでも構成され、次の 2 つのパラメーターを構成する必要があります:
    URL: 開発者アプリケーションのアクセス アドレス。現在はポート 80 のみをサポートしており、「http:/」 /www.YoonPer.com/weixin/index.php」を例として挙げます。
    トークン: 署名を生成したいものをすべて入力します。例として「YoonPer」を取り上げます。
    入力後、次のコードをindex.phpとして保存し、http://www.YoonPer.com/weixin/ディレクトリにアップロードし、最後に「送信」をクリックして検証を完了します。

define("TOKEN", "YoonPer"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
  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;
    }
  }
}
?>
ログイン後にコピー

実際、URL が正しくアクセスされているかどうかを検証するのに実質的な意味はありません。検証後にファイルを削除することはできません。子どもたちは公式ドキュメントを確認できます。
WeChat パブリック プラットフォーム API ドキュメント: http://mp.weixin.qq.com/wiki/index.php

  1. WeChat パブリック プラットフォーム機能を開発します
    OK、上記のように、WeChat パブリック プラットフォームと開発者間のデータのやり取りXML を使用するため、当然のことながら仕様に従う必要があるため、開発を開始する前に、テキスト メッセージを例に挙げて、XML の仕様を確認してください。ユーザーが WeChat パブリック アカウントにメッセージを送信する メッセージを送信するとき、WeChat サーバーは開発者にデータを POST します:

    <xml><ToUserName>ToUserName><FromUserName>FromUserName><CreateTime>12345678CreateTime><MsgType><![CDATA1]>MsgType><Content>Content><MsgId>1234567890123456MsgId>xml>
    ログイン後にコピー
  2. 開発者はメッセージを処理した後、WeChat サーバーにデータを返す必要があります:
<xml><ToUserName>ToUserName><FromUserName>FromUserName><CreateTime>12345678CreateTime><MsgType><![CDATA1]>MsgType><Content>Content><FuncFlag>0FuncFlag>xml>
ログイン後にコピー

WeChat パブリック プラットフォームでは、ユーザーが画像メッセージや地理的位置情報を送信することもできます。また、開発者は、WeChat パブリック プラットフォームに音楽メッセージやグラフィック メッセージに返信することもできます。公式文書で発見されました。

いくつか簡略化した公式の PHP の例を見てみましょう。

responseMsg();
class wechat {
 public function responseMsg() {
  //---------- 接 收 数 据 ---------- //
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
  //用SimpleXML解析POST过来的XML数据
  $postObj = simplexml_load_string($postStr,&#39;SimpleXMLElement&#39;,LIBXML_NOCDATA);
  $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
  $toUsername = $postObj->ToUserName; //获取接收方账号
  $keyword = trim($postObj->Content); //获取消息内容
  $time = time(); //获取当前时间戳
  //---------- 返 回 数 据 ---------- //
  //返回消息模板
  $textTpl = "%s0";
  $msgType = "text"; //消息类型
  include(&#39;simsimi.php&#39;);
  $contentStr = simsimi($keyword); //返回消息内容
  //格式化消息模板
  $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
  echo $resultStr; //输出结果
 }
}
?>
ログイン後にコピー

コードを Index.php として保存し、http://www.YoonPer.com/weixin/ ディレクトリにアップロードします。今すぐ削除しないでください。ファイルは直接上書きされます。

現在、ユーザーは WeChat パブリック プラットフォームを通じてメッセージを送信すると、パブリック アカウントは「http://www.YoonPer.com」というコンテンツを含むメッセージを返します。

次に行う必要があるのは、ユーザーのメッセージに基づいて動的に結果を返すことです~

SimSimi (Little Yellow Chicken) は現在人気のチャットロボットです。CURL と入力キーワードを使用して無料の SimSimi (Little Yellow Chicken) インターフェイスを開発しました。テキストの返信が返されます。この部分はこの記事の焦点では​​ないので、これ以上は説明しません。コードに進みます。

/*-------------------------------------------------
|   simsimi.php [ 智能聊天(simsimi) ]
+--------------------------------------------------
|   Author: LimYoonPer
+------------------------------------------------*/

function simsimi ($keyword)
{
  $keyword = urlencode($keyword);
  //----------- 获取COOKIE ----------//
  $url = "http://www.simsimi.com/";
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $content = curl_exec($ch);
  list($header, $body) = explode("\r\n\r\n", $content);
  preg_match_all("/set\-cookie:([^\r\n]*);/iU", $header, $matches);
  $cookie = implode(&#39;;&#39;, $matches[1]).";simsimi_uid=1;";
  curl_close($ch);
  //----------- 抓 取 回 复 ----------//
  $url = "http://www.simsimi.com/func/reqN?lc=ch&ft=0.0&req=$keyword&fl=http%3A%2F%2Fwww.simsimi.com%2Ftalk.htm";
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  $content = json_decode(curl_exec($ch), 1);
  curl_close($ch);
  if ( $content[&#39;result&#39;] == &#39;200&#39; ) {
    return $content[&#39;sentence_resp&#39;];
  } else {
    return &#39;我还不会回答这个问题...&#39;;
  }
}
?>
ログイン後にコピー

上記の 2 つのコードを統合すれば完了です。 WeChat サーバーは 5 秒以内に応答を受信しないため、接続を切断すると、このインターフェイスを通じてタイムアウトが発生する可能性があり、SimSimi は BAE および SAE でのクロール リクエストをブロックしているため、SimSimi 公式の有料 API を使用することをお勧めします。早いですね〜

以上がPHP の基本チュートリアル WeChat パブリック プラットフォームの開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート