0
私はIAwaitableにいくつかの問題があるようです。次のダイアログが表示されますBotフレームワーク:値を待ってからメソッドが終了する
[Serializable]
public class SearchDialog : IDialog<object>
{
private SpotifyClient _client;
public SearchDialog()
{
_client = new SpotifyClient();
}
public async Task StartAsync(IDialogContext context)
{
await context.PostAsync("Please enter the name of the artist");
context.Wait<string>(MessageReceived);
}
public async Task MessageReceived(IDialogContext context, IAwaitable<string> activity)
{
var message = await activity;
var results = await _client.SearchForArtistAsync(message);
if(results != null && results.Artists.Results.Any())
{
var artists = results.Artists.Results.Select(x => x.Name); // List<string>
PromptDialog.Choice(context,
ChoiceSelectAsync,
artists,
string.Empty,
"Didn't get that",
3,
PromptStyle.PerLine);
}
}
public async Task ChoiceSelectAsync(IDialogContext context, IAwaitable<string> choice)
{
var chosenArtist = await choice;
await context.PostAsync($"You have chosen {chosenArtist}");
context.Wait<string>(ChoiceSelectAsync);
}
}
問題は、プロンプトダイアログが表示されないことです。 MessageReceivedメソッドは、アクティビティを待つように見えますが、メソッドを終了します。なぜ私はawaitキーワードを使用している場合、結果を待っていないのですか?どんな助けでも大歓迎です。
context.waitこの場合MessageReceived – Satheesh
号に文字列を転記されるようにそれがIAwaitableすることができユーザーメッセージがそのメッセージにラップされるため、IMessageActivityである必要があります。 –