PHP WeChat パブリック プラットフォーム開発 - メッセージ返信のカプセル化_PHP チュートリアル
Jul 13, 2016 am 10:35 AM【PHP WeChatパブリックプラットフォーム開発シリーズ】
01. WeChatインターフェースを設定する
02. パブリックプラットフォームのサンプルコード解析
03. サブスクリプションイベント(subscribe)処理
04. 簡易返信機能の開発
05.天気予報機能開発
06. 翻訳機能開発
07. チャットボット機能開発
08.カスタマイズメニュー機能
09. データベース操作
10. メッセージ返信のカプセル化
この記事のURL: http://www.phpchina.com/archives/view-43418-1.html
このシリーズは、PHPChina の特別招待著者である @David_Tang によって寄稿されたものです。転載する場合は、著者の情報とこの記事のアドレスを明記してください。
1. はじめに
WeChat パブリック プラットフォームには、テキスト返信、音楽返信、グラフィック返信という 3 つのメッセージ返信形式が用意されており、これら 3 つのメッセージ返信形式について簡単に説明し、読者が使用できるようにカプセル化します。
2. アイデア分析
POST リクエストごとに、開発者はメッセージに応答するための応答パッケージ内の特定の XML 構造を返します (現在、応答テキスト、グラフィックス、音声、ビデオ、および音楽をサポートしています)。
3. テキスト返信
3.1 テキスト返信の XML 構造


3.2 構造の説明
3.3 具体的な実装
上記の XML 構造の場合、対応する位置にコンテンツを入力し、出力をフォーマットするだけです。
説明:
ToUserName の位置に $fromUsername = $postObj->FromUserName を入力します。これは、メッセージを送信したユーザー、つまり受信者のアカウントにメッセージを返します。
FromUserName の位置に $toUsername = $postObj->ToUserName を入力します。これは開発者の WeChat ID です。
これは、responseMsg() メソッドをインスタンス化して、「wechat ワールドへようこそ!」というメッセージを返信する公式のテキスト返信です。
ここでは、読者が上記の手順を理解しやすいように、少し変更を加えて fromUsername メッセージと toUsername メッセージを返します。
3.4 テスト結果
3.5 呼び出し可能な関数にカプセル化
上記のコンテンツを関数にカプセル化し、応答テキストが必要な場合に直接呼び出すことができます。これは便利で簡潔です。responseText.func.inc.php コードは次のとおりです。


このように、$object と $content を渡し、テキストに返信する必要があるファイルをファイルに導入して、_response_text() メソッドを呼び出す限り、テキストに直接返信できます。
3.6 テストコード
3.6.1 返信文の関数ファイルをメインファイルに導入します
リーリー3.6.2 通常のメッセージ返信


3.6.3 フォロー時の返信


3.7 テスト結果
返信テキストが成功しました。
4. 画像とテキストで返信
4.1 画像とテキストの返信 XML 構造


4.2 構造の説明
テキスト返信形式と同様に、グラフィック メッセージに返信するには、対応する位置に対応する内容を入力するだけです。
4.3 具体的な実装
画像とテキストの返信には、単一の画像とテキストを使用することも、複数の画像とテキストを使用することもできます。ここでは、最初に単一の画像とテキストの場合について読者に説明し、次に複数の画像とテキストを紹介します。
画像とテキストの返信の XML 構造を、画像とテキストのヘッダー、画像とテキストの本文、画像とテキストの末尾の 3 つの構造に分解します。画像とテキストの本文は、タイトル、説明、画像 URL、元のテキスト URL です。画像やテキストに応答すると表示されます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|

接下来,我们对三段结构分别插入对应内容:
A. $newsTplHead
1 |
|
B. $newsTplBody
1 2 3 4 5 |
|
说明:$newsContent 是从主文件传入函数的图文数组。
C. $newsTplFoot
1 2 |
|
然后将三段进行拼接返回就可以回复单条图文了。
1 |
|
将以上内容写到一个函数里,命名为 _response_news() 函数,以供下面调用测试。
4.4 测试代码
4.4.1 在主文件中引入回复图文的函数文件
1 |
|
4.4.2 创建数组并传入
在主文件中,只需要向 _response_news() 函数中传入一个数组和$postObj 即可。

1 2 3 4 5 6 7 8 9 |
|

4.5 测试结果
点击进入查看
单图文回复测试成功。
4.6 多图文回复
有了上面的引导,读者应该能够想到回复多图文的思路了,就是将多维数组中的值循环放到相应的位置,然后拼接起来就可以了,下面进行讲解。
4.6.1 获取图文条数
1 |
|
4.6.2 判断图文条数
因为微信限制了回复的图文消息数为10条以内,所以需要判断图文条数,如果小于10条,则图文数等于原来的图文数,如果大于等于10条,则强制限制为10条。
1 |
|
4.6.3 组织图文体
图文头和图文尾和上面单图文一样,不再赘述,主要是图文体的组织。
用foreach 循环出数组的内容并赋予图文体,并进行拼接:
1 2 3 |
|
说明:$newsContent 是从主文件传入函数的图文数组。
4.6.4 拼接并返回
1 |
|
将以上内容写到一个函数里,命名为 _response_multiNews() 函数,以供下面调用测试。
4.7 测试多图文
4.7.1 在主文件中引入回复多图文的函数文件
1 |
|
4.7.2 创建多维数组并传入

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|

4.8 测试多图文结果
点击进入查看
测试多图文成功。
五、音乐回复
微信还提供了一种消息回复的格式,即音乐回复,下面我们编写程序测试一下。
注意:由于音乐版权的问题,现在很少有回复音乐的API,开放的API 查询出来的音乐信息也有很多是不正确的。所以在这里,我们上传几首音乐到自己的服务器空间测试。
本地文件:
测试是否能够正常播放:
5.1 音乐回复xml 结构

1 2 3 4 5 6 7 8 9 10 11 12 |
|

5.2 结构说明
5.3 具体实施
我们先做一个固定的歌曲回复来引导读者,然后再引出更高级别的歌曲查询回复。
5.3.1 在xml 结构的相应位置插入相应数据

1 2 3 4 5 6 |
|

5.3.2 测试代码
1 2 |
|
5.3.3 测试结果
5.4 模拟点歌
有了上面的简单案例引导,读者应该可以想到模拟点歌的具体实现了吧,下面就来简单介绍一下。
思路:将歌曲代码和对应的歌曲名存入数据库,用户输入歌曲名,在数据库中找到歌曲名对应的歌曲编号,然后就可以生成MusicUrl 回复用户了。
5.4.1 データベースの作成

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

Gateio中国の公式ウェブサイトgate.io取引プラットフォームWebサイト
