应 WWC(Women Who Code) 邀请,我在线上分享了如何用「Wechaty」和「微信对话开放平台」做个助理帮助回答常见问题。
活动介绍: https://mp.weixin.qq.com/s/6HyEZlwWbuRGY9T_KotXEw
随着社会节奏的不断变快,每天,我都有越来越多的微信消息需要回复,其中不乏很多重复的问题反复找到我。作为一个程序员,都是不愿意在重复的工作中浪费自己宝贵的时间的。这次,将给大家分享如何用 Wechaty 和 OpenAI 创建一个属于你的个人助理,帮助你来处理那些重复的问题,解放你的时间。
我们要做什么?
一个微信助理机器人带有以下功能:
- 我@他,并且提问的时候,自动把准备好的材料等都发出来
- 别人问他的时候,可以自动匹配到常见问题并回答
- 当没有匹配到回答的时候,转接给我
- 消息在群里且我在群里:@我让我回答
- 私聊或者我不在群里:把我的名片发出来,引导加我好友
我们需要通过代码来控制微信
这个时候就是 Wechaty
大显身手的时候了,下面是接入代码:
import {
Wechaty, Message, UrlLink } from 'wechaty'
import {
PuppetPadplus } from 'wechaty-puppet-padplus'
import {
EventLogger, QRCodeTerminal } from 'wechaty-plugin-contrib'
import {
padplusToken } from './const'
const puppet = new PuppetPadplus({
token: padplusToken,
})
const bot = new Wechaty({
name: 'wwc-agent',
puppet,
})
bot.use(EventLogger())
bot.use(QRCodeTerminal({
small: true }))
bot.start()
代码很简单,就是创建了一个 puppet
的实例,然后作为参数传给了 Wechaty
的构造函数,创建了一个新的 Wechaty
实例,然后启动了 Wechaty
实例。
中间用到了两个插件,一个是 EventLogger
,可以把所有的 Wechaty
事件都打印到控制台中,另外一个是 QRCodeTerminal
,可以把扫码事件里面的二维码直接打印到控制台,方便扫码登录。
上面的代码运行起来,就能看到命令行里打印的二维码,扫码之后就可以看到账号登录啦,效果如下:
19:27:44 INFO WeixinOpenAI constructor(your-, your-opena)
19:27:44 INFO PuppetPadplus start()
19:27:47 INFO WechatyPluginContrib EventLogger heartbeat:
19:27:48 INFO WechatyPluginContrib EventLogger scan: http://weixin.qq.com/x/QfsfuToGOs-EVGgaa-gn,2,
19:27:48 INFO WechatyPluginContrib QRCodeTerminal Login QR Code Status: Waiting(2)
QR Code Image URL: https://wechaty.js.org/qrcode/http%3A%2F%2Fweixin.qq.com%2Fx%2FQfsfuToGOs-EVGgaa-gn
19:27:55 INFO PadplusManager
=================================================
QRCODE_SCAN MSG : 已扫码,请在手机端确认登陆...
=================================================
19:27:55 INFO WechatyPluginContrib EventLogger scan: ,3,
19:27:55 INFO WechatyPluginContrib QRCodeTerminal onScan: Scanned(3)
19:27:57 INFO PadplusManager
=================================================
QRCODE_SCAN MSG : 已确认
=================================================
19:27:57 INFO WechatyPluginContrib EventLogger scan: ,4,
19:27:57 INFO WechatyPluginContrib QRCodeTerminal onScan: Confirmed(4)
19:28:03 INFO WechatyPluginContrib EventLogger heartbeat:
19:28:03 INFO WechatyPluginContrib EventLogger login: Contact<小助手>
实现素材推送
这一步就比较容易,简单的代码逻辑实现一下就可以了