适用于:SDK v4
机器人与用户进行通信以及接收用户通信的主要方式,是通过 message 活动。 某些消息可能会只包含纯文本,而其他消息可能包含更丰富的内容,如卡或附件。 机器人的轮次处理程序从用户那里接收消息,然后你可以向用户发送响应。 轮次上下文对象提供用于将消息发送回用户的方法。 本文介绍了如何发送纯文本消息。
大多数文本字段支持 Markdown,但支持可能因通道而异。
有关正在运行的机器人如何发送和接收消息,请遵循目录顶部的快速入门,或查看机器人工作原理一文,该文章所提供的示例链接,可帮助你自行运行。
重要
Bot Framework SDK 和 Bot Framework Emulator 已在 GitHub 上存档。 项目不再更新或维护。 自 2025 年 12 月 31 日起,Bot Framework SDK 的支持票证将不再提供服务。
若要使用所选的 AI 服务、业务流程和知识生成代理,请考虑使用 Microsoft 365 代理 SDK。 代理 SDK 对 C#、JavaScript 或 Python 具有语言支持。 可以在 aka.ms/agents 了解有关代理 SDK 的详细信息。 如果现有的机器人是使用 Bot Framework SDK 生成的,则可以将机器人更新到代理 SDK。 查看 Bot Framework SDK 到代理 SDK 迁移指南的核心更改和更新。
如果要构建设计为在 Microsoft Teams 中工作的协作代理,请考虑使用 Teams SDK。 它为在 Teams 环境中运行的代理提供 Teams 特定的 API、自适应卡支持和内置 AI 协同调度功能。 可以在 Teams SDK(Teams AI 库)中了解详细信息。
如果要查找基于 SaaS 的代理平台,请考虑 Microsoft Copilot Studio。
发送短信
若要发送短信,请指定你想要作为活动发送的字符串:
在机器人的活动处理程序中,使用轮次上下文对象的 SendActivityAsync 方法发送单个消息响应。 还可以使用该对象的 SendActivitiesAsync 方法一次性发送多个响应。
await turnContext.SendActivityAsync($"Welcome!");
接收短信
若要处理文本消息,请使用 activity 对象的 text 属性。
在机器人的活动处理程序中,使用以下代码来接收消息。
var responseMessage = turnContext.Activity.Text;
发送键入指示符
用户希望发出的消息得到及时响应。 如果机器人执行一些长时间运行的任务(如调用服务器或执行查询),而不向用户指明机器人已听到其消息,用户可能会失去耐性,并发送其他消息或就此假设机器人出现故障。
Web 聊天 和 Direct Line 通道机器人支持发送“正在输入”指示,向用户表明消息已被接收且正在处理中。 但是,机器人需要让轮次在 15 秒内结束,否则 Connector 服务将超时。对于较长的进程,请阅读有关发送主动消息的详细信息。
以下示例演示了如何发送键入指示。
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
if (string.Equals(turnContext.Activity.Text, "wait", System.StringComparison.InvariantCultureIgnoreCase))
{
await turnContext.SendActivitiesAsync(
new Activity[] {
new Activity { Type = ActivityTypes.Typing },
new Activity { Type = "delay", Value= 3000 },
MessageFactory.Text("Finished typing", "Finished typing"),
},
cancellationToken);
}
else
{
var replyText = $"Echo: {turnContext.Activity.Text}. Say 'wait' to watch me type.";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
}