好的,我有LUIS来启动MessageController.cs中的Post方法中的对话
await Conversation.SendAsync(activity, () => new LUISDialog());当机器人检测到无意图时,它将调用QnA机器人并将消息转发给它。
await context.Forward(new QnABot(), Whatever, result.Query, CancellationToken.None);下面是我的问题:启动MessageReceivedAsync bot时,QnAMakerDialog.cs类中的方法QnA将对参数"IAwaitable<.IMessageActivity>参数“”抛出一个异常
Microsoft.Bot.Builder.Internals.Fibers.InvalidTypeException ={“无效类型:预期的Microsoft.Bot.Connector.IMessageActivity,有字符串”}“
当试图通过-> var message = await参数访问它时;
我不明白问题是什么,我在qna机器人上输入一个简单的纯文本,当我在网站上尝试时,我的知识库没有问题返回一个回复。我不知道在调用StartAsync和调用MessageReceivedAsync之间发生了什么,这会导致参数‘参数’失败。
发布于 2017-05-29 12:50:56
我认为问题在于您正在发送一个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);或者,您可以更新“无意图”方法的签名,以包括原始的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);
}https://stackoverflow.com/questions/44240962
复制相似问题