微信大众,平台开辟(四) 简单答复功能开辟
添加时间:2013-7-4 点击量:
一、简介
微信大众,平台可以按照用户发送的信息进行断定,然后给出对应的答复,具有杰出的交互性。下文将模仿简单的答复功能,按照这个案例,开辟者也可以根蒂根基懂得微信交互的道理,进行更深层次的开辟。
二、思路解析
用户发送过来的文本信息,我们可以提取关键字,经由过程简单的 if...elseif...else... 实现。
关键代码如下:
if(¥keyword==你好){
¥contentStr = hello;
}elseif(¥keyword==姑苏){
¥contentStr = 上有天堂,下有苏杭;
}else{
¥contentStr = 感激您存眷【卓锦姑苏】 微旌旗灯号:zhuojinsz;
}
若是用户发送你好,则答复hello,若是用户发送姑苏,则答复上有天堂,下有苏杭,其他信息,则答复你的迎接词。
三、完全代码
<?php
/
wechat php test
/
//define your token
define(TOKEN, zhuojin);
¥wechatObj = new wechatCallbackapiTest();
¥wechatObj->responseMsg();
//¥wechatObj->valid();
class wechatCallbackapiTest
{
/public function valid()
{
¥echoStr = ¥_GET[echostr];
//valid signature , option
if(¥this->checkSignature()){
echo ¥echoStr;
exit;
}
}/
public function responseMsg()
{
//get post data, May be due to the different environments
¥postStr = ¥GLOBALS[HTTP_RAW_POST_DATA];
//extract post data
if (!empty(¥postStr)){
¥postObj = simplexml_load_string(¥postStr, SimpleXMLElement, LIBXML_NOCDATA);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
echo ¥resultStr;
}else {
echo ;
exit;
}
}
public function handleText(¥postObj)
{
¥Username = ¥postObj->FromUserName;
¥toUsername = ¥postObj->ToUserName;
¥keyword = trim(¥postObj->Content);
¥time = time();
¥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>;
if(!empty( ¥keyword ))
{
¥msgType = text;
if(¥keyword==你好){
¥contentStr = hello;
}elseif(¥keyword==姑苏){
¥contentStr = 上有天堂,下有苏杭;
}else{
¥contentStr = 感激您存眷【卓锦姑苏】 微旌旗灯号:zhuojinsz;
}
¥resultStr = sprintf(¥textTpl, ¥Username, ¥toUsername, ¥time, ¥msgType, ¥contentStr);
echo ¥resultStr;
}else{
echo Input something...;
}
}
public function handleEvent(¥object)
{
¥contentStr = ;
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
¥resultStr = ¥this->responseText(¥object, ¥contentStr);
return ¥resultStr;
}
public function responseText(¥object, ¥content, ¥flag=0)
{
¥textTpl = <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>;
¥resultStr = sprintf(¥textTpl, ¥object->FromUserName, ¥object->ToUserName, time(), ¥content, ¥flag);
return ¥resultStr;
}
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;
}
}
}
?>
四、测试
五、存眷
请存眷 卓锦姑苏 微信大众,帐号,卓锦姑苏 基于SAE 平台开辟,针对于主流的微信功能进行开辟测试。
您可以存眷 卓锦姑苏 大众,帐号进行功能测试,以及获取新的应用开辟。
1. 登录微信客户端,伴侣们 -> 添加伴侣 -> 搜号码 -> zhuojinsz,查找并存眷。
2. 扫描二维码:
David Camp
- 技巧交换,请加QQ群:213260412
- 营业合作,请接洽作者QQ:562866602
Great People Share Knowledge...
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
一、简介
微信大众,平台可以按照用户发送的信息进行断定,然后给出对应的答复,具有杰出的交互性。下文将模仿简单的答复功能,按照这个案例,开辟者也可以根蒂根基懂得微信交互的道理,进行更深层次的开辟。
二、思路解析
用户发送过来的文本信息,我们可以提取关键字,经由过程简单的 if...elseif...else... 实现。
关键代码如下:
if(¥keyword==你好){
¥contentStr = hello;
}elseif(¥keyword==姑苏){
¥contentStr = 上有天堂,下有苏杭;
}else{
¥contentStr = 感激您存眷【卓锦姑苏】 微旌旗灯号:zhuojinsz;
}
若是用户发送你好,则答复hello,若是用户发送姑苏,则答复上有天堂,下有苏杭,其他信息,则答复你的迎接词。
三、完全代码
<?php
/
wechat php test
/
//define your token
define(TOKEN, zhuojin);
¥wechatObj = new wechatCallbackapiTest();
¥wechatObj->responseMsg();
//¥wechatObj->valid();
class wechatCallbackapiTest
{
/public function valid()
{
¥echoStr = ¥_GET[echostr];
//valid signature , option
if(¥this->checkSignature()){
echo ¥echoStr;
exit;
}
}/
public function responseMsg()
{
//get post data, May be due to the different environments
¥postStr = ¥GLOBALS[HTTP_RAW_POST_DATA];
//extract post data
if (!empty(¥postStr)){
¥postObj = simplexml_load_string(¥postStr, SimpleXMLElement, LIBXML_NOCDATA);
¥RX_TYPE = trim(¥postObj->MsgType);
switch(¥RX_TYPE)
{
case text:
¥resultStr = ¥this->handleText(¥postObj);
break;
case event:
¥resultStr = ¥this->handleEvent(¥postObj);
break;
default:
¥resultStr = Unknow msg type: .¥RX_TYPE;
break;
}
echo ¥resultStr;
}else {
echo ;
exit;
}
}
public function handleText(¥postObj)
{
¥Username = ¥postObj->FromUserName;
¥toUsername = ¥postObj->ToUserName;
¥keyword = trim(¥postObj->Content);
¥time = time();
¥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>;
if(!empty( ¥keyword ))
{
¥msgType = text;
if(¥keyword==你好){
¥contentStr = hello;
}elseif(¥keyword==姑苏){
¥contentStr = 上有天堂,下有苏杭;
}else{
¥contentStr = 感激您存眷【卓锦姑苏】 微旌旗灯号:zhuojinsz;
}
¥resultStr = sprintf(¥textTpl, ¥Username, ¥toUsername, ¥time, ¥msgType, ¥contentStr);
echo ¥resultStr;
}else{
echo Input something...;
}
}
public function handleEvent(¥object)
{
¥contentStr = ;
switch (¥object->Event)
{
case subscribe:
¥contentStr = 感激您存眷【卓锦姑苏】.\n.微旌旗灯号:zhuojinsz.\n.杰出秀丽,名城姑苏,我们为您供给姑苏本地生活生计指南,姑苏相干信息查询,做好的姑苏微信平台。.\n.今朝平台功能如下:.\n.【1】 查天气,如输入:姑苏天气.\n.【2】 查公交,如输入:姑苏公交178.\n.【3】 翻译,如输入:翻译I love you.\n.【4】 姑苏信息查询,如输入:姑苏观前街.\n.更多内容,敬请等待...;
break;
default :
¥contentStr = Unknow Event: .¥object->Event;
break;
}
¥resultStr = ¥this->responseText(¥object, ¥contentStr);
return ¥resultStr;
}
public function responseText(¥object, ¥content, ¥flag=0)
{
¥textTpl = <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>;
¥resultStr = sprintf(¥textTpl, ¥object->FromUserName, ¥object->ToUserName, time(), ¥content, ¥flag);
return ¥resultStr;
}
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;
}
}
}
?>
四、测试
五、存眷
请存眷 卓锦姑苏 微信大众,帐号,卓锦姑苏 基于SAE 平台开辟,针对于主流的微信功能进行开辟测试。
您可以存眷 卓锦姑苏 大众,帐号进行功能测试,以及获取新的应用开辟。
1. 登录微信客户端,伴侣们 -> 添加伴侣 -> 搜号码 -> zhuojinsz,查找并存眷。
2. 扫描二维码:
David Camp
- 技巧交换,请加QQ群:213260412
- 营业合作,请接洽作者QQ:562866602
Great People Share Knowledge...
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。