
本文将深入探讨如何使用 Microsoft Bot Framework 构建能够主动发送消息的机器人,即使在没有用户事先交互的情况下。我们将重点介绍如何在群聊中实现此功能,例如在机器人启动时发送“Hello I'm up!”消息。本文将涵盖必要的步骤,包括机器人安装、会话引用的获取和存储,以及使用这些引用来发送主动消息。
实现主动消息发送
Microsoft Bot Framework 允许机器人主动发起对话,而无需用户首先发送消息。 这对于各种场景都非常有用,例如发送通知、提醒或状态更新。要在群聊中实现此功能,需要执行以下步骤:
机器人安装: 机器人必须首先安装到群聊中。这可以通过用户手动安装或使用 Microsoft Graph API 以编程方式完成。 这是必须执行的初始步骤,以便机器人可以访问群聊并获取必要的会话信息。
获取会话引用: 安装后,机器人需要捕获群聊的会话引用。会话引用包含机器人与特定对话(在本例中为群聊)进行通信所需的信息。 会话引用可以通过多种方式获得,例如,当用户在群聊中提及机器人时,或者在机器人首次启动时通过某种机制(例如,预先配置的群聊 ID)。
存储会话引用: 获得会话引用后,需要将其存储在持久性存储中,例如数据库或文件。 这允许机器人在重启后或在其他情况下检索会话引用并继续发送主动消息。
商务通(在线客服系统)下载一款无需安装的即时交流系统,只需申请一个帐号,将一段代码嵌入贵站网页中,就可以让客服人员发现所有到达您网站的访客,而且可以看到访客的来源、使用的搜索引擎等,您可以主动发起对话与访客沟通,进行产品推销,从而大大提高产品销售成功率。 还是一款协同管理软件,在保持与客户信息通畅的同时,也保持公司内部之间的信息交流,从而提高企业的工作效率和客户服务质量。 管理员帐号:biiz.cn 密码:biiz.cn
发送主动消息: 使用存储的会话引用,机器人可以随时向群聊发送主动消息。 这可以通过 Bot Framework SDK 提供的 ContinueConversationAsync 方法完成。
代码示例 (C#)
以下是一个简化的 C# 代码示例,演示了如何使用存储的会话引用发送主动消息:
// 假设已从持久性存储中检索到 conversationReference
var conversationReference = RetrieveConversationReferenceFromStorage();
// 创建 BotAdapter
var adapter = _adapter; // 假设 _adapter 是已经配置好的 BotAdapter 实例
await adapter.ContinueConversationAsync(conversationReference, async (turnContext, cancellationToken) =>
{
// 构建要发送的消息
var message = MessageFactory.Text("Hello I'm up!");
// 发送消息
await turnContext.SendActivityAsync(message, cancellationToken);
}, default(CancellationToken));说明:
- RetrieveConversationReferenceFromStorage() 函数负责从持久性存储中检索会话引用。
- _adapter 是 BotAdapter 的实例,它处理与 Bot Framework 的通信。
- ContinueConversationAsync 方法使用会话引用来恢复与群聊的对话。
- 在 ContinueConversationAsync 的回调函数中,可以构建并发送主动消息。
注意事项
- 权限: 确保机器人具有向群聊发送消息所需的权限。
- 错误处理: 在发送主动消息时,实施适当的错误处理机制。 例如,如果会话引用已过期或无效,则机器人应能够检测到此情况并采取适当的措施,例如重新获取会话引用。
- 速率限制: 注意 Bot Framework 的速率限制,避免发送过多消息而导致机器人被阻止。
- 用户体验: 谨慎使用主动消息,避免给用户造成困扰。 确保消息相关且有价值。
总结
通过遵循上述步骤,您可以构建一个能够主动向群聊发送消息的 Microsoft Bot Framework 机器人,即使在没有用户事先交互的情况下。 这可以用于各种目的,例如发送通知、提醒或状态更新。 记住要考虑权限、错误处理、速率限制和用户体验,以确保机器人正常运行并提供价值。 参考 16.proactive-messages 示例可以更好地理解和实现该功能。









