2016-05-17 19 views
5

Tôi đang cố gắng để kiểm tra luồng IDialog với một tin nhắn giả mạo như vậy:Microsoft.Rest.HttpOperationException trong Microsoft.Bot.Builder.dll ("Access Denied") trong khi thử nghiệm 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()); 

Khi nó chạm vào PromptDialog.Confirm, nó ném "Microsoft.Rest.HttpOperationException trong Microsoft.Bot.Builder.dll (" Truy cập bị từ chối ")" ngoại lệ.

Nếu tôi không tạo

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

nó ném System.NullReferenceException cho Danh Kênh.

PromptDialog.Confirm trông như thế này:

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

Làm thế nào tôi có thể làm việc xung quanh vấn đề này?

Trả lời

2

Vấn đề này là do sau:

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

Có xác nhận thoại ngay lập tức sau khi công bố một thông điệp tới người sử dụng gây ra ngoại lệ và sau đó thử nghiệm thất bại. Nó không ném ngoại lệ này trong thời gian chạy.

tôi giải quyết vấn đề trên bằng cách kết hợp các tin nhắn trả lời với chuỗi xác nhận như sau:

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

Rời câu hỏi này mở nếu ai đó có một cách giải quyết tốt hơn.

Các vấn đề liên quan