微信机器人怎么弄的, 免费AI微信机器人只做方法教程

2024-09-24 09:22 百科

由于制作微信机器人的方法实在太简单,所以给大家分享下完整的教程,让大家也能轻松制作自己的 AI 微信机器人。

自制 AI 微信机器人教程

预计整个制作过程 10 分钟

先描述下需求:做一个能够自动回答微信消息的机器人。

要实现这个需求,有两个要点:

如何让程序接收到微信发来的消息?如何根据消息来回复对应的内容?

这两个问题,如果没有一定的专业知识,是很难自行解决的。但如今是开源的时代,我们可以站在巨人的肩膀上,用现成的技术来解决这些问题。

接受消息

可以使用开源的 wechaty库来实现对微信的自动化操作,比如收发消息、通过好友、拉群等。

开源微信机器人库

使用方法很简单,在 wechaty 仓库的项目介绍文件中,有最简单的入门示例代码,只需要 6 行代码,就能启动一个帮你接受消息的机器人!

wechaty 支持几乎所有主流的编程语言,其中 JavaScript 的入门代码如下:

import{ WechatyBuilder } from'wechaty'https:// 启动WechatyBuilder.build() .on('scan', (qrcode, status) =>console.log(`Scan QR Code to login: ${status}\nhttps://wechaty.js.org/qrcode/${encodeURIComponent(qrcode)}`)) .on('login', user=>console.log(`User ${user}logged in`)) .on('message', message=>console.log(`Message: ${message}`)) .start()

解释一下上述代码,你会发现,wechaty 中定义了很多事件,比如扫码、用户登录、接受消息、接受好友请求等。你不需要关心事件是如何被它触发的,只需要针对不同事件来编写处理方法就好,比如收到消息后自动回复同样的消息,示例代码如下:

// 初始化机器人constbot = WechatyBuilder.build({ name: 'yupi-wxrobot', // 用于兼容不同 IM 协议,不用关心puppet: 'wechaty-puppet-wechat', }) // 处理消息bot.on('message', asyncfunction(msg) { // 获取消息发送人constcontact = msg.talker() // 获取消息内容consttext = msg.text() // 获取群聊信息constroom = msg.room() // 是私聊if(contact } }

但是,大家 千万不要直接运行上述代码!因为一旦你启动了机器人、又没有限制回复者昵称的话,它会对所有给你发消息的人生效!

我刚开始没注意,就被坑了。。。

所以,如果你只想自动回复某人微信或某微信群聊的消息,记得在代码中补充相应的过滤逻辑,比如:

// 处理消息bot.on('message', asyncfunction(msg) { // 获取消息发送人constcontact = msg.talker() // 获取消息内容consttext = msg.text() // 获取群聊信息constroom = msg.room() // 不处理自己的消息if(msg.self()) { return} // 群聊还是私聊if(room) { if(room.topic() === '鱼皮群') { // 回复} } else{ if(contact.name() === '小号') { // 回复} } }

OK,使用上述代码,就能实现接受消息和自动回复啦!

那么你是否好奇,wechaty 是如何接受到微信消息的呢?其实原理很简单,执行 wechaty 程序时,它会利用无头浏览器技术悄悄打开一个网页版微信,然后在你运行程序的控制台弹出微信网页版的登录二维码,在你扫码登录后,程序只需要监听页面元素的变化、或者自动触发点击事件即可。

网页版微信

其实道理很简单,就是把我们能对网页进行的人工操作转化为后台自动化执行。

智能回复

第一个问题解决了,那么如何根据不同的问题给出不同的回复呢?

很多同学肯定上来就说 AI,那都是被我用的 “智能” 一次带偏了。其实如果只是简单的自动回复,问题规则可收敛、可枚举的情况下,直接用 if ... else ...就能解决了!

if(/你好/.test(text)) { msg.say('好的'); } elseif(/谢谢/.test(text)) { msg.say('不客气'); } elseif(/加群/.test(text)) { msg.say('公众号[程序员鱼皮],回复[加群]'); } else{ msg.say('我不懂'); }

不是说人工智能的本质就是 if else 么哈哈,只不过是让机器来帮你去做 if else 而已。

但现实是,我的读者对于同一个问题也会有不同的表达方式,比如 “怎么学 Java?”、“我想学 Java,怎么学?” 等等。因此,还是需要人工智能登场了。

到哪里去搞人工智能呢?

我们可以直接利用 微信对话开放平台提供的强大能力,一行代码都不用写,就能免费实现智能对话!

地址:https://openai.weixin.qq.com/

登录后先创建一个机器人:

创建机器人

然后可以为机器人添加技能,你可以自定义技能,向机器人灌输指定的问题和回答;也可以直接使用平台提供的默认技能,比如听歌、聊天、百科等:

配置技能

我的需求是自动回答读者的编程相关问题,因此需要创建一个新技能。在这里,可以灵活地自定义题目、不同的问法以及回答,全部用界面操作即可,轻松打造你的专属机器人:

自定义技能

配置好之后,就可以发布和使用机器人了。我们可以将机器人和公众号 / 小程序绑定,自动回复读者消息;可以直接在 H5 网页中接入智能客服;还可以在程序中调用开放接口来使用智能对话能力:

发布和使用

此处我们希望在 wechaty 程序中自动获得回复,所以要使用 开放接口的方式,也很简单,就是用个请求库去调用接口,示例代码如下:

// 获取 API 签名,2小时过期// token 需从平台获取consturl = `https://openai.weixin.qq.com/openapi/sign/${token}`; const{signature} = (awaitaxios.post(url, { userid: 'test'})).data; // 调用 AI 接口,获取答案asyncfunctiongetAnswer(userid, text) { constapiUrl = `https://openai.weixin.qq.com/openapi/aibot/${token}`; return(awaitaxios.post(apiUrl, { "signature": signature, "userid": userid, "query": text, })).data?.answer; }

大概就是这样,又简单又实用,感兴趣的同学可以用它来做出很多有趣的功能~

点赞

全部评论

相关阅读

止咳化痰什么方法最管用,10个止咳化痰最快最有效的小偏方

怎么给人工流产孩子超度?正确的一些方法介绍

挽回前男友后,再次增进感情的方法

疏肝理气最快的好方法

被子怎么洗简单方法

蚕丝被怎么洗涤和保养方法小知识

早搏最有效的自愈方法

化解门对窗最好的方法

地下城与勇士支援兵怎么弄?dnf支援兵技能在哪里

老人腰间盘突出最佳自愈方法

各种窗帘的清洗方法方式

亚马逊计划投资2亿美元佛罗里达机器人设施

不同材质沙发的清洁和保养方法大全

有没有改变自己财运的方法?

结婚择吉日的方法重点,结婚必看风水禁忌

海盐县店铺风水摆放方法,你知道吗?

下辈子是男是女?有什么方法可以知道吗?

dnf2.9怎么解锁大枪_dnf大枪的枪怎么弄没

车身划痕修复方法图解

密封性测试方法有哪些