ホームページ >バックエンド開発 >PHPチュートリアル >WeChat パブリック アカウント開発の完全なチュートリアル 2

WeChat パブリック アカウント開発の完全なチュートリアル 2

不言
不言オリジナル
2018-04-17 09:54:136384ブラウズ

この記事では、WeChat パブリック アカウントの開発に関する 2 番目の完全なチュートリアルを紹介します。これは、必要な友人全員に参考にしていただけるようになっています。過去 2 年間の WeChat パブリック アカウントに関する調査の結果。多数のアカウントと小規模なプログラムがあり、多くのプロジェクトが作成されています。だからこそ、私は包括的な制作チュートリアルを書くつもりです。もちろん、最良のチュートリアルは WeChat 作業プラットフォームのドキュメントです。ここでは私の作品の制作過程についてお話します。私はすべての関連記事のソース コードを自分の github でホストしています。フォロー歓迎です: アドレス

クリックしてリンクを開きます

。チュートリアルを始めましょう。 上の最初のセクションでは、開発者モードをオンにして

access_token を取得してキャッシュすることと、簡単なテストについて説明しましたが、このセクションでは、この のパラメーターを使用する必要はありません。 当面は access_token です。まずテスト コードのその部分について話して、改善してみましょう: (Baidu Maps や Turing Robots などのテクノロジを紹介します)。あなたについて: 開始:

1. メッセージの受信:

メッセージを受信すると、WeChat はユーザーの内容に応じてメッセージを分割します。それぞれテキストメッセージ、画像メッセージ、言語メッセージ、ビデオ、接続、その他のメッセージがあります。ユーザーがパブリック プラットフォームでメッセージを操作すると、各メッセージはカスタマイズされた

URL

アドレスを要求します。リクエストプロセス中に、さまざまなパラメータがxml形式を使用して送信されます。メッセージを受け入れるということは、WeChat リクエスト プロセスから関連データを取得することを意味します。 コード内で使用されている変数置換は、PHP関数

sprintf

を使用しています。その機能は、変数を順番に置き換えることを可能にするものにすぎません。

1.1. テキストメッセージを受け入れる:

形式は上記の通り: コードは次のとおり: テキストテンプレート


/ / テキストテンプレート

$textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
テスト結果 最初のセクションで見たように、私はまたしても画像メッセージを受け入れるための

1.2

を実証していません:


コードは次のとおりです:



//画像テンプレート

$picTpl="<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <Image>
                    <MediaId><![CDATA[%s]]></MediaId>
                    </Image>
                </xml>";
コードは次のとおりです:


テスト結果は次のとおりです。


1.3: 言語メッセージの受け入れ:

テンプレートは次のとおりです:

コードは次のとおりです:

}elseif($msgType=="voice"){
$contentStr ="语音消息MediaId为:".$postObj->MediaId.&#39;具体内容为:&#39;.$postObj->Recognition;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,&#39;text&#39;, $contentStr);
echo $resultStr;
}

結果は次のとおりです: 上記のコードでは、次の 1 つを使用しました:


私のテスト結果の写真が添付されています:


1.4 ビデオメッセージを受け入れる:

ドキュメントは次のとおりです:


代码如下:



elseif($msgType=="video"){
$contentStr ="视频消息MediaId为:".$postObj->MediaId;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,&#39;text&#39;, $contentStr);
echo $resultStr;
}

1.5:接受地理位置:

代码:



elseif($MsgType == &#39;location&#39;){
            $contentStr = "经度为:".$postObj->Location_Y.&#39;维度&#39;.$postObj->Location_X.&#39;具体地址为:&#39;.$postObj->Label;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, &#39;text&#39;, $contentStr);
    file_put_contents(&#39;2&#39;, $resultStr);
    echo $resultStr;
        }

结果如下:


1.6:接受链接消息:

文档如下:


代码如下:



elseif($MsgType == &#39;link&#39;){
            $contentStr = &#39;消息的标题为&#39;.$postObj->Title;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, &#39;text&#39;, $contentStr);
    file_put_contents(&#39;2&#39;, $resultStr);
    echo $resultStr;
        }

结果如下:


上述几种情况都是使用的text模板接受的消息。设置微信回复的内容。接下来我们对回复内容的格式进行丰富:

2.消息的回复:

2.1回复文本消息:

格式如下:

代码如下:


2.2:回复图片的消息:

代码如下:



结果如下:


2.3回复语音的消息:

模板:

$voiceTpl="<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Voice>
                <MediaId><![CDATA[%s]]></MediaId>
            </Voice>
            </xml>";

回复代码:


elseif($keyword == &#39;语音&#39;){
                // 关于此MediaId需要从素材库中获得,没有可以临时使用消息返回的媒体ID
                $MediaId = &#39;3XlXZ4-r2OTNYTFAkcmpWv4QjWtwg_15B4PytQJVwOAwHpOfc38mGZTSDkDXx9po&#39;;
                $resultStr = sprintf($voiceTpl, $fromUsername, $toUsername, $time, &#39;voice&#39;,$MediaId);
                echo $resultStr;
            }

结果如下:


2.4:回复视频的消息:

模板如下:


在线调试接口上传视频素材:



视频模板:


$VideoTpl="<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Video>
                <MediaId><![CDATA[%s]]></MediaId>
                <Title><![CDATA[%s]]></Title>
                <Description><![CDATA[%s]]></Description>
            </Video>
            </xml>";

回复代码如下:



elseif($keyword=="视频"){
//关于此MediaId需要从素材库中获得,没有可以使用临时消息返回的媒体id
$MediaId="xxMyAoPbUt1u3q5Z95xrhafNzyvL3Tg08E-9Ub2m6db_Elj4XAJHr2pUOqLhREyB";
$Title = $Description ="视频还是好看的";
$resultStr = sprintf($VideoTpl, $fromUsername, $toUsername, $time, &#39;video&#39;, $MediaId, $Title,$Description);
echo $resultStr;
}

结果如下:


2.5:回复图文消息:

文档信息:

图文模板:



// 图文模板

$newsTpc="<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <ArticleCount>%d</ArticleCount>
                    <Articles>%s</Articles>
                    </xml>";

回复代码:



elseif($keyword=="图文"){
$data = array(
array(&#39;Title&#39;=>&#39;图文消息&#39;,&#39;Description&#39;=>&#39;效果好像还不错啊&#39;,&#39;PicUrl&#39;=>&#39;http://mmbiz.qpic.cn/mmbiz_jpg/E3TENE8JsTAqus3ic5qEtt4wl14ibBu4UaobarzTVOP18Awt83hkZM0aI9XStapN4xay6JI4lfm0H7QnKSfxQyVA/0&#39;,&#39;Url&#39;=>&#39;http://xiaomi.com&#39;)
);
file_put_contents(&#39;2&#39;,$data[0][&#39;Title&#39;]);
for ($i=0; $i <count($data); $i++) {
$Articles .="<item>
                                <Title><![CDATA[{$data[$i][&#39;Title&#39;]}]]></Title> 
                                <Description><![CDATA[{$data[$i][&#39;Description&#39;]}]]></Description>
                                <PicUrl><![CDATA[{$data[$i][&#39;PicUrl&#39;]}]]></PicUrl>
                                <Url><![CDATA[{$data[$i][&#39;Url&#39;]}]]></Url>
                               </item>";
}
$count = count($data);
$resultStr = sprintf($newsTpc, $fromUsername, $toUsername, $time, &#39;news&#39;,$count,$Articles);
echo $resultStr;
}

结果如下:



到此为止我们对所有的接受和回复的代码进行的书写和演示,所有的源码我会放在我的github上面,大家可以下载和关注,这一节到此为止,下一节开始使用我们的access_token开始我们的自定义菜单。

相关推荐:

微信公众号开发完整教程一


以上がWeChat パブリック アカウント開発の完全なチュートリアル 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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