网站改版|WAP网站制作|域名注册|虚拟主机|服务器|海微商|海微信|海微通| 无障碍| 24小时服务电话:13807590485
海南网站建设海南网站制作海口网站建设三亚网站建设儋州网站建设五指山网站建设文昌网站建设琼海网站建设万宁网站建设东方网站建设定安网站建设 网站首页网站首页 网站建设网站建设 微信开发微信开发 网站推广网站推广 东方网站建设,东方网站开发制作,东方网页设计,东方小程序开发,东方微信公众号开发,东方网络公司,东方世纪华联东方世纪华联 网站超市网站超市 客户案例客户案例 网站模板网站模板 关于我们关于我们
  • 微信开发
  • 持之以恒
  • 网站设计制作
  • 中立五年回报客户
无障碍
微信开发
微信系统开发 微信开发功能 公众号基础教程 开发技术资讯 公众号推广营销 客户案例
联系我们
QQ服务群:28519571 工作时间:86-0898-31568080 传真号码:86-0898-31568085 24小时服务:0138-07590485
 您现在的位置: 首页 >> 微信开发 >> 开发技术资讯 开发技术资讯
微信公众平台机器人教程
世纪华联 | 2018-01-26 23:55:58 | 阅读:12362
首先要去微信公众平台申请一个帐号
http://mp.weixin.qq.com/

申请一个SAE应用
我的是http://weixintalk.sinaapp.com

设置微信接口地址
微信平台->设置->回复设置->自定义回复->调用公众平台消息接口>>
url写这个url,token随便定一个"helloczq"

开启SAE服务
由于我们需要教机器人一些日常用语,所以我们必须要一个存储他们的空间,这里暂时使用SAE的kvdb服务,请先到sae开启。

定义规则
我们先给他定义一个简单的规则,比如
求助是
help
教他学东西是
"_" + 问题 + ":" + 回答
比如:_hi:hello,就是回复hello给hi
如果一样东西有很多人教他,机器人应该优先回复旧的东西。

聊天代码
规则定好了,我们先写一个聊天的类
  1. class talk {
  2. public function reply($str) {
  3. $kv = new SaeKV ();
  4. $kv->init (); //用户输入帮助语句,可以自定义帮助语法
  5. if ($str == 'help' || $str == '求助'){
  6. return "要教我读书,请英文下划线开头,接着问题,接着英文冒号,接着回答";
  7. } //下划线开头的教学模式
  8. if (substr($str, 0,1) == '_'){
  9. //教
  10. $pos = strpos($str, ':');
  11. if ($pos > -1){ //问题
  12. $q = substr($str, 1,$pos - 1); //答案
  13. $a = substr($str, $pos + 1);
  14. //加入知识库
  15. $ret = $kv->get('know_' . md5($q)); if ($ret === false || !is_array($ret))
  16. $ret = array();
  17. $ret[] = $a;
  18. $kv->set('know_' . md5($q), $ret);
  19. return "known::" . $q . '/' . $a ;
  20. }
  21. }
  22. $ret = $kv->get('know_' . md5($str));//查询数据库,寻找问题答案
  23. if ($ret === false || !is_array($ret) || count($ret) == 0){
  24. return '我什么都不知道,输入"help"求助';
  25. }else{
  26. //随机一个
  27. while(count($ret) > 1){
  28. $re = array_shift($ret);
  29. if (rand(0, 1) == 0)
  30. return $re;
  31. }
  32. return array_shift($ret);
  33. }
  34. }
复制代码



这个类会自动回复,教学,大家可以简单测试一下

接入微信
其实就是把上面那个类和官方的php代码拼起来...
以下是全部代码,包括验证部分
  1. define ( "TOKEN", "helloczq" );
  2. $wechatObj = new wechat ();
  3. $wechatObj->valid ();
  4. $wechatObj->responseMsg ();
  5. class wechat {
  6. public function valid() {
  7. $echoStr = $_GET ["echostr"];
  8. if (! $this->checkSignature ())
  9. exit ();
  10. }
  11. public function responseMsg() {
  12. $postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];
  13. if (! empty ( $postStr )) {
  14. $postObj = simplexml_load_string ( $postStr, 'SimpleXMLElement', LIBXML_NOCDATA );
  15. $fromUsername = $postObj->FromUserName;
  16. $toUsername = $postObj->ToUserName;
  17. $content = trim ( $postObj->Content );
  18. $time = time ();
  19. $talk = new talk();
  20. $textTpl = "


  21. %s


  22. 0
  23. ";
  24. $msgType = "text";
  25. $contentStr = $talk->reply($content);
  26. $resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
  27. echo $resultStr;

  28. } else {echo $_GET ["echostr"];
  29. exit ();
  30. }
  31. }
  32. private function checkSignature() {
  33. $signature = $_GET ["signature"];
  34. $timestamp = $_GET ["timestamp"];
  35. $nonce = $_GET ["nonce"];
  36. $token = TOKEN;
  37. $tmpArr = array (
  38. $token,
  39. $timestamp,
  40. $nonce
  41. );
  42. sort ( $tmpArr );
  43. $tmpStr = implode ( $tmpArr );
  44. $tmpStr = sha1 ( $tmpStr );

  45. if ($tmpStr == $signature) {
  46. return true;
  47. } else {
  48. return false;
  49. }
  50. }
  51. }
  52. class talk {
  53. public function reply($str) {
  54. $kv = new SaeKV ();
  55. $kv->init ();
  56. if ($str == 'help' || $str == '求助'){
  57. return "要教我读书,请英文下划线开头,接着问题,接着英文冒号,接着回答";
  58. }
  59. if (substr($str, 0,1) == '_'){
  60. $pos = strpos($str, ':');
  61. if ($pos > -1){
  62. $q = substr($str, 1,$pos - 1);
  63. $a = substr($str, $pos + 1);
  64. $ret = $kv->get('know_' . md5($q));
  65. if ($ret === false || !is_array($ret))
  66. $ret = array();
  67. $ret[] = $a;
  68. $kv->set('know_' . md5($q), $ret);
  69. return "known::" . $q . '/' . $a ;
  70. }
  71. }
  72. $ret = $kv->get('know_' . md5($str));
  73. if ($ret === false || !is_array($ret) || count($ret) == 0){
  74. return '我什么都不知道,输入"help"求助';
  75. }else{
  76. //随机一个
  77. while(count($ret) > 1){
  78. $re = array_shift($ret);
  79. if (rand(0, 1) == 0)
  80. return $re;
  81. }
  82. return array_shift($ret);
  83. }
  84. }
  85. }
  86. ?>
复制代码

海南网站建设|海南网站制作|海口网站建设|三亚网站建设|儋州网站建设|五指山网站建设|文昌网站建设|琼海网站建设|万宁网站建设|东方网站建设|定安网站建设|屯昌网站建设|澄迈网站建设|临高网站建设|白沙网站建设|昌江网站建设|乐东网站建设|陵水网站建设|保亭网站建设|琼中网站建设|海口精英网|三亚精英网|文昌精英网|琼海精英网|陵水精英网|儋州精英网|万宁精英网|澄迈精英网|海微通
合作伙伴 企业发展 企业文化 联系我们 在线订购 网站地图 返回首页手机版
海口世纪华联科技有限公司2024版权所有 24小时服务热线:13807590485   欢迎来电咨询
地址:海南省.海口市.海甸二东路环惠大厦6楼(南宝路明都大厦107#) 公司电话:0898-31568080 31568060 QQ:85398489
全国合作联盟分布:海南海口 四川成都 湖北武汉 湖南长沙 安徽合肥 广东深圳 山西太原 西藏拉萨
技术服务: E_mail:server@hnzlweb.com 服务订购:E_mail:server@hnzlweb.com 在线客服邀请 琼ICP备10201086号-15
推广关键字:东方网站建设,东方网站制作,东方网站开发,东方微信开发,东方微信公众号开发,东方微信公众号代运营,东方模板网站制作,东方网页设计,东方网络公司