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