在Bot框架中,是否可以在ChannelData中将语音属性设置为true的公共位置?

问题描述 投票:0回答:1

我正在使用Bot Framework来构建启用语音功能的Bot,该Bot可以处理各种事件,并根据事件触发对话框。 Bot使用WebChat作为接口进行连接。由于这主要是一种前摄性场景,因此用户没有事先输入。结果,即使触发了对话框,也没有输出语音,因为仅当先前的交互是通过语音时才激活语音。为了启用输出语音,我现在必须使用WebChat理解的activity.ChannelData = new {speak = true};,将每个带有'speak'属性的传出活动的ChannelData显式设置为true,并发出与该活动相关的消息。

通过在公共位置设置此属性,是否有更有效的方法,这样默认情况下所有外向活动都会被说出来?

c# botframework direct-line-botframework
1个回答
1
投票

要在转弯上下文发送活动时完全运行任何代码,可以使用TurnContext.OnSendActivities

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

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

这通常是通过中间件完成的,但是您可以选择在您的主要bot逻辑开始时进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.