2
我试图从路易斯意图收集来自用户的附加信息的子对话框。但是我收到无法从“方法组”转换为“ResumeAfter <对象>”的错误消息上的context.Call无法从'方法组'转换为'ResumeAfter <object>'
第二个参数[LuisIntent("Login")]
public async Task LoginIntent(IDialogContext context, LuisResult result)
{
var serverdialog = new ServerDialog();
await context.Call(serverdialog, ResumeAfterServerDialog); //error here
}
private async Task ResumeAfterServerDialog(IDialogContext context, IAwaitable<string> serverName)
{
this.serverAddress = await serverName;
await context.PostAsync($"you've entered {this.serverAddress}");
context.Wait(MessageReceived);
}
服务器对话框类是
[Serializable]
public class ServerDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
await context.PostAsync("Enter your server's name (example: 10.10.10.52)");
context.Wait(ReceiveServerDialog);
}
public async Task ReceiveServerDialog(IDialogContext context, IAwaitable<IMessageActivity> result)
{
IMessageActivity message = await result;
context.Done(message.Text);
}
}
我发现一个解释说:
MessageReceived的第二个参数的类型可能IAwaitable,但您需要一个第二个参数为IAwaitable的方法,例如,如果您传递null作为结果值并且您的子对话框的类型是IDialog。
但是我无法理解这一点。
我意识到,只是只要你发布这是正确的修复,谢谢 – Teragon
花了我几天的时间来弄清楚这一点 – shabby