2016-05-17 11 views
5

Próbuję przetestować IDialog przepływu z fałszywą wiadomość w taki:Microsoft.Rest.HttpOperationException w Microsoft.Bot.Builder.dll („Odmowa dostępu”) podczas testowania PromptDialog.Confirm

 var toBot = new Message() 
     { 
      ConversationId = Guid.NewGuid().ToString(), 
      Text = "Test", 
     }; 

     Func<IDialog<T>> MakeRoot =() => testDialog; 
     toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 
     toBot.To = new ChannelAccount(Guid.NewGuid().ToString()); 

Kiedy trafia on do PromptDialog.Confirm, generuje wyjątek "Microsoft.Rest.HttpOperationException w Microsoft.Bot.Builder.dll (" Access Denied ").

Jeśli nie tworzyć

 toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 

rzuca System.NullReferenceException dla ID kanału.

PromptDialog.Confirm wygląda następująco:

PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
       Strings.InvalidInput); 

Jak mogę rozwiązać ten problem?

Odpowiedz

2

Kwestia ta została spowodowana przez:

await context.PostAsync(replyMessage); 
    PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
      Strings.InvalidInput); 

Posiadanie potwierdzić dialogowe natychmiast po wysłaniu wiadomości do użytkownika spowodował wyjątek i następnie niepowodzenie testu. Nie wyrzucił tego wyjątku w czasie wykonywania.

postanowiłem powyższą kwestię łącząc wiadomość zwrotną z potwierdzeniem ciąg następująco:

PromptDialog.Confirm(context, AfterErrorProcessingAsync, replyMessage + "\n\n" + Strings.ConfirmError, 
       Strings.InvalidInput); 

Pozostawiając to pytanie otwarte, jeśli ktoś ma lepszy obejścia.