Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
wechaty-puppet-walnut
Advanced tools
申请 5G 开发者权限。
配置系统环境变量。
WECHATY_PUPPET_WALNUT_APPID
: Chatbot的AppId。WECHATY_PUPPET_WALNUT_APPKEY
:Chatbot的AppKey。WECHATY_PUPPET_WALNUT_SIPID
: Chatbot的sipId。WECHATY_PUPPET
:wechaty-puppet-walnut配置公网环境。
如果是本地调试,则需要将在申请 5G 开发者时填入的公网地址,映射到本地才可以监听到
chatbot
接收到的消息
这里推荐使用 Frp,来进行端口的映射。Walnut本身集成的 sever 端口默认为 3000,将公网地址映射到本地即可
下载安装调试客户端。
需要一部非 IOS 系统的手机
下载并且安装 👉 终端测试消息APP 。
打开 app ,将其设置为系统的默认信息应用。
关闭wifi,确保使用手机流量上网。
右上角 -> 设置 -> 常规 -> 融合通信登录。
联系硬核桃社区申请账号密码。
登录成功之后就可以收到我们 chatbot 发送的消息了🎉。
小白如何从0到1上手puppet-walnut 👉 https://wechaty.js.org/2022/04/22/how-to-start-puppet-walnut/
npm install wechaty
npm install wechaty-puppet-walnut
import { WechatyBuilder } from 'wechaty'
WechatyBuilder.build() // get a Wechaty instance
.on('message', message => console.log(`Message: ${message}`))
.start()
Learn more for building your first Wechaty bot at https://github.com/wechaty/, https://github.com/wechaty/getting-started
消息类型 | 从属(根据接口返回) | 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() | ❌ | ✅ | ❌ |
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 | 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.webp
Static Methods | Return Type | Support | Detail |
---|---|---|---|
find(query) | Promise <Contact | null> | ✅ | |
findAll(Query Arguements) | Promise <Contact []> | ✅ |
Instance methods | Return type | Support | Detail |
---|---|---|---|
talker() | Contact or null | ✅ | |
to() | Contact or null | ✅ | |
room() | Room or null | ✅ | 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 Methods | Return type | Support | Detail |
---|---|---|---|
find() | Promise | ✅ | |
findAll() | Promise | ✅ |
sipId
、appId
和appKey
可以通过环境变量或者此处传入。port
和notifyUrlPrefix
可以指定 koa 服务监听的端口和路由前缀。比如 bot 申请的回调地址为: http://123.123.123.123:8080/sms/
此时
port
设为 8080,notifyUrlPrefix
为 '/sms'
port
默认为 3000,notifyUrlPrefix
默认为空
new PuppetWalnut({
sipId: xxxxxxx,
appId: xxxxxxx,
appKey: xxxxxxx,
port: 3000,
notifyUrlPrefix: '/sms'
})
const bot = WechatyBuilder.build({
puppet: new PuppetWalnut(),
}) // get a Wechaty instance
.on('login', (user: any) => log.info(`User ${user} logged in`))
.on('message', async (message: Message) => {
log.info(`Message: ${message}`)
})
await bot.start()
const contact = await bot.Contact.find({ id: 'xxxxxxxxxxx' })
await contact.say('This is a simple text message.')
contact.say(FileBox.fromFile('C:\\Users\\Desktop\\1.png'))
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)
“开源软件供应链点亮计划-暑期2021”(以下简称 暑期2021)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。
根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2021”活动奖金和奖杯。
Wechaty 是一个开源聊天机器人框架SDK,具有高度封装、高可用的特性,支持NodeJs, Python, Go 和Java 等多语言版本。在过去的5年中,服务了数万名开发者,收获了 Github 的 9600 Star。同时配置了完整的DevOps体系并持续按照Apache 的方式管理技术社区。
开发支持电信运营商 5G Chatbot / RCS 的 Wechaty 接入 Puppet 模块
Wechaty 社区目前已经支持微信、Whatsapp、企业微信、飞书等常见流行即时通讯工具,并且能够通过多语言 SDK (比如 Python Wechaty) 进行调用。
5G Chatbot (RCS) 是近期中国电信运营商基于 5G 的消息战略落地平台,未来的 5G 手机将会内置 RCS 消息的处理能力。我们在本次 Summer 2021 的项目中,Wechaty 希望可以实现对RCS Chatbot 的支持。可以将 RCS 协议封装成为 wechaty-puppet-walnut
供 Wechaty 开发者方便接入 RCS 平台,使其成为 Wechaty 可以使用的社区生态模块。
使用 https://github.com/wechaty/wechaty-puppet-official-account 项目作为模版,将核心代码文件 https://github.com/wechaty/wechaty-puppet-official-account/blob/master/src/puppet-oa.ts 中的微信公众平台调用,全部替换(封装)为 RCS 模块的调用。
这里有一个专门讲解如何开发 Wechaty Puppet Provider 的 workshop 视频,它以 wechaty-puppet-official-account
作为例子,做了从0到1的入门讲解:Wechaty Workshop for Puppet Makers: How to make a Puppet for Wechaty。通过观看这一个小时的视频,应该可以系统性的了解如何完成构建一个 Wechaty Puppet Provider 模块。
在初期开发中,能够实现文本消息的接收和发送,即可完成原型验证 POC 。
还可以参考以下链接:
Initial version.
FAQs
Puppet Walnut for Wechaty
We found that wechaty-puppet-walnut demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.