私はボットフレームワークの例を試していて、ユーザーに敬意を表したい簡単なダイアログを作っています。私が抱えている問題は、ユーザー名の入力を求められた後、再開メソッドが実行されないことです。常にConverstationStartedAsyncメソッドに戻ります。どんな考え? ボットフレームワークは常にダイアログのsamesメソッドを起動します
この
はダイアログです:public class HelloDialog : IDialog<string>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(ConversationStartedAsync);
}
public async Task ConversationStartedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
PromptDialog.Text(
context: context,
resume: AfterNameInput,
prompt: "Hi! what's your name?",
retry: "Sorry, I didn't get that.");
}
public async Task AfterNameInput(IDialogContext context, IAwaitable<string> result)
{
var name = await result;
PromptDialog.Text(context, AfterAskNeed, "Hi {name}. How can I help you?", "Sorry, I didn't get that.", 3);
}
、これはMessagesControllerでのアクションです:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity != null)
{
// one of these will have an interface and process it
switch (activity.GetActivityType())
{
case ActivityTypes.Message:
try
{
await Conversation.SendAsync(activity,() => new HelloDialog());
}
catch(Exception ex)
{
}
break;
case ActivityTypes.ConversationUpdate:
case ActivityTypes.ContactRelationUpdate:
case ActivityTypes.Typing:
case ActivityTypes.DeleteUserData:
default:
break;
}
}
return new HttpResponseMessage(System.Net.HttpStatusCode.Accepted);
}
以下のコードは '' HelloDialog'としてStartConversationDialog'同じですか?見ますか – stuartd
はい、そうです。申し訳ありませんが、コードを修正します。 – Maxolidean