摘要:基于和端微信開發(fā)的聊天機器人。使用的微信賬號即充當機器人的賬號為個人賬號,可自定義指令。關閉玫瑰感謝您的使用玫瑰閃電需要開啟請在控制臺啟動程序閃電微信發(fā)出關閉口令,程序退出。
Github: https://github.com/doterlin/wechat-robot
效果基于phantomjs和web端微信開發(fā)的聊天機器人。使用的微信賬號(即充當機器人的賬號)為個人賬號,可自定義指令。
可以指定一個微信賬號:
自定義指令不會交給AI處理:
獨樂樂不如眾樂樂,可以指定到群聊上:
在后臺程序查看log:
使用場景如何使用 1.安裝環(huán)境微信智能回復,監(jiān)控,統(tǒng)計等
便捷查詢
娛(liao)樂(mei)
下載好源碼并安裝以下環(huán)境:
1.node.js
2.phantomjs
3.casperjs
找到并配置好/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/) //這里只是示例,請大家自行到圖靈官網(wǎng)注冊并替換掉apikey免費版限5000次調用/天。有條件的同學可以付費支持下好產品 "TURING_APIKEY": "99fecec3424d416898b91b0998e2b26a", "TURING_URL" : "http://www.tuling123.com/openapi/api", //鎖定的微信號備注,注意是備注;如果是群聊則填群聊名稱即可。 //填寫的名稱請預先在手機微信上搜索確認搜索結果是否出現(xiàn)在第一個 "TARGET_NICK" : "二十投小分隊", //啟動時打招呼消息 "HELLO_WORLD" : "[閃電]" + ROBOT_NAME + "[閃電]已啟動...", }3.運行和登錄微信
安裝依賴和運行命令:
npm install
capserjs index.js
如果提示python找不到之類的話請安裝一下python并保證其能運行在全局
掃碼登錄微信
運行后看到如下提示時則掃一下彈出來的二維碼:
正在加載二維碼... 已保存二維碼,路徑:"static/img/qr.jpg". 正在使用默認軟件打開二維碼,請用手機微信掃一掃確認登錄 (若沒有請手動打開)
請在一分鐘內使用手機掃碼并確認登錄。出現(xiàn)登錄成功和發(fā)送歡迎語提示后即可。這樣就完成了使用步驟。下面的章節(jié)是介紹如何去擴展功能。
指令和AI在這之前你可能需要兩個方法:
message.send()
//路徑:src/utils/message.js //回復消息的方法message.send //使用如: var message = require("/src/utils/message"); ... casper.then(function(){ message.send(this, "你好"); })
ajax() / 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)); }); })
你可以根據(jù)需要按以下方面擴充機器人的功能:
//你可以寫一些指令而不是交給AI處理 //指令分為精確匹配指令和模糊匹配指令 //------------------------------------------------------------------- //精確匹配 //精確指令在`/src/directive/exact.js`下編寫。 //key是指令名稱,值是一個方法,接受參數(shù)msgContent(用戶發(fā)送的消息)和casperIns(casper實例),如: //當對方發(fā)送"關閉"指令時程序提示并退出。 module.exports = { "關閉": function (msgContent, casperIns) { message.send(casperIns, "[玫瑰]感謝您的使用[玫瑰] ([閃電]需要開啟請在控制臺啟動程序[閃電])"); casperIns.echo("微信發(fā)出關閉口令,程序退出。") return casperIns.exit(); } } //------------------------------------------------------------------- //模糊匹配 //模糊匹配指令在`/src/directive/fuzzy.js`下編寫。 //接收參數(shù)前兩個同精確指令,第三個是當前的正則表達式; //指令可多帶帶防在src/directive/explain下方便維護,如weather.js: //匹配"地名 + 天氣",調用天氣api var weather = require("./explain/weather"); module.exports = { "/天氣/g": weather } //weather.js實現(xiàn)如下: 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; //-------------------------------------------------------------------
這個我目前也沒研究。
調試代碼時可將capserjs配置選像中的logLevel字段設為info將會顯示更多phantomjslog,更多配置請移步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*方法超時..." ) } }
另外,在執(zhí)行各個步驟時會把瀏覽器截圖保存到/static/img,方便查看瀏覽器渲染情況。比如每獲取到一條新消息時會截圖并覆蓋為lastNewMsgContent.png。
版本預告二次開發(fā)若方便請Fork貢獻給本Github,共同完善項目!
下一版本更新但不限于以下內容:
1.支持綁定多個微信帳號
2.UI化控制臺(node.js web同步命令log及部分操作)
3.支持圖片識別和回復(如斗圖)
4.更多實用指令
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87202.html
摘要:行代碼實現(xiàn)微信自動回復機器人一寫在前面今天下午又學到了另一種有趣的玩法微信自動回復機器人。將返回消息返回給微信消息的發(fā)送人。以此實現(xiàn)將微信個人號變身為聊天機器人。 30行代碼實現(xiàn)微信自動回復機器人 一、寫在前面 今天下午又學到了itchat另一種有趣的玩法---微信自動回復機器人。 程序很簡單僅僅三十行代碼左右,實現(xiàn)了機器人自動與你的微信好友聊天,下面是我的機器人小籠包跟自己微信好友聊...
摘要:版微信登錄地址如有不足與錯誤,請見諒版微信主要參考微信協(xié)議進行設計開發(fā)項目主要分成三大模塊登錄模塊微信掃碼登錄流程微信容器微信信息會話接收發(fā)送心跳監(jiān)測數(shù)據(jù)存儲用戶登錄信息狀態(tài)信息會話信息先祭圖拜八哥已求無效果圖我們希望實現(xiàn)的功能包括基本的 Web版微信登錄 github地址:https://github.com/hty7/vue-w...如有不足與錯誤,請見諒 Web版微信主要參考W...
摘要:模塊是一個文件,以結尾,包含了對象定義和語句模塊讓你能夠有邏輯地組織你的代碼段。把相關的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。命令執(zhí)行成功,執(zhí)行結果命令執(zhí)行失敗一秒后執(zhí)行關機命令 Python 模塊(Module) 是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句 模塊讓你能夠有邏輯地組織你的 Python 代碼段。 把相關的代...
摘要:本文不涉及到的知識如果你是沖著來的那么可能會讓你失望了前一陣子一個朋友找我問我能不能搞一個微信自動加好友的軟件在普通人眼里程序員就是專門寫木馬病毒外掛軟件的三流黑客不會寫那就連三流都不是所以為了證明我是三流黑客我隨便百度了兩個現(xiàn)成的給他本來 本文不涉及到 AI 的知識,如果你是沖著 AI 來的,那么可能會讓你失望了. 前一陣子一個朋友找我,問我能不能搞一個微信自動加好友的軟件,(在普通...
摘要:本文不涉及到的知識如果你是沖著來的那么可能會讓你失望了前一陣子一個朋友找我問我能不能搞一個微信自動加好友的軟件在普通人眼里程序員就是專門寫木馬病毒外掛軟件的三流黑客不會寫那就連三流都不是所以為了證明我是三流黑客我隨便百度了兩個現(xiàn)成的給他本來 本文不涉及到 AI 的知識,如果你是沖著 AI 來的,那么可能會讓你失望了. 前一陣子一個朋友找我,問我能不能搞一個微信自動加好友的軟件,(在普通...
閱讀 2963·2021-09-23 11:32
閱讀 2931·2021-09-22 15:12
閱讀 1712·2019-08-30 14:07
閱讀 3455·2019-08-29 16:59
閱讀 1646·2019-08-29 11:11
閱讀 2311·2019-08-26 13:50
閱讀 2430·2019-08-26 13:49
閱讀 2625·2019-08-26 11:49