2017-02-22 19 views
0

Я использую оболочку Microsoft для создания бот-мессенджера.Повторить сеанс корневого диалога

Я добавил меню и я хочу, чтобы хэндл меню таким образом:

if (activity.Text == "item1_postback" || activity.Text == "item2_postback") 
{ 
    await Conversation.SendAsync(activity,() => new MenuDialog()); 

} 
else 
{ 
    await Conversation.SendAsync(activity,() => new RootLuisDialog()); 
} 

item1_postback и item2_postback находятся кнопки из меню.

Внутри MenuDialog у меня есть функции. Когда все закончилось внутри MenuDialog, я хочу «восстановить» корневой диалог и воссоздать диалог root из RootLuisDialog.

Я пробовал с context.Done и context.Reset, но он не работает.

Любая идея, как сбросить корень диалога при завершении MenuDialog?

ответ

1

В вашем сообщении конечного оставить просто позвонив корень диалога

await Conversation.SendAsync(activity,() => new RootLuisDialog());

В вашем RootLuisDialog добавить [RegexPattern("^item1_postback")] детекторов действий для обработки почтовых спинов.

В этих действиях, начать диалог меню ребенка, вызвав

context.Call(new MenuDialog(), (context, result) => { /*Do something. at this point your are back to the parent dialog.*/});

После вашего MenuDialog закончил (это означает, что где-то вы должны позвонить done(some_result) вы будете обратно в вас родительский диалог, который является RootLuisDialog и продолжить обработку новых пользовательских команд.

 Смежные вопросы

  • Нет связанных вопросов^_^