Я пытаюсь создать дочерний диалог с намерением Луиса получить дополнительную информацию от пользователя. Однако я получаю сообщение об ошибке «Невозможно преобразовать из «группы методов» в «ResumeAfter‹object›» для второго аргумента context.Call
[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.
однако я не мог понять этого.