# 消息接收和发送
# 接收和处理消息
企业微信机器人目前可以接收以下类型的消息:
- 文字消息
- 图片消息(仅限单人聊天)
- 事件消息
- 附件消息
Tenbot 可以对不同类型的消息设定不同的处理方法。
# 接收消息
- 文字消息:
bot.onText(handler)
- 图片消息:
bot.onImage(handler)
- 事件消息:
bot.onEvent(handler)
- 附件消息:
bot.onAttachment(handler)
- 默认处理器:
bot.onMessage(handler)
TIP
如果当前消息没有配置对应类型的处理器,则会进入默认处理器。
# 消息处理器
消息处理器是一个 callback 函数,它接收两个参数:
message
: 来自企业微信的消息,不同的消息类型结构不同context
: 消息上下文,使用context
上的方法可以快速生成和回复消息
# 发送消息
企业微信机器人目前可以发送以下类型的消息:
- 文字消息
- Markdown 消息 (可以带附件)
- 图片消息
- 图文消息
Tenbot 提供了 Context 对象,可以快速发送不同类型的消息。
# Context
使用 Context 中的方法,可以向企业微信发送消息。
- 文字消息:
context.sendText(options)
- Markdown 消息:
context.sendMarkdown(options)
- 图片消息:
context.sendImage(options)
context.sendImageFromUrl(url, options)
- 图文消息:
context.sendNews(options)
TIP
机器人 bot
对象,以及消息处理器中的 context
对象,都是一个 Context ,它们发送消息的接口完全一致,唯一的区别是:
如果不指定 chatId
, bot
默认向 所有群聊 发送消息, context
默认只向当前聊天回复消息。
# 使用示例
# 被动回复消息
bot.onText(async (message, context) => {
// 获取文字消息的内容,去掉 @bot-name 部分
const text = message.text.content.replace(`@${context.bot.name}`, '').trim();
// 回复一个 Markdown 消息
if (text === 'markdown') {
await context.sendMarkdown({
content: '> 这是一个 Markdown 消息',
});
}
// 回复一个带附件的 Markdown 消息
if (text === 'attachment') {
await context.sendMarkdown({
content: '> 这是一个带附件的 Markdown 消息',
attachments: [
context.createAttachment({
callbackId: 'test',
actions: [
context.createAttachmentActionButton({
name: 'button_1',
text: '有事',
type: 'button',
value: 'yes',
replaceText: '有事就说',
borderColor: '2EAB49',
textColor: '2EAB49',
}),
context.createAttachmentActionButton({
name: 'button_2',
text: '没事',
type: 'button',
value: 'no',
replaceText: '没事走开',
borderColor: '2EAB49',
textColor: '2EAB49',
}),
],
}),
],
});
return;
}
// 回复一个图片
if (text === '图片') {
await context.sendImageFromUrl(
'https://wwcdn.weixin.qq.com/node/wwnl/wwnl/style/images/officialImages$e8e6cbe6.png'
);
return;
}
// 回复一条图文
if (text === '图文') {
await context.sendNews({
articles: [
context.createArticle({
title: '企业微信',
description: '欢迎使用企业微信',
url: 'https://work.weixin.qq.com/',
picurl:
'https://wwcdn.weixin.qq.com/node/wwnl/wwnl/style/images/officialImages$e8e6cbe6.png',
}),
],
});
return;
}
// 默认回复当前群聊 chatId
await context.sendText({ content: message.chatId });
});
# 主动发送消息
// 向所有群聊主动发送消息
bot.sendText({ content: '这是一条主动发送的文字消息' });
// 向某个群聊主动发送消息
bot.sendText({
// 目标群聊的 chatId
chatId: 'xxx',
content: '这是一条主动发送的文字消息',
});
← 开始使用 定时任务 / Cron →