Bottender项目中的Messenger消息发送技术详解

Bottender项目中的Messenger消息发送技术详解

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

引言

在当今数字化时代,Messenger已成为企业与客户之间最流行的沟通渠道之一。Yoctol/bottender作为一个优秀的聊天机器人框架,为开发者提供了丰富的Messenger消息发送功能。本文将深入解析如何在Bottender项目中高效地发送各种类型的Messenger消息。

基础消息类型

文本消息

文本消息是最基础也是最常用的消息类型,适合传递简单信息:

async function SendHi(context) {
  await context.sendText('您好!欢迎使用我们的服务');
}

文本消息的优势在于:

  • 简单易用,开发成本低
  • 支持动态内容插入
  • 在所有设备上显示一致

富媒体消息

富媒体消息能显著提升用户体验,主要包括图片、视频、音频和文件四种类型。

四种发送方式对比

| 方式 | 优点 | 缺点 | 适用场景 | |------|------|------|---------| | URL发送 | 实现简单 | 加载速度慢 | 原型开发阶段 | | 附件ID | 加载速度快 | 需要预上传 | 生产环境 | | 文件流 | 本地文件处理 | 需要文件系统访问 | 本地文件发送 | | 缓冲区 | 灵活处理二进制 | 需要内存管理 | 动态生成内容 |

推荐生产环境使用附件ID方式:

// 先上传获取attachmentId
await context.sendImage({ attachmentId: '123456789' });

模板消息

模板消息是Messenger平台提供的结构化消息格式,能创建丰富的交互体验。

通用模板(Generic Template)

通用模板适合展示商品列表、服务选项等:

await context.sendGenericTemplate([
  {
    title: "产品名称",
    imageUrl: '产品图片URL',
    subtitle: "产品描述",
    buttons: [
      {
        type: 'postback',
        title: '立即购买',
        payload: 'BUY_NOW',
      },
    ],
  },
]);

按钮模板(Button Template)

当不需要展示图片时,按钮模板是更简洁的选择:

await context.sendButtonTemplate('请选择您需要的服务:', [
  {
    type: 'postback',
    title: '客服咨询',
    payload: 'CUSTOMER_SERVICE',
  },
]);

收据模板(Receipt Template)

电商场景必备的订单确认模板:

await context.sendReceiptTemplate({
  recipientName: '客户姓名',
  orderNumber: '订单号',
  currency: 'CNY',
  paymentMethod: '支付宝',
  elements: [
    {
      title: '商品名称',
      quantity: 1,
      price: 100,
      currency: 'CNY',
    },
  ],
  summary: {
    subtotal: 100,
    totalCost: 100,
  },
});

快速回复(Quick Reply)

快速回复是提升对话流畅度的关键功能。

文本快速回复

await context.sendText('请选择您的偏好:', {
  quickReplies: [
    {
      contentType: 'text',
      title: '红色',
      payload: 'COLOR_RED',
    },
    {
      contentType: 'text',
      title: '蓝色',
      payload: 'COLOR_BLUE',
    },
  ],
});

用户信息快速回复

获取用户联系信息的便捷方式:

// 获取用户手机号
await context.sendText('请分享您的联系方式:', {
  quickReplies: [
    {
      contentType: 'user_phone_number',
    },
  ],
});

// 获取用户邮箱
await context.sendText('请分享您的邮箱:', {
  quickReplies: [
    {
      contentType: 'user_email',
    },
  ],
});

高级功能

角色功能(Persona)

当需要区分自动回复和人工客服时:

await context.sendText('这是自动回复消息', {
  personaId: 'BOT_PERSONA_ID',
});

await context.sendText('这是人工客服消息', {
  personaId: 'AGENT_PERSONA_ID',
});

速率限制

重要注意事项:

  • 默认速率限制:200 * Messenger受众数量/24小时
  • 突发流量建议:不超过250请求/秒
  • 应对策略:实现消息队列和流量控制

最佳实践建议

  1. 消息组合:结合文本、富媒体和模板消息创建丰富体验
  2. 性能优化:生产环境使用附件ID发送富媒体
  3. 用户引导:合理使用快速回复降低用户输入成本
  4. 品牌一致性:通过Persona功能保持品牌形象
  5. 流量规划:大型活动前评估并测试速率限制

通过Bottender框架的这些功能,开发者可以构建出专业级的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、付费专栏及课程。

余额充值