300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信机器人 wechaty 针对个人微信对接chatterbot +django+drf 实现 自动回复 接入自己api接口

微信机器人 wechaty 针对个人微信对接chatterbot +django+drf 实现 自动回复 接入自己api接口

时间:2024-04-01 17:38:05

相关推荐

微信机器人 wechaty 针对个人微信对接chatterbot +django+drf 实现 自动回复 接入自己api接口

之前发表过chatterbot 的自定义api本人的流程 但是有粉丝或游客私信我 怎样对接自己个人微信 现在统一回复下 自己的心得流程 实现等

在写代码之前我先表述下 之前个人微信接口 使用itchat 等 在使用这类的前提是可以 登录网页版微信 网页版微信登录链接 itchat原理就是一种爬虫 获取绘话信息处理并返回自定义信息(跑远了…) 要想获取个人微信中的对话 必须登录 才能自定义一些逻辑啥的

前几天自己写了能实现对接chatterbot的api接口

1 首先我们要绕过登录验证 能成功登录

2 我是用node.js(对用开发来说这个学习起来还好…)+wechaty这是前端 后端django chatterbot等 参考项目 参考资料

3 点击参考资料下载 配置什么的可以点击参考资料 我现在主要讲解下 微信对接api

项目中node配置之后安装包时候可能会有些问题(除了那个文档之外的命令)

npm config set registry https://registry.npm config set disturl /distnpm config set puppeteer_download_host /mirrorsset WECHATY_LOG=verboseset WECHATY_PUPPET=wechaty-puppet-wechat

目录中index.js 我只添加了一部分代码 用于调用自己的后台接口 其中 reply = await superagent.getMonekyReply(content);调用自己的获取后台的方式

// 监听对话async function onMessage(msg) {const contact = msg.talker(); // 发消息人const content = msg.text().trim(); // 消息内容const room = msg.room(); // 是否是群消息const alias = await contact.alias() || await contact.name(); // 发消息人备注const isText = msg.type() === bot.Message.Type.Text;if (msg.self()) {return;}if (room && isText) {// 如果是群消息 目前只处理文字消息const topic = await room.topic();console.log(`群名: ${topic} 发消息人: ${await contact.name()} 内容: ${content}`);} else if (isText) {// 如果非群消息 目前只处理文字消息console.log(`发消息人: ${alias} 消息内容: ${content}`);if (content.substr(0, 1) == '?' || content.substr(0, 1) == '?') {let contactContent = content.replace('?', '').replace('?', '');if (contactContent) {let res = await superagent.getRubbishType(contactContent);await delay(2000);await contact.say(res);}} else if (config.AUTOREPLY && config.AUTOREPLYPERSON.indexOf(alias) > -1) {// 如果开启自动聊天且已经指定了智能聊天的对象才开启机器人聊天\if (content) {let reply;if (config.DEFAULTBOT == '0') {// 天行聊天机器人逻辑reply = await superagent.getMonekyReply(content);console.log('Monkey机器人回复:', reply);} else if (config.DEFAULTBOT == '1') {// 图灵聊天机器人reply = await superagent.getTuLingReply(content);console.log('图灵机器人回复:', reply);} else if (config.DEFAULTBOT == '2') {// 天行对接的图灵聊reply = await superagent.getTXTLReply(content);console.log('天行对接的图灵机器人回复:', reply);}try {await delay(2000);await contact.say(reply);} catch (e) {console.error(e);}}}}}

superagent->index.js

const MONKEYAPI = 'http://127.0.0.1:8000/'; // 自建1.0接口apiasync function getMonekyReply(world) {// 获取自建机器人信息let url = MONKEYAPI + 'testbot/';try {let content = await superagent.req({url, method: 'POST', data: {"text":world}});console.info(content);c_text = content.textc_replace_text = c_text.replace(/'/g, `"`)c_json= JSON.parse(c_replace_text)obj = c_json.wordsreturn obj;//if (content.code === 200) {// let obj = content["text"]["worlds"][0];//console.info('获取成功', obj);//return obj;//}} catch (err) {console.log('请求失败', err);}}

module.exports = {XXX,getMonekyReply};

superagent ->superagent.js中修改

.set('Content-Type', 'application/json')

大致项目改了这几处 效果如下 api对接一个简单的天气爬虫…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。