在 Bot Framework 中,是否有一个公共位置可以让我在 ChannelData 中将 speak 属性 设置为 true?

In the Bot Framework, Is there a common location where I can set the speak property to true in ChannelData?

我正在使用 Bot Framework 构建一个支持语音的 Bot,它可以处理各种事件,并根据事件触发对话框。 Bot 使用 WebChat 作为界面进行连接。由于这主要是一个主动方案,因此没有来自用户的事先输入。因此,即使对话被触发,也没有输出语音,因为仅当先前的交互是通过语音进行时语音才会被激活。要启用输出语音,我现在必须使用 WebChat 理解的 activity.ChannelData = new {speak = true}; 明确设置每个传出 activity 和 'speak' 属性 的 ChannelData 为真,并说出与 Activity.

关联的消息

是否有更有效的方式来做到这一点,通过将此 属性 设置在一个公共位置,以便默认情况下所有外出活动都会被说出来?

对于 运行 任何代码,每当轮次上下文发送 activity 时,您可以使用 TurnContext.OnSendActivities:

turnContext.OnSendActivities(async (tc, activities, next) =>
{
    activities.ForEach(activity => activity.ChannelData = new { speak = true });

    return await next().ConfigureAwait(false);
});

这通常是通过中间件完成的,但您可以选择在主要机器人逻辑的开头进行。