Bottender项目实战:即时通讯机器人消息发送全指南

Bottender项目实战:即时通讯机器人消息发送全指南

bottender ⚡️ A framework for building conversational user interfaces. bottender 项目地址: https://gitcode.com/gh_mirrors/bo/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 }
  ]
});

性能优化与注意事项

  1. 速率限制:即时通讯平台限制机器人每秒最多发送30条消息,大量发送时应注意间隔
  2. 文件大小限制:大多数媒体文件限制在50MB以内
  3. 缓存策略:频繁使用的媒体文件可考虑先上传到平台服务器获取file_id
  4. 错误处理:所有API调用都应添加错误处理逻辑

结语

通过Bottender框架,开发者可以轻松实现即时通讯机器人的各种消息交互功能。本文涵盖了从基础文本到复杂交互的各种场景,希望能为您的即时通讯机器人开发提供全面参考。实际开发中,建议结合具体业务需求,灵活运用这些功能组件,打造用户体验优秀的机器人应用。

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、付费专栏及课程。

余额充值