海南中立科技 旗下网站:海南精英网|海微商|天涯数码
网站首页home 网站建设web Const 系统开发System Dev 微信开发wx Dev 网站推广Website SEO 网站超市Website SM 客户案例Client case 网站模板Web template 关于我们About us
微信开发
微信系统开发 微信开发功能 公众号基础教程 开发技术资讯 公众号推广营销 客户案例
联系我们
QQ服务群:28519571 工作时间:86-0898-31568080 传真号码:86-0898-31568085 24小时服务:0138-07590485
 您现在的位置: 首页 >> 微信开发 >> 开发技术资讯 开发技术资讯
微信公众平台机器人教程
中立科技 | 2018-01-26 23:55:58 | 阅读:590
首先要去微信公众平台申请一个帐号
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. ?>
复制代码

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

在线客服 业务咨询 备案咨询
扫描直接联系