2016-12-19 2 views
0

У меня есть 4 Диалогов в моем проекте первого один являетсяMS Bot с множественной формой Dialog

RootDialog

с некоторым перечислением. Это мой диалог корень так Если пользователь выбирает первый вариант, то я хочу, чтобы отправить его в

CreateContact

Диалог, который я добавил ниже, и если selcts пользователь

GetContact

или

SendMail

тогда я пошлю его в соответствующий диалог, но я не могу назвать диалог формы соседнего по завершению или выбору первого диалога.

[Serializable] 
     public enum RootOptions 
     { 
      CreateContact = 1, GetContact = 2, SendMail 
     }; 

[Serializable] 
     public class RootForm 
     { 
      public RootOptions? Option; 
      public static IForm<RootForm> BuildForm() 
      { 
       return new FormBuilder<RootForm>() 
         .Message("Welcome to TEST BOT!") 
         .OnCompletion(async (context, rootoption) => 
         { 
          switch(rootoption.Option.Value.ToString()) "") 
          { 
           case "CreateContact": 
           //How to call Contact Dialog 
           break; 
           case "GetContact": 
           //Call Get Contact Dialog 
           break; 
           case "SendMail": 
           //Call Send Mail Dialog 
           break; 
          } 
         }) 
         .Build(); 
      } 
     } 

Создать контакт Dialog

[Serializable] 
     public class ContactForm 
     { 
      [Prompt("What is the name? {||}")] 
      public string Name; 
      [Prompt("What is the Mobile No? {||}")] 
      public string Mobile; 
      [Prompt("What is the Email? {||}")] 
      public string Email; 
      public static IForm<ContactForm> BuildForm() 
      { 
       return new FormBuilder<ContactForm>() 
         .Message("Let's create a contact") 
         .OnCompletion(async (context, profileForm) => 
         { 
         await context.PostAsync("Your contact has been created."); 
         }) 
         .Build(); 
      } 
     } 

Отправить Dialog

[Serializable] 
     public class MailForm 
     { 
      [Prompt("What is the Email Id? {||}")] 
      public string Email; 
      [Prompt("What is the Subject? {||}")] 
      public string subject; 
      [Prompt("What is the Message? {||}")] 
      public string Message; 
      public static IForm<MailForm> BuildForm() 
      { 
       return new FormBuilder<MailForm>() 
         .Message("Let's Send a Mail") 
         .OnCompletion(async (context, mailForm) => 
         { 
         await context.PostAsync("Mail Sent."); 
         }) 
         .Build(); 
      } 
     } 
+0

Я думаю, что кто бы ни дал отрицательный отзыв, также должен быть комментарий, для которого он делает это, с помощью которого я должен исправить свою проблему. Спасибо. –

+0

В итоге я нашел ответ на что-то подобное. Пожалуйста, очистите свой вопрос, чтобы он протекал правильно. Вы заявляете, что у вас (было) 4 диалога; но это неверно, это должны быть формы, а не диалоги - в частности, rootFORM, contactFORM и mailFORM ... – zxed

+0

@zxed спасибо за отзыв, в настоящее время я путешествую и не умею отлично редактировать с мобильных устройств, сделаю это как можно скорее :) –

ответ

0

Чтобы вызвать диалоговое окно, вам нужно использовать context.Call, как описано в this post. Однако я не совсем уверен, что это будет работать в событии формы OnCompletion.

Если это не сработает, моя рекомендация заключалась бы в том, чтобы инкапсулировать RootForm в диалог IDialog<object> и использовать это диалоговое окно в качестве отправной точки для контроллера Conversation.SendAsync.

+0

Спасибо, он работает. –