แชทบอทที่พัฒนาขึ้นจาก
phantomjs
และ WeChat บนเว็บ บัญชี WeChat ที่ใช้ (นั่นคือบัญชีที่ทำหน้าที่เป็นโรบอต) เป็นบัญชีส่วนบุคคลและสามารถปรับแต่งได้ตามคำแนะนำ
คุณสามารถระบุบัญชี WeChat ได้:
คำแนะนำที่กำหนดเองจะไม่ถูกส่งไปยัง AI เพื่อการประมวลผล:
สนุกสนานคนเดียวไม่ดีเท่ากับสนุกสนานด้วยกัน คุณสามารถมอบหมายให้แชทกลุ่มได้:
ตรวจสอบการเข้าสู่ระบบในโปรแกรมพื้นหลัง:
- WeChat การตอบกลับอัจฉริยะ การตรวจสอบ สถิติ ฯลฯ
- สอบถามได้สะดวก
- ความบันเทิง(liao)le(mei)
ดาวน์โหลดซอร์สโค้ด:
git clone https://github.com/doterlin/wechat-robot.git
ติดตั้งสภาพแวดล้อมต่อไปนี้:
1.node.js
2.phantomjs
3.แคสเปอร์
ค้นหาและกำหนดค่า /config/const.js
//机器人名字
var ROBOT_NAME = "小强";
module.exports = {
//微信web版地址
'URL' : 'https://wx.qq.com/',
//机器人名字
'ROBOT_NAME' : ROBOT_NAME,
//图灵机器人apiKey和api地址
//AI部分使用的是第三方机器人图灵(http://www.tuling123.com/)
//这里只是示例,请大家自行到图灵官网注册并替换掉apikey免费版限5000次调用/天。有条件的同学可以付费支持下好产品
'TURING_APIKEY': '99fecec3424d416898b91b0998e2b26a',
'TURING_URL' : 'http://www.tuling123.com/openapi/api',
//锁定的微信号备注,注意是备注;如果是群聊则填群聊名称即可。
//填写的名称请预先在手机微信上搜索确认搜索结果是否出现在第一个
'TARGET_NICK' : '二十投小分队',
//启动时打招呼消息
'HELLO_WORLD' : '[闪电]' + ROBOT_NAME + '[闪电]已启动...',
}
ติดตั้งการพึ่งพาและรันคำสั่ง:
npm install
casperjs index.js
หากคุณได้รับแจ้งว่า python找不到
โปรดติดตั้ง python และตรวจสอบให้แน่ใจว่าสามารถทำงานได้ทั่วโลก
สแกนรหัส QR เพื่อเข้าสู่ระบบ WeChat หลังจากรัน เมื่อคุณเห็นข้อความแจ้งต่อไปนี้ ให้สแกนโค้ด QR ที่ปรากฏขึ้น:
正在加载二维码...
已保存二维码,路径:"static/img/qr.jpg".
正在使用默认软件打开二维码,请用手机微信扫一扫确认登录 (若没有请手动打开)
กรุณาใช้โทรศัพท์มือถือของคุณสแกนรหัส QR และยืนยันการเข้าสู่ระบบ一分钟内
หลังจาก登录成功
และ发送欢迎语
ก็เพียงพอแล้ว เป็นอันเสร็จสิ้นขั้นตอนการใช้งาน บทต่อไปนี้จะแนะนำวิธีการขยายฟังก์ชันการทำงาน
ก่อนที่จะทำเช่นนี้ คุณอาจต้องใช้สองวิธี:
ข้อความ.ส่ง()
//路径:src/utils/message.js
//回复消息的方法message.send
//使用如:
var message = require('/src/utils/message');
...
casper.then(function(){
message.send(this, '你好');
})
อาแจ็กซ์() / ajax.get() / ajax.post() / ajax.getJSON()
//路径:src/utils/ajax.js
//在聊天器调ajax的方法
//使用如:
var ajax= require('/src/utils/ajax');
...
casper.then(function(){
ajax(this, "http://example.com/getInfo", 'get', {uid: 123}, function(res){
console.log(JSON.stringify(res));
});
//或者
ajax.get(this, "http://example.com/getInfo", {uid: 123}, function(res){
console.log(JSON.stringify(res));
});
//jsonp
ajax.getJSON(this, "http://example.com/getInfo?calback=?", {uid: 123}, function(res){
console.log(JSON.stringify(res));
});
})
คุณสามารถขยายฟังก์ชันของหุ่นยนต์ในด้านต่อไปนี้ได้ตามต้องการ:
//你可以写一些指令而不是交给AI处理
//指令分为精确匹配指令和模糊匹配指令
//-------------------------------------------------------------------
//精确匹配
//精确指令在`/src/directive/exact.js`下编写。
//key是指令名称,值是一个方法,接受参数msgContent(用户发送的消息)和casperIns(casper实例),如:
//当对方发送'关闭'指令时程序提示并退出。
module.exports = {
'关闭': function (msgContent, casperIns) {
message.send(casperIns, '[玫瑰]感谢您的使用[玫瑰]nr([闪电]需要开启请在控制台启动程序[闪电])');
casperIns.echo('微信发出关闭口令,程序退出。')
return casperIns.exit();
}
}
//-------------------------------------------------------------------
//模糊匹配
//模糊匹配指令在`/src/directive/fuzzy.js`下编写。
//接收参数前两个同精确指令,第三个是当前的正则表达式;
//指令可单独防在src/directive/explain下方便维护,如weather.js:
//匹配'地名 + 天气',调用天气api
var weather = require('./explain/weather');
module.exports = {
'/天气/g': weather
}
//weather.js实现如下:
var ajax = require('../../utils/ajax');
var message = require('../../utils/message');
var formatWeather = function(local, weather) {
//此方法对返回的json格式化,详情请查看源码
}
var weather = function(msgContent, casperIns, regex) {
var local = msgContent.replace(/ |天气/, '');
var resource = 'http://wthrcdn.etouch.cn/weather_mini?city=' + encodeURIComponent(local);
ajax.get(casperIns, resource, {}, function(res){
var weather = JSON.parse(res);
if (weather.status == 1000) {
message.send(casperIns, formatWeather(local, weather));
} else {
message.send(casperIns, '未查找到相关天气信息。请尝试输入格式如"广州天气"。')
}
});
}
module.exports = weather;
//-------------------------------------------------------------------
ฉันยังไม่ได้ค้นคว้าเรื่องนี้
เมื่อทำการดีบั๊กโค้ด คุณสามารถตั้งค่าฟิลด์ logLevel
ในการเลือกการกำหนดค่า capserjs
ให้เป็น info
เพื่อแสดงบันทึก phantomjs
เพิ่มเติมได้ สำหรับการกำหนดค่าเพิ่มเติม โปรดไปที่เอกสารประกอบ casperjs
//路径:config/casper.js
module.exports = {
clientScripts: [
'static/js/jquery.js'
],
pageSettings: {
loadImages: true,
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.14 Safari/537.36',
},
logLevel: "info", //here
viewportSize: {width: 1300, height: 900},
verbose: true,
waitTimeout: 1000 * 60 * 60 * 24 * 365,
onWaitTimeout: function(){
console.log( 'waitFor*方法超时...' )
}
}
นอกจากนี้ ภาพหน้าจอของเบราว์เซอร์จะถูกบันทึกลงใน /static/img
เมื่อดำเนินการแต่ละขั้นตอนเพื่ออำนวยความสะดวกในการดูการแสดงผลของเบราว์เซอร์ ตัวอย่างเช่น ทุกครั้งที่ได้รับข้อความใหม่ ภาพหน้าจอจะถูกถ่ายและเขียนทับเป็น lastNewMsgContent.png
ยินดีส่งประชาสัมพันธ์เพื่อการพัฒนารองและทำงานร่วมกันเพื่อปรับปรุงโครงการ!
ลิขสิทธิ์ (c) 2020 โดเทอร์ลิน
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการซื้อขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิดไม่ว่าในกรณีใด ผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อสิ่งใดๆ การเรียกร้องค่าเสียหายหรืออื่น ๆ ความรับผิดไม่ว่าในการกระทำของสัญญา การละเมิด หรืออย่างอื่น ที่เกิดขึ้นจาก ออกจาก หรือเกี่ยวข้องกับซอฟต์แวร์ หรือการใช้งาน หรือข้อตกลงอื่น ๆ ในซอฟต์แวร์