ホームページ  >  記事  >  バックエンド開発  >  WeChat パブリック プラットフォーム インテリジェント ロボット PHP 開発例_PHP チュートリアル

WeChat パブリック プラットフォーム インテリジェント ロボット PHP 開発例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:07:501346ブラウズ

現在、WeChat パブリック プラットフォームを使用する販売者が増えています。WeChat パブリック プラットフォームは、Web サイトとのデータ ドッキングを実現できる多数の API インターフェイスを提供しており、ユーザーはコンテンツを入力して関連情報に自動的に返信します。 WeChat パブリック プラットフォームのインテリジェンス開発チュートリアル。

最近、WeChatパブリックプラットフォームの開発に取り組んでおり、一度に20以上の関数を作成しました。とても面白いです〜

WeChat パブリック プラットフォーム インテリジェント ロボット PHP 開発例_PHP チュートリアル

今日は私の開発経験を共有させてください~
WeChat パブリック プラットフォームが提供するインターフェイスは非常にシンプルです。まずメッセージのやり取りのプロセスを見てみましょう。

WeChat パブリック プラットフォーム インテリジェント ロボット PHP 開発例_PHP チュートリアル
より簡単に言うと、ユーザーは WeChat を使用してメッセージを送信します -> WeChat はデータを開発者に送信します -> 開発者はメッセージを処理して WeChat にデータを返します -> WeChat は返されたデータをユーザーに送信しますデータのやり取りは XML を通じて行われます。これは非常に簡単です。

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

1. WeChatパブリックプラットフォームアカウントを登録します
WeChatパブリックプラットフォーム:

https://mp.weixin.qq.com/

※現在、1つのIDカードに登録できるアカウントは2つまでです。アカウント名はV認定に関係しますので、慎重に登録してください。

2. サーバー/仮想ホストを申請します
サーバー/仮想ホストを持たない子供用シューズでは、BAE と SAE を使用できますが、詳しくは紹介しません。

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

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

コードは次のとおりですコードをコピー

これは、URL が WeChat パブリック プラットフォームに正しくアクセスされているかどうかを確認するためのものであり、確認後にファイルを削除することはできません。詳しくは説明しません。ドキュメンテーション。

WeChat パブリック プラットフォーム API ドキュメント:
http://mp.weixin.qq.com/wiki/index.php



5. WeChatパブリックプラットフォーム機能の開発
前述したように、WeChat パブリック プラットフォームと開発者間のデータのやり取りは XML を介して行われます。XML を使用するため、当然のことながら仕様に従う必要があります。そのため、開発を開始する前に、WeChat が提供する XML 仕様を確認してください。公式インターフェースドキュメントの例:

ユーザーが WeChat 公開アカウントにメッセージを送信すると、WeChat サーバーはいくつかのデータを開発者に POST します。 ​

define("TOKEN", "あなたのドメイン名"); //TOKEN 値
$wechatObj = 新しいwechat();
$wechatObj->valid();
クラス微信{
パブリック関数 valid() {
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
エコー $echoStr;
終了します;
}
}
プライベート関数 checkSignature() {

$signature = $_GET["署名"];
$タイムスタンプ = $_GET["タイムスタンプ"];
$nonce = $_GET["nonce"];
$token = トークン;
$tmpArr = array($token, $timestamp, $nonce);
並べ替え($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ) {
true を返します;
} その他 {
false を返します;
}
}
}
?>

コードは次のとおりですコードをコピー




12345678作成時間>



コンテンツ>

1234567890123456



開発者はメッセージを処理した後、WeChat サーバーにデータを返す必要があります:


コードは次のとおりです

WeChat パブリック プラットフォームでは、テキスト メッセージに加えて、ユーザーが画像メッセージ、地理的位置メッセージ、リンク メッセージ、イベント プッシュを送信することもできます。開発者は、WeChat パブリック プラットフォームへのさまざまなメッセージ XML 仕様に返信することもできます。公式ドキュメントも参照してください。

少し簡略化した公式の PHP サンプルを見てみましょう。 ​

コードをコピー




12345678作成時間>



コンテンツ>

0



コードは次のとおりですコードをコピー

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

ユーザーが WeChat パブリック プラットフォームを通じてメッセージを送信すると、パブリック アカウントは「http://www.yourdomain.com」というコンテンツを含むメッセージを返します。
次に行う必要があるのは、ユーザー メッセージのダイナミクスに基づいて結果を返すことです~

SimSimi (Little Yellow Chicken) は現在人気のチャット ロボットです。私は CURL を使用して無料の SimSimi (Little Yellow Chicken) インターフェイスを開発しました。この部分はこの記事の焦点では​​ないため、説明しません。さらにコードを直接アップロードします:

$wechatObj = 新しいwechat();
$wechatObj->responseMsg();
クラス微信{
パブリック関数 responseMsg() {
//---------- データを受信 ---------- //

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"] //POST データを取得します

//SimpleXML を使用して POST からの XML データを解析します

$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

$fromUsername = $postObj->FromUserName //送信者アカウント (OpenID) を取得します

$toUsername = $postObj->ToUserName //受信者のアカウントを取得します
; $keyword = trim($postObj->Content) //メッセージの内容を取得します
$time = time(); // 現在のタイムスタンプを取得します

//---------- 戻りデータ ---------- //

//返信メッセージテンプレート

$textTpl = "


%s

コンテンツ>
0
";

$msgType = "テキスト" //メッセージタイプ

; $contentStr = 'http://www.yourdomain.com' //メッセージのコンテンツを返します
;

//メッセージテンプレートのフォーマット

$resultStr = sprintf($textTpl,$fromUsername,$toUsername,
$time,$msgType,$contentStr);
echo $resultStr; //結果を出力します
}
}
?>

コードは次のとおりです コードをコピー

$wechatObj = 新しいwechat();
$wechatObj->responseMsg();
クラス微信{
パブリック関数 responseMsg() {

//---------- データを受信 ---------- //

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"] //POST データを取得します

//SimpleXML を使用して POST からの XML データを解析します
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

$fromUsername = $postObj->FromUserName //送信者アカウント (OpenID) を取得します
$toUsername = $postObj->ToUserName //受信者のアカウントを取得します
; $keyword = trim($postObj->Content) //メッセージの内容を取得します
$time = time(); // 現在のタイムスタンプを取得します


//---------- 戻りデータ ---------- //

//返信メッセージテンプレート
$textTpl = "


%s

コンテンツ>
0
";

$msgType = "テキスト" //メッセージタイプ
; $contentStr = 'http://www.yourdomain.com' //メッセージのコンテンツを返します

;

//メッセージテンプレートのフォーマット
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,
$time,$msgType,$contentStr);
echo $resultStr; //結果を出力します
}
}
?>

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

http://www.bkjia.com/PHPjc/629894.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/629894.html技術記事最近では、WeChat パブリック プラットフォームを使用する企業が増えています。WeChat パブリック プラットフォームは、Web サイトのデータに接続できる多数の API インターフェイスを提供しており、ユーザーが入力したコンテンツが自動的に返されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。