Bottender项目中的Messenger消息发送全指南

Bottender项目中的Messenger消息发送全指南

bottender ⚡️ A framework for building conversational user interfaces. bottender 项目地址: https://gitcode.com/gh_mirrors/bo/bottender

前言

在构建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平台对消息发送有以下限制:

  1. 每秒发送速率限制:建议不超过250请求/秒
  2. 24小时总量限制:200 × Messenger受众总数

优化建议

  • 对于营销活动等高流量场景,应设计消息队列系统
  • 实现消息分批发送机制
  • 监控错误代码613(速率限制错误)

最佳实践建议

  1. 媒体选择:优先使用附件ID方式发送媒体,提升加载速度
  2. 模板使用:根据场景选择合适的模板类型
  3. 交互设计:合理搭配快速回复和按钮,优化用户流程
  4. 性能优化:对于高流量应用,实现消息队列和分批发送
  5. 测试策略:开发环境和生产环境使用不同的Page,注意附件ID作用域问题

通过掌握这些消息发送技术,开发者可以构建出功能丰富、用户体验优秀的Messenger聊天机器人应用。

bottender ⚡️ A framework for building conversational user interfaces. bottender 项目地址: https://gitcode.com/gh_mirrors/bo/bottender

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓬玮剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值