gpt4 book ai didi

c# - 通过覆盖 MessageReceived 在 LuisDialog 中自动翻译消息

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:03 24 4
gpt4 key购买 nike

我正在尝试创建一个 LuisDialog用户发送的所有消息都将自动翻译成我的 LUIS 应用可以理解的语言。

为此,我重写了 LuisDialog.MessageReceived()方法。

我将消息自动翻译成我的语言,但我遇到的问题是如何更新 IAwaitable<IMessageActivity>.Text 的值以便对话框内基于意图的方法可以透明地访问它。

[Serializable]
class LuisDialogAutoTranslated<T> : LuisDialog<T>
{
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> msg)
{
var activity = await msg;

activity.Text = await new CognitiveTranslator().TranslateToCurrentLanguage(activity.Text);

//????
//how to replace the value of IMessageActivity.Text
//inside the IAwaitable msg?
//????

await base.MessageReceived(context, msg);
}
}

最佳答案

与其覆盖 MessageReceived,我建议您覆盖 GetLuisQueryTextAsync ,它基本上接收消息并返回将传递给 LUIS (see here) 的文本。

如果您仍然想覆盖 MessageReceived ,那么您将使用 Awaitable<T> 创建一个 Awaitable.FromItem<IMessageActivity>(activity) ,如下面的代码所示。

var activity = await msg;

activity.Text = await new CognitiveTranslator().TranslateToCurrentLanguage(activity.Text);

msg = Awaitable.FromItem<IMessageActivity>(activity);

await base.MessageReceived(context, msg);

关于c# - 通过覆盖 MessageReceived 在 LuisDialog 中自动翻译消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41606640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com