Bottender项目中的Messenger消息发送全指南
前言
在构建Messenger聊天机器人时,消息发送是最核心的功能之一。本文将全面介绍如何使用Bottender框架在Messenger平台上发送各类消息,帮助开发者掌握从基础文本到复杂模板消息的各种发送技巧。
基础文本消息
文本消息是聊天机器人最基本的交互形式,适合传递简单信息或动态数据(如股市数据、气象信息等)。
async function SendHi(context) {
await context.sendText('Hi!');
}
技术要点:
- 文本消息支持Markdown格式
- 每条消息最大长度限制为2000字符
- 适合快速响应和简单交互场景
富媒体消息
富媒体消息包括图片、视频、音频和文件,能显著提升用户体验和互动性。
四种发送方式对比
1. URL方式(最简单但不推荐生产环境使用)
await context.sendImage('https://example.com/image.jpg');
适用场景:快速原型开发
2. 附件ID方式(推荐生产环境使用)
await context.sendImage({ attachmentId: '<ATTACHMENT_ID>' });
技术要点:
- 需要先通过Attachment Upload API获取附件ID
- 附件ID是页面作用域的,不同页面需要重新上传
- 加载速度最快,利用Facebook缓存机制
3. 流式传输
const fs = require('fs');
await context.sendImage(fs.createReadStream('image.jpg'));
适用场景:本地文件发送
4. Buffer方式
await context.sendImage(imageBuffer, { filename: 'image.jpg' });
适用场景:动态生成的媒体内容
模板消息
模板消息是Messenger平台提供的结构化消息格式,能创建丰富的交互体验。
通用模板(Generic Template)
await context.sendGenericTemplate([
{
title: "Welcome",
imageUrl: 'https://example.com/image.png',
buttons: [
{
type: 'postback',
title: 'Start Chatting',
payload: 'PAYLOAD',
},
],
},
]);
特点:
- 最多10个条目水平排列
- 每个条目包含标题、副标题、图片和最多3个按钮
- 适合产品展示、服务介绍等场景
按钮模板(Button Template)
await context.sendButtonTemplate('选择操作', [
{
type: 'web_url',
url: 'https://example.com',
title: '访问网站',
}
]);
特点:
- 简化版通用模板,不包含图片
- 适合提供简单选项的场景
收据模板(Receipt Template)
await context.sendReceiptTemplate({
recipientName: '用户',
orderNumber: '123456',
elements: [
{
title: '商品名称',
price: 100,
},
],
});
特点:
- 专为订单确认设计
- 包含商品明细、价格、地址等信息
- 提升电商场景用户体验
媒体模板(Media Template)
await context.sendMediaTemplate([
{
mediaType: 'image',
attachmentId: '123456',
},
]);
特点:
- 专注于媒体展示
- 简洁无标题和副标题
- 适合视觉化内容展示
快速回复(Quick Reply)
快速回复是提升对话流畅度的关键功能,可作为文本输入的替代方案。
文本快速回复
await context.sendText('请选择', {
quickReplies: [
{
contentType: 'text',
title: '选项1',
payload: 'OPTION_1',
},
],
});
特点:
- 最多13个选项
- 点击后选项消失
- 适合上下文相关的快速选择
用户信息快速回复
// 获取用户联系方式
await context.sendText('请分享您的联系方式', {
quickReplies: [
{
contentType: 'user_phone_number',
},
],
});
// 获取用户邮箱
await context.sendText('请分享您的邮箱', {
quickReplies: [
{
contentType: 'user_email',
},
],
});
特点:
- 自动填充用户资料中的信息
- 需要用户主动点击确认
- 适合用户信息获取场景
发送速率限制
Messenger平台对消息发送有以下限制:
- 每秒发送速率限制:建议不超过250请求/秒
- 24小时总量限制:200 × Messenger受众总数
优化建议:
- 对于营销活动等高流量场景,应设计消息队列系统
- 实现消息分批发送机制
- 监控错误代码613(速率限制错误)
最佳实践建议
- 媒体选择:优先使用附件ID方式发送媒体,提升加载速度
- 模板使用:根据场景选择合适的模板类型
- 交互设计:合理搭配快速回复和按钮,优化用户流程
- 性能优化:对于高流量应用,实现消息队列和分批发送
- 测试策略:开发环境和生产环境使用不同的Page,注意附件ID作用域问题
通过掌握这些消息发送技术,开发者可以构建出功能丰富、用户体验优秀的Messenger聊天机器人应用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考