2017-04-21 11 views
2

ユーザーから追加情報を収集するためにLuisインテントから子ダイアログを作成しようとしています。しかし、私は、サーバーのダイアログクラスは'メソッドグループ'から 'ResumeAfter <object>'に変換できません

[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); 

    } 
} 

私はある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); 
} 

の第2引数に「ResumeAfter <オブジェクト>」エラーメッセージに「メソッドグループ」から変換できません受けています

MessageReceivedの2番目のパラメータの型はIAwaitableですが、2番目のパラメータがIAwaitableのメソッドが必要です(たとえば、nullを結果値として渡す場合)あなたの子ダイアログのタイプはIDialogです。

しかし、私はこれを理解できませんでした。

答えて

9

あなたのダイアログを実装IDialog<object>が、あなたの​​方法ReceiveServerDialogIDialog<string>を実装するか、私は気づい

private async Task ResumeAfterServerDialog(IDialogContext context, IAwaitable<object> serverName) 
+1

であるためにあなたのReceiveServerDialog方法を変更する(IAwaitable<string> serverNameパラメータで)

変更あなたのダイアログを文字列を期待しているだけあなたがこれを投稿したらすぐに正しい修正がありました。 – Teragon

+1

はこれを理解する日数を要しました – shabby

関連する問題