一.导言
微信公众平台可以根据用户发送的信息进行判断,然后给出相应的回复,具有很好的互动性。下面的文字将模拟简单的回复功能。根据这个案例,开发者也可以了解微信交互的原理,在更深层次上进行开发。
二、思维分析
用户发来的短信,我们可以提取关键词,通过简单的if … else if … else …
关键代码如下:
if($关键字==' hello '){ $ ContentStr=' hello ';} else if($关键字=='苏州'){$contentStr='上有天堂,下有苏杭';}else{$contentStr='感谢关注【金卓苏州】微信:卓劲思';}如果用户发‘你好’,回复‘你好’,如果用户发‘苏州’,回复‘上有天堂,下有苏杭’,其他信息回复你的欢迎辞。
第三,完整的代码
?php/** *微信PHP测试*///定义你的tokendefine('TOKEN ','金卓');$微信bj=新微信callbackapitet();$微信对象响应消息();//$微信对象-valid();班级微信callbackapist {/* public function valid(){ $ echoStr=$ _ GET[' echoStr '];//有效签名,选项if($ this-CheckSignature()){ echo $ echoStr;退出;} } */public function response msg(){//获取邮政数据,可能是由于环境不同$ PostStr=$ GLOBALS[' HTTP _ RAW _ POST _ DATA '];//提取帖子数据if(!empty($ PostStr)){ $ PostObj=simple XML _ load _ string($ PostStr,' SimpleXMLElement ',LIBXML _ NocDATa);$ RX _ TYPE=trim($ PostObj-MSgtype);switch($ RX _ TYPE){ case ' text ' : $ resultStr=$ this-handleText($ PostObj);打破;case ' event ' : $ resultStr=$ this-handleEvent($ PostObj);打破;默认值: $ result str=' Unknow msg type : ' .$ RX _ TYPE打破;} echo $ resultStr } else { echo退出;} }公共函数handleText($ PostObj){ $ FrOm USERNAME=$ PostObj-FrOm USERNAME;$ touser name=$ PostObj-touser name;$关键字=trim($ PostObj-Content);$ time=time();$textTpl='xml ToUserName![CData[% s]]/从用户名使用用户名![CData[% s]]/来自用户名创建时间% s/创建时间MsgType![CDATA[%s]]/MsgType内容![CData[% s]]/Content func flag 0/func flag/XML ';if(!空($关键字)){ $ msgType=' textif($关键字=='你好){ $ contentStr=' hello} else if($关键字=='苏州){ $contentStr='上有天堂,下有苏杭;}else{ $contentStr='感谢您关注【卓锦苏州】 微信号:zhuojinz ';} $resultStr=sprintf($textTpl,$fromUsername,$ toUsername,$time,$msgType,$ content str);回应$ resultStr }其他{回应'输入某物.} }公共函数handleEvent($ object){ $ ContentStr=' ';switch($ object-Event){ case ' subscribe ' : $ contentStr='感谢您关注【卓锦苏州】'.n .微信号:卓锦斯n .'卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。'.n .'目前平台功能如下:'.n .'【1】 查天气,如输入:苏州天气“n,”【2】 查公交,如输入:苏州公交178'.n .【3】 翻译,如输入:翻译我爱你n .'【4】 苏州信息查询,如输入:苏州观前街“n,”更多内容,敬请期待.打破;默认值: $ ContentStr='未知事件: ' .$对象-事件;打破;} $ resultStr=$ this-responseText($ object,$ content str);返回$ resultStr}公共函数responseText($ object,$content,$ flag=0){ $ textTpl=' XML Tousername![CData[% s]]/从用户名使用用户名![CData[% s]]/来自用户名创建时间% s/创建时间MsgType![CData[文本]]/MsgType内容![CData[% s]]/Content func flag % d/func flag/XML ';$resultStr=sprintf($textTpl,$object-FromUserName,$object-ToUserName,time(),$content,$ flag);返回$ resultStr}私有函数check signature(){ $ signature=$ _ GET[' signature '];$时间戳=$_GET['时间戳'];$ nonce=$ _ GET[' nonce '];$ TOKEN=TOKEN $ TMParr=array($ TOKEN,$timestamp,$ nonce);sort($ TMParr);$tmpStr=内爆($ TMParr);$ TMPstr=sha1($ TMPstr);if($ TMPstr==$ signature){ 0返回true}否则{返回false} }?四、测试
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。