用户在漫游器聊天窗口中选择按钮后显示消息

时间:2019-02-28 07:07:30

标签: c# .net botframework

我在bot中有一个对话流程,以便在收到用户消息后,我们显示来自QnAMaker的相关答案,然后要求用户选择类别。 在机器人聊天窗口中,用户选择一个按钮后,我应该能够显示“您已选择XYZ”,然后继续进行操作。由于我在卡片操作中使用“ imback”,因此现有流程会显示选定的选项。

代码:

private List<CardAction> CreateButtons(out List<string> ids)
{
    var ds = new List<string> { "operating group", "geo", "technology", "themes" };

    ids = new List<string>();

    List<CardAction> cardButtons = new List<CardAction>();
    foreach (var keyword in ds)
    {
        ids.Add(keyword);
        CardAction CardButton = new CardAction()
        {                    
            Type = "imBack",
            Title = keyword,
            Value = keyword
        };
        cardButtons.Add(CardButton);
    }
    return cardButtons;
}

调用:

var replyMessage = context.MakeMessage();               

List<string> ids = new List<string>();
List<CardAction> cardButtons = CreateCategoryButtons(out ids);

var GeoCard = new HeroCard(text: "Are you interested in searching through the file? Please select the Category you would like to refine Credentials for:")
{
    Buttons = cardButtons
};

replyMessage.Attachments.Add(GeoCard.ToAttachment());
replyMessage.AttachmentLayout = AttachmentLayoutTypes.List;
context.PrivateConversationData.SetValue<List<string>>("ids", ids);
await context.PostAsync(replyMessage);
context.Wait(CategoryValidate);
//  context.Wait(optionCategoryValidate);
context.Done(true);

1 个答案:

答案 0 :(得分:0)

您可以在发送卡片后等待用户选择项目,而无需在卡片操作的value属性中添加标记,以便在用户做出选择后通知机器人并在{ {1}}方法及其选择。我建议将卡片操作的值设置为“ selected:onTurnAsync”之类的值,并将该值作为postBack发送,以便该标志对用户隐藏。然后,当调用option方法并且活动是一条消息时,您可以检查消息中的标志,以将活动发送给用户并由他们选择。请参见下面的代码段。

屏幕截图

enter image description here

批号-C#

onTurnAsync

请注意,并非每个频道都支持PostBack卡操作。

希望这会有所帮助!