gpt4 book ai didi

c# - QnAMaker Bot 与 LUIS Bot 合并

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

好的,我让 LUIS Bot 在 MessageController.cs

Post 方法中启动对话
await Conversation.SendAsync(activity, () => new LUISDialog());

当机器人检测到 None 意图时,它将调用 QnA 机器人并将消息转发给它

await context.Forward(new QnABot(), Whatever, result.Query, CancellationToken.None);

这是我的问题:当启动 QnA 机器人时,QnAMakerDialog.cs 类中的方法 MessageReceivedAsync 会在参数上引发异常“IAwaitable<.IMessageActivity> 参数”

[Microsoft.Bot.Builder.Internals.Fibers.InvalidTypeException] = {“无效类型:应为 Microsoft.Bot.Connector.IMessageActivity,有字符串”}”

尝试通过 --> var message = await 参数访问它时;

我不明白问题出在哪里,我在 qna bot 中输入一个简单的纯文本,当我在网站上尝试时,我的知识库没有问题返回响应。我不确定在调用 StartAsync 和调用 MessageReceivedAsync 之间发生了什么导致参数“argument”失败。

最佳答案

我认为问题是您正在发送一个 string (result.Query) 而 QnAMakerDialog.cs 期待一个 IMessageActivity.

尝试将您的 context.Forward 调用更新为:

var msg = context.MakeMessage();
msg.Text = result.Query;

await context.Forward(new QnABot(), Whatever, msg, CancellationToken.None);

或者,您可以更新 None 意图方法的签名以包含原始 IMessageActivity:

[LuistIntent("None"))]
public async Task None(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
var msg = await activity;

await context.Forward(new QnABot(), Whatever, msg, CancellationToken.None);
}

关于c# - QnAMaker Bot 与 LUIS Bot 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240962/

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