搭建微信 AI 机器人
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
1.公众号申请
首先进入微信公众号平台,然后注册一个账号,类型选择订阅号,然后根据相应的提示完成信息的填写和验证
2.后台服务器的搭建
首先执行以下命令sudo su下载最新的稳定版 v6.10.3 到本地wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.xz下载完成后, 将其解压tar xvJf node-v6.10.3-linux-x64.tar.xz将解压的 Node.js 目录移动到 /usr/local 目录下mv node-v6.10.3-linux-x64 /usr/local/node-v6配置 node 软链接到 /bin 目录ln -s /usr/local/node-v6/bin/node /bin/node
配置 NPM
NPM 是 Node.js 的包管理和分发工具。它可以让 Node.js 开发者能够更加轻松的共享代码和共用代码片段
下载 node 的压缩包中已经包含了 npm , 我们只需要将其软链接到 bin 目录下即可
ln -s /usr/local/node-v6/bin/npm /bin/npm
配置环境变量
将 /usr/local/node-v6/bin 目录添加到 $PATH 环境变量中可以方便地使用通过 npm 全局安装的第三方工具
echo 'export PATH=/usr/local/node-v6/bin:$PATH' >> /etc/profile
生效环境变量
source /etc/profile
npm install express-generator -g
创建新的项目执行
cd /data/
express yourApp
这时候会在 /data 生成应用目录 /yourApp,继续执行以下命令
cd yourApp
npm install
npm start
此时服务已经在 http://123.207.9.158:3000 上启动,可以在浏览器中浏览测试。
配置服务器信息,进入开发者模式
微信平台会去验证你填写的服务器的有效性,所以配置服务器前要先编写服务器有效性验证的代码。
在终端使用 Ctrl + C 终止刚才启动的服务,然后执行以下命令安装依赖的文件:
npm install xml2js sha1 querystring
登录微信公众号平台然后拉到页面的最下面,点击基本配置菜单。填写以下信息:
服务器地址(URL):填写 123.207.9.158
令牌(Token):填写上面代码中使用到的 Token,如无修改,直接使用 4KqWvQEa
消息加解密密钥(EncodingAESKey):随机字符串。可以让平台生成。
消息加解密方式:选择明文方式。
配置完毕后点击提交,提交成功后,在基本配置菜单页面点击启用。
此时,微信用户给公众号发送的信息,会由微信平台转发给您的服务器,然后您的服务器进行处理后返回给用户。
在页面点击提交,检查是否可以提交成功。
机器人的实现
实现机器人功能
首先在图灵机器人官网注册和申请一个机器人,具体步骤可以参考视频。
视频 - 申请图灵机器人
申请之后,我们来调用 API 实现机器人的功能。
编辑 app.js,
var express = require('express');var app = express();var http = require('http');var sha1 = require('sha1');var xml2js = require('xml2js');var querystring = require('querystring');process.env.PORT = '80';function checkSignature(req) { // 获取校验参数 var signature = req.query.signature; var timestamp = req.query.timestamp; var nonce = req.query.nonce; // 此处为实验分配了一个 token,也可以修改为自己的 token var token = '4KqWvQEa'; // 按照字典排序 var params = [token, timestamp, nonce]; params.sort(); // 连接 var str = sha1(params.join("")); // 返回签名是否一致 return str == signature;}// 接入验证app.get('/', function(req, res) { // 签名成功 if (checkSignature(req)) { res.send(200, req.query.echostr); } else { res.send(200, 'fail'); }});function handler(req, res) { let buf = ''; // 获取XML内容 req.setEncoding('utf8'); req.on('data', function(chunk) { buf += chunk; }); // 内容接收完毕 req.on('end', function() { xml2js.parseString(buf, function(err, json) { if (err) { err.status = 400; } else { req.body = json; } }); let data = req.body.xml; var msg = { "toUserName" : data.FromUserName[0], "fromUserName" : data.ToUserName[0], "createTime" : data.CreateTime[0], "msgType" : data.MsgType[0], "content" : data.Content[0], "msgId" : data.MsgId[0] }; request(msg, req, res) });}function request(data, req, res) { var msg = { "key":'6d76234cf7ee488d84aa1a54397ae866', // 可以填入自己申请的机器人的apiKey "info": data.content, "userid": ~~(Math.random() * 99999) }; var text = querystring.stringify(msg); var options = { hostname: 'www.tuling123.com', path: '/openapi/api', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }; var requestObj = http.request(options, function (response) { var result = ''; response.setEncoding('utf8'); response.on('data', function (chunk) { result += chunk; }); response.on('end',function() { try{ var obj = JSON.parse(result); } catch(e){ data.content = e.message; echo(data, res); return; } data.content = obj.text; echo(data, res); }) }); requestObj.on('error', function (e) { console.log('problem with request: ' + e.message); data.content = e.message; echo(data, res); }); requestObj.write(text); requestObj.end(); }function echo(data, res) { var time = Math.round(new Date().getTime() / 1000); var output = "" + "<xml>" + "<ToUserName><![CDATA[" + data.toUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + data.fromUserName + "]]></FromUserName>" + "<CreateTime>" + time + "</CreateTime>" + "<MsgType><![CDATA[" + data.msgType + "]]></MsgType>" + "<Content><![CDATA[" + data.content + "]]></Content>" + "</xml>"; res.type('xml'); res.send(output);}// Startapp.post('/', function(req, res) { handler(req, res);});module.exports = app;
部署完成(访问服务)
在微信公众号中关注自己的公众号,然后发送信息给公众号,测试是否有返回。在微信公众号平台可以对公众号信息进行管理。更复杂的逻辑可以参考微信公众号平台开发者文档和图灵机器人开发文档。
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
![](/assets/blank.gif)
搭建微信 AI 机器人相关推荐
- 微信公众号图灵机器人开发php,使用图灵机器人api搭建微信聊天机器人php实现,图灵微信聊天机器人...
使用图灵机器人api搭建微信聊天机器人php实现,图灵微信聊天机器人之前通过hook技术实现了微信pc端发送消息功能,如果在结合图灵机器人就能实现微信聊天机器人. 代码下载:http://blog.y ...
- 微信公号 DIY:一小时搭建微信聊天机器人
最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了.想了想,先从最简单的开始,做一个聊天机器人吧. 使用Python实现聊天机器人的方案有多种:AIML.chatterBot ...
- python国际象棋ai程序_只需五步!手把手教你搭建国际象棋AI机器人
王新民 编译 量子位 报道 | 公众号 QbitAI 要创建一个简单的象棋AI,我们在开始编程之前要先了解四个基本的概念:移动生成.棋局评估.最大最小搜索和α-β剪枝搜索过程. 在每个步骤中,我们将会 ...
- (Python,Hanlp,Neo4j)基于电影图谱搭建微信问答机器人(一)
近期着手在构建毕业设计系统,由于早期时间偶然接触到一个公众号推送关于人工智能客服的信息,心血来潮也想自己搭建一个.在经历了不断的踩坑填坑,总算是达成目标.记录一下整体搭建. 话不多说先上效果图 具体流 ...
- 如何用阿里云服务器搭建微信公众号机器人?
我们经常在一些公众号里回复信息,微信公众号都会自动回复信息,区别于微信平台的自动回复,有的公众号上面的自动回复,则更像是一个机器人客服.下面小编就教大家如何搭建微信公众号机器人. 所需材料: 微信公众 ...
- itchat python_itchat-python搭建微信机器人(附示例)
itchat是python开源第三方库,用于搭建微信机器人,几十行代码就能帮你实现自动的处理所有信息.比如,添加好友,搭建自动回复机器人,还原撤销信息,分析好友男女比例,地理分布情况,爬朋友圈做数据分 ...
- 从零搭建微信机器人(一):注册企业微信创建应用
从零搭建微信机器人(一):注册企业微信创建应用 从零搭建微信机器人(二):发送文本消息 从零搭建微信机器人(三):定时触发任务 从零搭建微信机器人(四):封装消息发送接口 文章目录 1. 简介 2. ...
- 利用itchat搭建微信机器人详解(附三个实用示例)
本文简介 好久没更新文章啦,因为最近在赶一本Py的入门书,碰巧今天把这篇文章赶出来了. 而很多加群的小朋友很多都是咨询如何搭建微信机器人的,所以就把这一章放出来了, 取需,三个实用示例:定时发信息,集 ...
- 10分钟搭建ChatGPT API微信聊天机器人
引言:今天看到ChatGPT开放了API,就顺便找了一个开源项目,把微信聊天机器人搭起来了.1. 注册ChatGPT 这个网上都有很多的教程,我这里就不赘述了 2. 获取ChatGPT API Key ...
最新文章
- 【怎样写代码】工厂三兄弟之工厂方法模式(四):工厂方法模式
- boost::container模块实现范围分配器用法
- cmd命令:在ftp下载文件运行
- 牛客多校2 - Cover the Tree(dfs序)
- html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析
- java并发编程之原子性、可见性、有序性
- 知名插画师描绘nova6“5G”潮乐园 十城nova6自拍互动装置即将引爆
- nginx事件 -- 第六篇 stale event
- 对大家的工作和职业方向有益才是我的最终目的
- matlab 螺纹,关于螺纹边缘提取及参数测量
- 关于mysql的表情包_mysql表情包 - mysql微信表情包 - mysqlQQ表情包 - 发表情 fabiaoqing.com...
- Linux常用命令--软件包管理之(服务管理)
- 当360屠榜黑客奥斯卡,我们为什么要关注国家级网络安全战?
- 4/6 深搜、广搜专题+二分答案+单调队列
- 2023届双非跨保计算机经验贴(最终上岸浙软)
- 这是我家养的睡莲 开花了
- mysql root密码过期了_MYSQL 密码过期解决办法
- C语言买金鱼问题答案,发现一条品相不错的小金鱼,可惜炸鳞了,购买金鱼如何判断疾病?...
- 虚拟机集群启动,Hadoop常用命令
- 快排和归并排序哪个更快
热门文章
- 无线电测向/定向越野运动中计分使用的打卡器的开发
- 【一步一步学NPOI】3.设置单元格宽高和边框
- ppt如何替换其他mo ban_一键修改PPT字体、颜色的秘诀是……| PPT零基础入门04
- ppt快捷键和字体使用技巧(一)
- 基金投资好简单,从入门到精通 -学习笔记day10
- 2022-2028全球水壶包装喷码解决方案行业调研及趋势分析报告
- 微信公众号授权登录获取code获取openid注意事项(采坑解决方案)
- 【超详细Django网站开发过程4】便利店管理系统之——销售员如何获取顾客数据?即:读取数据库数据(浏览器请求数据——服务器返回数据)
- StringUtils就这1张图,必备(二)
- windows10软件界面模糊解决办法