微信公众平台 怎么编写一个智能的微信聊天机器人接口

练习:开发个人智能机器人陪聊微信号_百度文库微信公众平台智能机器人PHP开发示例
作者:用户
本文讲的是微信公众平台智能机器人PHP开发示例,
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~
今天来分享一下开发经验~
微信公众平台提供的接口很简单,先看看消息交互流程:
说的通俗一些,用户使用微信发送消息 -& 微信将数据发送给开发者
最近在做微信公众平台,一口气写了二十几个功能,挺有意思的~
今天来分享一下开发经验~
微信公众平台提供的接口很简单,先看看消息交互流程:
说的通俗一些,用户使用微信发送消息 -& 微信将数据发送给开发者 -& 开发者处理消息并返回数据至微信 -& 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。
下面写个实例,开发微信智能聊天机器人:
1. 注册微信公众平台账号
微信公众平台:
https://mp./
注: 目前一张身份证只能注册两个账号,账号名称关乎加V认证,请慎重注册。
2. 申请服务器/虚拟主机
没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。
3. 开启开发者模式
微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“高级功能”菜单开启开发者模式。
4. 填写接口配置信息
同样是在“高级功能”菜单中配置,需要配置两项参数:
URL: 开发者应用访问地址,目前仅支持80端口,以“http://www.你的域名.com/weixin/index.php”为例。
TOKEN: 随意填写,用于生成签名,以“你的域名”为例。
填写完把下面代码保存为index.php并上传至http://www.你的域名.com/weixin/目录,最后点击“提交”完成验证。
define("TOKEN", "你的域名"); //TOKEN值
$wechatObj = new wechat();
$wechatObj-&valid();
class wechat {
public function valid() {
$echoStr = $_GET["echostr"];
if($this-&checkSignature()){
echo $echoS
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 ) {
这玩意儿就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了,有兴趣的童鞋可以查看官方。
微信公众平台API文档:
http://mp./wiki/index.php
5. 开发微信公众平台功能
OK,上面提到了,微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:
当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:
&!--开发者微信号--&
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&!--发送方帐号(OpenID)--&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&!--消息创建时间 (整型)--&
&CreateTime&&/CreateTime&
&!--消息类别 (text文本消息)--&
&MsgType&&![CDATA1]&&/MsgType&
&!--消息内容--&
&Content&&![CDATA[content]]&&/Content&
&!--消息ID (64位整型)--&
&MsgId&3456&/MsgId&
开发者在处理完消息后需要返回数据给微信服务器:
&!--接收方帐号(OpenID)--&
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&!--开发者微信号--&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&!--消息创建时间 (整型)--&
&CreateTime&&/CreateTime&
&!--消息类别 (text文本消息)--&
&MsgType&&![CDATA1]&&/MsgType&
&!--回复消息内容--&
&Content&&![CDATA[content]]&&/Content&
&!--星标操作(位0x0001被标志时 星标刚收到的消息)--&
&FuncFlag&0&/FuncFlag&
除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。
来看看官方提供的一个PHP示例,我做了一些精简:
$wechatObj = new wechat();
$wechatObj-&responseMsg();
class wechat {
public function responseMsg() {
//---------- 接 收 数 据 ---------- //
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
//用SimpleXML解析POST过来的XML数据
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$fromUsername = $postObj-&FromUserN //获取发送方帐号(OpenID)
$toUsername = $postObj-&ToUserN //获取接收方账号
$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&
$msgType = "text"; //消息类型
$contentStr = 'http://www.你的域名.com'; //返回消息内容
//格式化消息模板
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,
$time,$msgType,$contentStr);
echo $resultS //输出结果
把代码保存为index.php并上传至http://www.你的域名.com/weixin/目录,如果刚才没删除该文件,则直接覆盖。
现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.你的域名.com”的消息。
接下来需要做的就是根据用户消息动态返回结果~
SimSimi(小黄鸡)是目前比较火的聊天机器人,我用CURL开发了一个免费的SimSimi(小黄鸡)接口,传入关键词会返回文本回复,这部分不是本文重点,就不多说明,直接上代码:
$wechatObj = new wechat();
$wechatObj-&responseMsg();
class wechat {
public function responseMsg() {
//---------- 接 收 数 据 ---------- //
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
//用SimpleXML解析POST过来的XML数据
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$fromUsername = $postObj-&FromUserN //获取发送方帐号(OpenID)
$toUsername = $postObj-&ToUserN //获取接收方账号
$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&
$msgType = "text"; //消息类型
$contentStr = 'http://www.你的域名.com'; //返回消息内容
//格式化消息模板
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,
$time,$msgType,$contentStr);
echo $resultS //输出结果
把上面两段代码整合在一起就大功告成了,需要说明一点,微信服务器在5秒内收不到响应会断掉连接,通过此接口有可能会超时,且SimSimi已经屏蔽了BAE和SAE上的抓取请求,推荐使用SimSimi官方收费API,速度比较快~
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索开发
智能机器人开发平台、微信公众平台示例代码、微信公众号开发示例、微信公众号智能机器人、公众号智能机器人,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!微信开发实例教程Vo1-智能聊天机器人 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[],"title":"微信开发实例教程Vo1-智能聊天机器人","author":"idoubi","content":"本篇教程所描述的插件开发过程都是基于douchat微信开发框架,在阅读本教程前,请先了解douchat并在你的服务器安装配置好这个简洁、优雅、开源的公众号开发框架。官网地址:聊天机器人插件开发实例教程一、创建插件在系统管理-扩展管理-设计新插件处填写要创建的插件基本信息。因为将要开发的聊天机器人插件只需要在微信聊天框中处理用户发送的消息并给出回复,不涉及到后台管理功能和前端页面显示,所以只需要勾选是否需要响应规则和是否需要配置参数即可。插件创建成功后会在Addons目录下生成插件文件夹,如下所示插件创建成功后生成的插件信息文件info.php如下:二、设置插件配置信息此插件需要使用图灵机器人的聊天API,所以在info.php里面设置插件的配置信息如下:'config' =& array(\n
'respond_rule' =& 1,\n
'setting' =& 1,\n
'setting_list' =& array(\n
'can_voice' =& array(\n
'title' =& '是否开启语音聊天',\n
'type' =& 'radio',\n
'options' =& array(\n
0 =& '不开启',\n
1 =& '开启'\n
'value' =& 0,\n
'tip' =& '开启语音聊天,需要在微信后台开启语音识别功能'\n
'api_url' =& array(\n
'title' =& '图灵API地址',\n
'type' =& 'text',\n
'placeholder' =& '/openapi/api',\n
'value' =& '',\n
'tip' =& ''\n
'api_key' =& array(\n
'title' =& '图灵API KEY',\n
'type' =& 'text',\n
'placeholder' =& '5b6d54d86d958fe4fabbdbe9',\n
'value' =& '',\n
'tip' =& '&a href=\"/web/robot_access!index.action?cur=l_05\" target=\"_blank\"&前往图灵机器人官网申请API&/a&'\n
'enter_tip' =& array(\n
'title' =& '进入聊天提示语',\n
'type' =& 'textarea',\n
'placeholder' =& '你想聊点什么呢',\n
'value' =& '',\n
'tip' =& '用户发送关键词进入机器人聊天模式时回复给用户的内容'\n
'keep_time' =& array(\n
'title' =& '会话保持时间',\n
'type' =& 'text',\n
'placeholder' =& '300',\n
'value' =& '',\n
'tip' =& '在此时间范围内,用户一直处在机器人聊天模式中,默认300秒(5分钟)'\n
'exit_keyword' =& array(\n
'title' =& '退出聊天关键词',\n
'type' =& 'text',\n
'placeholder' =& '退出',\n
'value' =& '',\n
'tip' =& '用户发送此关键词主动退出机器人聊天模式'\n
'exit_tip' =& array(\n
'title' =& '退出聊天提示语',\n
'type' =& 'textarea',\n
'placeholder' =& '下次无聊的时候可以再找我聊天哦',\n
'value' =& '',\n
'tip' =& '用户退出机器人聊天模式时回复给用户的内容'\n
)\n设置成功后在插件管理后台可以看到插件配置项三、编写微信交互代码在插件后台配制处填写好申请到的图灵机器人api并进行其他的聊天回复设置后,就可以通过插件的RespondController来编写微信端的交互代码。/**\n
* 微信交互\n
* @param $message array 微信消息数组\n
* @author 艾逗笔&&\n
public function wechat($message = array()) {\n
$settings = get_addon_settings('IdouChat');\n
$settings['enter_tip'] || $settings['enter_tip'] = '你想聊点什么呢';\n
$settings['keep_time'] || $settings['keep_time'] = 300;\n
$settings['exit_keyword'] || $settings['exit_keyword'] = '退出';\n
$settings['exit_tip'] || $settings['exit_tip'] = '下次无聊的时候可以再找我聊天哦';\n
if (!$settings['api_url'] || !$settings['api_key']) {\n
reply_text('机器人聊天接口未填写,暂时不能使用此功能');\n
if ($message['MsgType'] == 'voice') {\n
if ($settings['can_voice'] == '1') {\n
$content = $message['Recognition'];
// 语音识别,直接开启机器人聊天模式\n
$reply = $this-&turingAPI($content);\n
if (is_array($reply)) {\n
return reply_news($reply);\n
} else {\n
return reply_text($reply);\n
} else {\n
$content = $message['Content'];
// 通过消息上下文机制与机器人展开聊天\n
if (!$this-&in_context) {\n
$reply = $settings['enter_tip'];\n
$this-&begin_context($settings['keep_time']);
// 开启上下文模式\n
} else {\n
if ($content == $settings['exit_keyword']) {\n
$reply = $settings['exit_tip'];\n
$this-&end_context();\n
} else {\n
$reply = $this-&turingAPI($content);\n
$this-&keep_context($settings['keep_time']);
// 保持消息上下文\n
if (is_array($reply)) {\n
return reply_news($reply);\n
} else {\n
return reply_text($reply);\n
}\n上述代码的大致逻辑是:1、使用get_addon_settings('IdouChat')获取到插件的配置信息2、接收微信端用户发送的消息并判断消息上下文3、调用图灵机器人API给用户回复消息四、设置关键词响应在编写了上述代码后,需要在插件管理后台的响应规则出设置一下触发关键词,设置成功后微信端用户发送对应的关键词内容后,消息会被分发到此插件的Respond控制器的wechat方法,那么第三步中设置的交互代码将会执行,从而可以实现机器人聊天功能。五、效果预览总结本篇教程简要讲解了使用豆信框架开发一个聊天机器人功能的流程。涉及到的知识点有:1、使用豆信框架后台创建插件2、在插件信息文件info.php里面编写插件配置信息3、使用图灵机器人API4、编写插件响应控制器,处理微信端发送的消息5、使用消息上下文将用户连续两次的交互绑定在一起插件源代码:扫码即可体验了解机器人功能:","updated":"T03:15:30.000Z","canComment":false,"commentPermission":"anyone","commentCount":2,"collapsedCount":0,"likeCount":6,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-beae771fe80e8_r.png","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"微信"},{"url":"/topic/","id":"","name":"微信公众帐号"},{"url":"/topic/","id":"","name":"微信小程序"}],"adminClosedComment":false,"titleImageSize":{"width":407,"height":393},"href":"/api/posts/","excerptTitle":"","tipjarState":"closed","annotationAction":[],"sourceUrl":"","pageCommentsCount":2,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T11:15:30+08:00","url":"/p/","lastestLikers":[{"bio":"物联网","isFollowing":false,"hash":"4f976cae0fcf","uid":659600,"isOrg":false,"slug":"chen-zong-yi-85","isFollowed":false,"description":"好想有个倒贴女票啊!","name":"棕熊肥嘟嘟","profileUrl":"/people/chen-zong-yi-85","avatar":{"id":"1ef94cfbce12a1fc45487bc4","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"","isFollowing":false,"hash":"cbceb59bff23d","uid":40,"isOrg":false,"slug":"yatuuuu","isFollowed":false,"description":"","name":"成为夏目","profileUrl":"/people/yatuuuu","avatar":{"id":"v2-8cefba731edf085c9f22cd","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"软件工程师","isFollowing":false,"hash":"2b46909dbae32855ac03","uid":212700,"isOrg":false,"slug":"richard-49-13","isFollowed":false,"description":"","name":"Richard","profileUrl":"/people/richard-49-13","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"阿里巴巴集团 java coder","isFollowing":false,"hash":"26f7c57b8a3aab65ee040","uid":827800,"isOrg":false,"slug":"tang-cun-zhou","isFollowed":false,"description":"","name":"唐存周","profileUrl":"/people/tang-cun-zhou","avatar":{"id":"v2-e3cb1eac1c7dfff3d7926","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"程序员","isFollowing":false,"hash":"8b6d60d439c53da109b2afe36e922910","uid":119200,"isOrg":false,"slug":"liao-xi-hao-34","isFollowed":false,"description":"","name":"廖锡浩","profileUrl":"/people/liao-xi-hao-34","avatar":{"id":"e7e3174d5feb79c231e6","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"本篇教程所描述的插件开发过程都是基于douchat微信开发框架,在阅读本教程前,请先了解douchat并在你的服务器安装配置好这个简洁、优雅、开源的公众号开发框架。官网地址:聊天机器人插件开发实例教程一、创建插件 在系统管理-扩展管理…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"annotationDetail":null,"commentsCount":2,"likesCount":6,"FULLINFO":true}},"User":{"idoubi":{"isFollowed":false,"name":"艾逗笔","headline":"目标成为全栈工程师的coder。个人博客:http://idoubi.cc/","avatarUrl":"/v2-e7e05afa38c4b46a2edf64_s.jpg","isFollowing":false,"type":"people","slug":"idoubi","bio":"有梦想爱学习的实力派","hash":"97ee0bcdba71e0e78ec1219e","uid":830100,"isOrg":false,"description":"目标成为全栈工程师的coder。个人博客:http://idoubi.cc/","profileUrl":"/people/idoubi","avatar":{"id":"v2-e7e05afa38c4b46a2edf64","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}}

我要回帖

更多关于 微信小黄鸡聊天机器人 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信