2017-06-17 21 views
0

我創建了一個Bot Framework項目,並使用LUIS意圖和實體來填充AdaptiveCard的字段,然後將其附加到活動併發布給用戶。我已經放在一個SubmitAction作爲卡的一部分,以及相關的代碼如下:如何檢索由AdaptiveCard在Microsoft Bot Framework中發佈的表單數據?

 [LuisIntent("Query GPN")] 
    public async Task QueryGPN(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result) 
    { 
     EntityRecommendation GPN; 

     AdaptiveCard gpnCard = new AdaptiveCard(); 

     gpnCard.Body.Add(new TextBlock() 
     { 
      Text = "GPN Lookup Form", 
      Size = TextSize.Large, 
      Weight = TextWeight.Bolder 
     }); 

     gpnCard.Body.Add(new TextBlock() 
     { 
      Text = "GPN", 
      Weight = TextWeight.Bolder 
     }); 

     TextInput gpnInput = new TextInput() 
     { 
      Id = "GPN", 
      IsMultiline = false 
     }; 

     gpnCard.Body.Add(gpnInput); 

     gpnCard.Actions.Add(new SubmitAction() 
     { 
      Title = "Submit" 
     }); 

     if (result.TryFindEntity("GPN", out GPN)) 
     { 
      await context.PostAsync($"You want to know about a GPN {GPN.Entity}? Prepopulating form."); 
      gpnInput.Value = GPN.Entity; 
     } 
     else 
     { 
      await context.PostAsync("It seems like you wanted to know about a GPN, but I couldn't find a GPN in your request."); 
     } 

     Attachment gpnCardAttachment = new Attachment() 
     { 
      ContentType = AdaptiveCard.ContentType, 
      Content = gpnCard 
     }; 

     IMessageActivity gpnFormMessage = context.MakeMessage(); 
     gpnFormMessage.Attachments = new List<Attachment>(); 
     gpnFormMessage.Attachments.Add(gpnCardAttachment); 

     await context.PostAsync(gpnFormMessage); 

     context.Done<IMessageActivity>(null); 
    } 

我想,當用戶點擊提交按鈕,這似乎找回這種形式的內容發送消息活動到我的MessagesController中的Post方法。但是,此消息活動的內容爲空。如何從此消息活動中檢索與提交操作相關的負載?在上面的例子中,我將如何檢索「GPN」鍵的值?我試圖尋找的附件,但它似乎並沒有在那裏還有:點擊Submit按鈕後

回答

0

嘗試檢查在MessageReceivedAsync消息的Value財產。

Here是一個使用Submit按鈕並讀取值的示例。

相關問題