小白如何从0到1上手 Puppet-Walnut
今天和大家分享从未接触过5G消息开发的小白如何从0到1的申请到5G消息的测试账号,以及如何使用Wechaty社区中的walnut puppet来实现5G消息的一些功能。
一、进入硬核桃5G开发者社区进行账号的注册
1. 点击网址链接进入硬核桃5G开发者社区,如下图所示,点击网页中的「免费注册」按钮
2. 如下图所示,输入账户名、密码、手机号进行相关注册
3. 如下图,输入手机短信验证码
4. 注册成功!如果怕忘记密码,可以再绑定一个邮箱~(绑定邮箱的操作此处忽略)
二、报名参加 “启航计划” 5G消息开发者大赛
在完成第一步的账号注册后,我们已经有了一个硬核桃5G开发者社区的账号
1. 登陆第一步注册的账号之后,点击「“启航计划”5G消息开发者大赛」进入活动界面
2. 点击下图中的「立即报名」
3. 如下图所示,填写参赛相关信息(如有邀请码请填写邀请码,没有可不填),填写完毕之后点击「提交」按钮
4. 报名成功!分享邀请码,邀请朋友参赛。
三、申请试用硬核桃开发套件
在申请开发资源前,请先进行实名认证。如若之前已经通过认证,无需二次认证,可直接申请所需开发资源。
1. 实名认证
账号实名认证(个人)或者企业账号认证,两种方式二选一即可。
- 点击下图中的「前去认证」按钮对账户进行实名认证
- 如下图所示,填写相关资料进行账户实名认证
- 资料提交成功后,账户实名认证状态会如下图所示变为「待审核」
- 如果提交的资料没问题,等待30分钟之内,认证状态会变为「认证通过」
2. 企业账号认证
- 接下来我们继续申请企业账号认证,点击下图中的「前去认证」
- 如下图所示,填写相关资料进行企业账号认证
- 资料提交成功后,企业账号认证状态会如下图所示变为「待审核」
- 如果提交的资料没问题,等待30分钟之内,认证状态会变为「认证通过」
3. 开发资源申请
- 点击下图中的「开发者中心」按钮,选择下拉框中的「硬核桃开发套件」
- 点击下图中的「免费试用」按钮
- 点击「硬核桃开发套件」按钮回到下图中的界面,点击「提交」
- 如下图所示,填写相关资料后点击「提交」按钮(非必填信息可以空着)。参赛作品以电联接口账号信息为准。
- 显示账号信息提交成功!
- 此时配置状态如下图所示显示「未配置」
- 等待配置完成,配置完成后状态如下图所示显示「已配置」,此时点击「查看」,显示分配的 Chatbot资源信息。
四、硬核桃调测模拟终端
5G消息是短信的升级,请在安卓手机安装终端模拟器进行5G消息的测试。
1. APP下载
- 下载页面https://www.5g-msg.com/#/kaifataojian,页面内查找终端测试消息 APP,点击进行下载,如图:
2. APP安装
- 下载完成后,点击安装,替代系统默认短信权限,无需担心原有短信数据。由于安卓手机权限不一致的原因,若无法替代系统默认短信权限,可能导致终端模拟器无法正常使用,建议更换另一款安卓手机,重新安装。
3. APP登录
- 安装成功后,打开 APP,点击【右上角三竖点】,选【设置】,选【常规】,选【融合通信登录】,登录界面如图:
- 输入账号(申请 Chatbot 时的手机号码)信息,点击登录,成功后返回,可查看到【小程序服务】。
4. Chatbot查看
- 点击【小程序服务】,可在【小程序列表】中,输入Chatbot名称,搜索 Chatbot。点击 Chatbot,进入交互界面。完成首次交互后,也可在【消息列表】中,进行 Chatbot 的消息交互。
五、开始接入Wechaty社区的puppet-walnut
在完成第二步的硬核桃开发者套件申请试用后,我们已经有了从硬核桃5G开发者社区申请到的Chatbot的AppId、Chatbot的AppKey、Chatbot的sipId。上报填报chatbot的公网回调地址
1. 设置环境变量
-
Windows
set WECHATY_LOG=verbose set WECHATY_PUPPET=wechaty-puppet-walnut set WECHATY_PUPPET_WALNUT_APPID=Chatbot的AppId set WECHATY_PUPPET_WALNUT_APPKEY=Chatbot的AppKey set WECHATY_PUPPET_WALNUT_SIPID=Chatbot的sipId
-
Linux & MacOs
export WECHATY_LOG=verbose export WECHATY_PUPPET=wechaty-puppet-walnut export WECHATY_PUPPET_WALNUT_APPID=Chatbot的AppId export WECHATY_PUPPET_WALNUT_APPKEY=Chatbot的AppKey export WECHATY_PUPPET_WALNUT_SIPID=Chatbot的sipId
2. 安装依赖
- Node.js version 16+
- NPM version 7+
- TypeScript version 4.4+
npm install wechaty
npm install wechaty-puppet-walnut
3. 配置公网映射(开发环境)
将我们之前上报的公网回调地址映射到我们本地的3000端口即可。
这边推荐使用开源的frp工具
- Github repo: https://github.com/fatedier/frp
- 教程👉 https://fabian4.site/blog/22217.html
walnut中包含一个koa的服务 默认监听端口为3000(可在启动配置中更改)
4. 使用示例
(1). 创建实例
const bot = WechatyBuilder.build({
puppet: new PuppetWalnut(),
}) // get a Wechaty instance
.on('login', (user: any) => log.info(`User ${user} logged in`))
// get the message chatbot received from users
.on('message', async (message: Message) => {
log.info(`Message: ${message}`)
})
await bot.start()
const contact = await bot.Contact.find({ id: 'xxxxxxxxxxx' })
(2). 文本消息
await contact.say('This is a simple text message.')
(3). 图片消息
contact.say(FileBox.fromFile('C:\\Users\\Desktop\\1.png'))
(4). 富文本消息
const post = await bot.Post.builder()
.add('This is a single rich card.')
.add('This is the description of the rich card. It\'s the first field that will be truncated if it exceeds the maximum width or height of a card.')
.add(FileBox.fromFile('C:\\Users\\Desktop\\1.png'))
.type(PUPPET.types.Post.Unspecified)
.build()
await contact.say(post)
6. 消息支持
最新支持情况请参考 https://github.com/wechaty/puppet-walnut#%E6%B6%88%E6%81%AF%E7%A7%8D%E7%B1%BB%E6%94%AF%E6%8C%81
消息类型 | 从属(根据接口返回) | api | 接收 | 发送 | 群聊 |
---|---|---|---|---|---|
文本 | text |
message.text |
✅ | ✅ | ❌ |
图片 | image |
message.toImage() |
✅ | ✅ | ❌ |
视频 | video |
message.toFilebox() |
✅ | ❌ | ❌ |
音频 | audio |
message.toFilebox() |
✅ | ❌ | ❌ |
位置 | location |
message.toLocation() |
❌ | ❌ | ❌ |
文件 | other |
message.toFilebox() |
✅ | ❌ | ❌ |
联系人 | other |
message.toContact() |
✅ | ❌ | ❌ |
富文本卡片 | post |
message.toPost() |
❌ | ✅ | ❌ |
7. Wechaty Api支持
最新支持情况请参考 https://github.com/wechaty/puppet-walnut#wechaty-api-%E6%94%AF%E6%8C%81
(1). Contact
-
Properties
Name Type Description Support Details id string
Get Contact id. This function is depending on the Puppet Implementation, see puppet-compatible-table ✅ Phone number -
Instance Methods
Instance Methods Return type Support Details say(text Or Contact Or File) Promise
✅ ⚠Contact not Support name() String
✅ Phone number alias(newAlias) Promise
✅ friend() Boolean or null
✅ True type() ContactType.Unknown or ContactType.Personal or ContactType.Official
✅ ContactType.Personal gender() ContactGender.Unknown or ContactGender.Male or ContactGender.Female
✅ ContactGender.Unknown province() String or null
❌ city() String or null
❌ avatar() Promise
✅ Default avatar sync() Promise
✅ self() Boolean
✅ Default avatar 👉 https://raw.githubusercontent.com/wechaty/puppet-walnut/main/docs/images/avatar.png
-
Static Methods
Static Methods Return Type Support Detail find(query) Promise <Contact \| null>
✅ findAll(Query Arguements) Promise <Contact []>
✅
(2). Message
-
Instance Methods
Instance methods Return type Support Detail talker() Contact
ornull
✅ to() Contact
ornull
✅ room() Room
ornull
✅ null text() string
✅ say(text Or Contact Or File) Promise
✅ ⚠Contact not Support type() MessageType
✅ Message.Text self() boolean
✅ mention() Promise
❌ mentionSelf() Promise
❌ forward(to) Promise
✅ date() Date
✅ age() Number
✅ toFileBox() Promise
✅ toContact() Promise
✅ toUrlLink() Promise
✅ -
Static Method
Static Methods Return type Support Detail find() Promise
✅ findAll() Promise
✅
Author: @fabian