位置: IT常识 - 正文

动手做个 AI 机器人,帮我回消息(怎么做一个简单的机器)

编辑:rootadmin
动手做个 AI 机器人,帮我回消息

推荐整理分享动手做个 AI 机器人,帮我回消息(怎么做一个简单的机器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:自己做一个智能机器人,怎么制造一个ai,如何制作一个ai机器人,怎么做一个简单的机器,怎么制造一个ai,如何制作一个ai机器人,怎么制造一个ai,如何制作一个ai机器人,内容如对您有帮助,希望把文章链接给更多的朋友!

大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题。

但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和无力吧;另外我发现,大家的很多问题是重复的,而且大多数我都专门写文章来回答过。

所以,我决定自制一个 AI 问答机器人,帮我自动回复大家的常见问题,减少重复工作。

结果没想到,制作过程中被 Bug 坑惨了,闹了不少笑话,感兴趣的朋友可以看看视频哈哈:

地址:https://www.bilibili.com/video/BV1Vq4y1B7zu/

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

自制 AI 机器人教程

预计整个制作过程 10 分钟

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

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

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

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

接受消息

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

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

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

import { WechatyBuilder } from 'wechaty'// 启动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 中定义了很多事件,比如扫码、用户登录、接受消息、接受好友请求等。你不需要关心事件是如何被它触发的,只需要针对不同事件来编写处理方法就好,比如收到消息后自动回复同样的消息,示例代码如下:

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

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

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

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

// 处理消息bot.on('message', async function (msg) { // 获取消息发送人 const contact = msg.talker() // 获取消息内容 const text = msg.text() // 获取群聊信息 const room = msg.room() // 不处理自己的消息 if (msg.self()) { return } // 群聊还是私聊 if (room) { if(room.topic() === '鱼皮群') { // 回复 } } else { if(contact.name() === '小号') { // 回复 } }}动手做个 AI 机器人,帮我回消息(怎么做一个简单的机器)

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

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

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

智能回复

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

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

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

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

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

到哪里去搞人工智能呢?

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

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

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

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

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

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

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

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

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

我是鱼皮,肝文不易,有帮助的话还希望能给个 点赞 支持下,谢谢大家。

本文链接地址:https://www.jiuchutong.com/zhishi/299237.html 转载请保留说明!

上一篇:【jQuery从入门到精通】(jquery教程chm)

下一篇:使用stable diffusion webui在本地搭建中文的AI绘图模型(使用灭火器人要站在上风口还是下风口)

  • 斑马点读笔怎么连接wifi(斑马点读笔怎么连接蓝牙)

    斑马点读笔怎么连接wifi(斑马点读笔怎么连接蓝牙)

  • b站小窗口模式在哪里设置(b站小窗口模式在哪里设置ipad)

    b站小窗口模式在哪里设置(b站小窗口模式在哪里设置ipad)

  • 苹果13怎么关机(苹果13怎么关机按哪个键)

    苹果13怎么关机(苹果13怎么关机按哪个键)

  • 为什么苹果蓝牙耳机左耳不能单独使用呢(为什么苹果蓝牙耳机总是断开连接)

    为什么苹果蓝牙耳机左耳不能单独使用呢(为什么苹果蓝牙耳机总是断开连接)

  • 小米cc9信号不好(小米cc9信号不好怎么回事)

    小米cc9信号不好(小米cc9信号不好怎么回事)

  • 苹果耳机airpodspro怎么充电(苹果耳机airpodspro真假区别)

    苹果耳机airpodspro怎么充电(苹果耳机airpodspro真假区别)

  • excel表格身份证号码乱码怎么恢复数字(excel表格身份证号码提取年份)

    excel表格身份证号码乱码怎么恢复数字(excel表格身份证号码提取年份)

  • 微信没登录信息能收到吗(如果微信没登录消息能发过去吗)

    微信没登录信息能收到吗(如果微信没登录消息能发过去吗)

  • ipad pro12.9寸尺寸是多少厘米(ipad pro2021 12.9寸尺寸是多少厘米)

    ipad pro12.9寸尺寸是多少厘米(ipad pro2021 12.9寸尺寸是多少厘米)

  • 为什么mp3连不上手机(为什么mp3连不上手机只能充电)

    为什么mp3连不上手机(为什么mp3连不上手机只能充电)

  • 华为手机怎么设置颜色反转(华为手机怎么设置下面的三个功能键)

    华为手机怎么设置颜色反转(华为手机怎么设置下面的三个功能键)

  • 苹果手机自动放歌是怎么回事(苹果手机自动放音乐但却找不到在哪里)

    苹果手机自动放歌是怎么回事(苹果手机自动放音乐但却找不到在哪里)

  • k20pro与尊享版区别(k20pro和尊享版有什么区别)

    k20pro与尊享版区别(k20pro和尊享版有什么区别)

  • 红米note8pro什么时候上市(红米note8pro什么接口)

    红米note8pro什么时候上市(红米note8pro什么接口)

  • 苹果为什么卸载不了app(苹果为什么卸载的软件下载不了)

    苹果为什么卸载不了app(苹果为什么卸载的软件下载不了)

  • 为什么探探更新了之前账号没有了(为什么探探更新不了资料)

    为什么探探更新了之前账号没有了(为什么探探更新不了资料)

  • iphone x指纹在哪里(iphone x指纹识别在哪里)

    iphone x指纹在哪里(iphone x指纹识别在哪里)

  • 小米cc9e支持内存卡吗(小米cc9支持内存扩展吗)

    小米cc9e支持内存卡吗(小米cc9支持内存扩展吗)

  • zenly卸载了还能看到位置吗(Zenly卸载了还能看到定位吗)

    zenly卸载了还能看到位置吗(Zenly卸载了还能看到定位吗)

  • 华为nova4为什么发烫(华为nova4为什么更新不了鸿蒙)

    华为nova4为什么发烫(华为nova4为什么更新不了鸿蒙)

  • pdr模型与访问控制的主要区别是(pdr模型与访问控制)

    pdr模型与访问控制的主要区别是(pdr模型与访问控制)

  • 爱奇艺怎么用小米账号登陆(爱奇艺怎么用小艺语音)

    爱奇艺怎么用小米账号登陆(爱奇艺怎么用小艺语音)

  • 点赞又取消别人知道吗(点赞又取消别人能看到吗)

    点赞又取消别人知道吗(点赞又取消别人能看到吗)

  • oppo计算器怎么看记录(oppo计算器怎么变科学计算器)

    oppo计算器怎么看记录(oppo计算器怎么变科学计算器)

  • 小米6触屏失灵一招解(小米6触屏失灵怎么关机)

    小米6触屏失灵一招解(小米6触屏失灵怎么关机)

  • 硬盘分区七大原则(硬盘分区的原则主要有哪些)

    硬盘分区七大原则(硬盘分区的原则主要有哪些)

  • 资金性质生产性是什么意思
  • 小规模纳税人享受1%的税率
  • 高新企业收到政府补贴怎么做账
  • 商贸企业产值含税吗
  • 报税显示税款入账未到账
  • 资产类低值易耗品
  • 已认证抵扣的进项发票,次月开具红字发票信息表,凭证
  • 附加税的计税依据是实缴增值税
  • 交车辆购置税可以刷信用卡吗
  • 船期延迟出口开票开在了上个月会计处理是怎样的?
  • 本期有进项没有销项需要转出增值税吗?
  • 医疗机构交企业所得税吗
  • 增值税普通发票和专用发票有什么区别
  • 劳务派遣差额征税税率是多少
  • 印花税计入股票成本吗
  • 收购全资子公司的账务处理
  • 加计扣除申报表填报说明
  • 发生可抵扣暂时性差异是调增还是调减
  • 研发部门的办公费属于研发费的哪个类别
  • 税前利润弥补亏损
  • 预收贷款是什么会计科目
  • 支付税点是什么意思
  • mac如何改变用户名
  • 鸿蒙3.0系统哪些手机可以升级
  • xlsx长数字
  • 本月的应收账款,实际到下个月了会怎么样
  • 演出收入怎样做会计分录
  • 企业之间的违约金进什么科目
  • 季节性停工是什么
  • 房屋的押金费用怎么算
  • php怎么设置中文
  • PHP If Else(elsefi) 语句
  • element_ui
  • php @method
  • php事务特性
  • 代扣代缴的附加税怎么入账
  • 冲红的销项税怎么结转
  • php过滤字符
  • web前端开发学什么
  • python中numpy数组和列表的区别
  • 在发生以下的情况下,可判定货物
  • mysql ndb innodb
  • 退社保基金怎么办理
  • mongodb启动命令 linux
  • mongodb数据类型有哪些
  • 其他支出怎么做账
  • mysql5.6设置密码
  • 公司一年的账目怎样算
  • 增值税申报表填写顺序
  • 低值易耗品的账务处理图片
  • 小规模纳税人申报增值税的操作流程
  • 收到政府补贴如何入账
  • 员工罚款从工资中代扣
  • 购进商品印花税怎么计算
  • 公司之间的借款利息有最小限制吗
  • 计提员工工资是什么意思
  • 小规模纳税人没有进项发票违法吗
  • 红字发票的开具需要把开始的发票取回作废吗?
  • Select count(*)、Count(1)和Count(列)的区别及执行方式
  • ubuntu系统怎么安装搜狗输入法
  • window部署服务
  • linux/tmp
  • G40/50-70、SR1000随机Linux改安装Win7系统的实现方法
  • linuxsleep函数
  • linux acl设置
  • win8系统没有wifi
  • win7怎么自启动程序
  • 系统右键菜单
  • html上拉加载更多
  • js实现dialog
  • nodejsapi框架
  • 使用文字输入
  • bat文件加密如何解锁
  • KBEngine v0.4.0 发布,分布式游戏服务端引擎
  • jquery html函数
  • NodeJS配置HTTPS服务实例分享
  • unity 摄像机
  • 扬州税务学院官网朱诗柱
  • 国家税务发票查验平台手机怎么查
  • 增值税发票打印机怎么调整打印位置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设