Bottender项目实战:即时通讯机器人消息发送全指南
前言
在构建即时通讯机器人时,消息发送是最基础也是最重要的功能之一。本文将全面介绍如何使用Bottender框架实现即时通讯机器人的各种消息发送功能,从简单的文本消息到复杂的富媒体消息,再到消息的更新与删除操作。
基础文本消息发送
纯文本消息
发送纯文本消息是最基础的操作,使用sendMessage
方法即可实现:
await context.sendMessage('你好,世界!');
Markdown格式文本
即时通讯平台支持Markdown格式的文本渲染,可以让消息更加结构化:
await context.sendMessage('*加粗文本* _斜体文本_', {
parseMode: 'markdown'
});
支持的Markdown语法包括:
*加粗*
或_加粗_
_斜体_
或*斜体*
`行内代码`
HTML格式文本
对于更复杂的格式需求,可以使用HTML标记:
await context.sendMessage('<b>加粗</b> <i>斜体</i> <a href="http://example.com">链接</a>', {
parseMode: 'html'
});
HTML支持的主要标签包括:
<b>
,<strong>
加粗<i>
,<em>
斜体<a href="">
链接<code>
行内代码<pre>
代码块
富媒体消息发送
图片发送
发送图片只需提供图片URL:
await context.sendPhoto('https://example.com/image.jpg');
音频文件
发送音频文件,平台会显示为可播放的音频消息:
await context.sendAudio('https://example.com/audio.mp3');
文档文件
发送任意类型的文件(最大50MB):
await context.sendDocument('https://example.com/file.pdf');
视频文件
发送视频文件(MP4格式最佳):
await context.sendVideo('https://example.com/video.mp4');
动画/GIF
发送动画或无声视频:
await context.sendAnimation('https://example.com/animation.gif');
贴纸
发送平台贴纸:
await context.sendSticker('CAADAgADQAADyIsGAAE7MpzFPFQX5QI');
语音消息
发送OPUS编码的.ogg文件作为语音消息:
await context.sendVoice('https://example.com/voice.ogg');
视频笔记
发送圆形视频消息(最长1分钟):
await context.sendVideoNote('https://example.com/videonote.mp4');
媒体组
发送多张图片或视频作为相册:
await context.sendMediaGroup([
{ type: 'photo', media: 'https://http.cat/100' },
{ type: 'photo', media: 'https://http.cat/101' }
]);
交互式消息组件
内联键盘
内联键盘出现在消息旁边,适合提供即时操作:
const inlineKeyboard = {
inlineKeyboard: [
[
{ text: '按钮1', callbackData: 'action1' },
{ text: '按钮2', url: 'https://example.com' }
]
]
};
await context.sendMessage('请选择:', { replyMarkup: inlineKeyboard });
回复键盘
回复键盘出现在聊天输入框上方:
const replyKeyboard = {
keyboard: [
['选项1', '选项2'],
['选项3', '选项4']
],
oneTimeKeyboard: true // 使用后自动隐藏
};
await context.sendMessage('请选择:', { replyMarkup: replyKeyboard });
消息管理
编辑消息
可以编辑已发送消息的内容、标题或媒体:
// 发送初始消息
const response = await context.sendMessage('初始内容');
// 编辑消息文本
await context.editMessageText(response.messageId, '更新后的内容');
删除消息
机器人可以删除自己发送的消息:
const response = await context.sendMessage('这条消息将被删除');
await context.deleteMessage(response.messageId);
高级功能
发送位置
分享地理位置:
await context.sendLocation({
latitude: 25.105497,
longitude: 121.597366
});
发送投票
创建投票(不能在私聊中使用):
await context.sendPoll('你最喜欢的食物是?', ['🍔汉堡', '🍕披萨', '🌮塔可']);
发送发票
需要先配置支付提供商:
await context.sendInvoice({
title: '产品名称',
description: '产品描述',
payload: '自定义数据',
providerToken: '支付令牌',
currency: 'USD',
prices: [
{ label: '产品', amount: 1000 },
{ label: '税费', amount: 100 }
]
});
性能优化与注意事项
- 速率限制:即时通讯平台限制机器人每秒最多发送30条消息,大量发送时应注意间隔
- 文件大小限制:大多数媒体文件限制在50MB以内
- 缓存策略:频繁使用的媒体文件可考虑先上传到平台服务器获取file_id
- 错误处理:所有API调用都应添加错误处理逻辑
结语
通过Bottender框架,开发者可以轻松实现即时通讯机器人的各种消息交互功能。本文涵盖了从基础文本到复杂交互的各种场景,希望能为您的即时通讯机器人开发提供全面参考。实际开发中,建议结合具体业务需求,灵活运用这些功能组件,打造用户体验优秀的机器人应用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考