【问题标题】:Botframework second ChoiceSet value upon first ChoiceSet selectionBotframework 在第一个 ChoiceSet 选择时的第二个 ChoiceSet 值
【发布时间】:2018-09-04 15:20:57
【问题描述】:

有一个关于 Botframework Choiceset/Dropdown 的问题。

我需要在选择 First Choiceset 值时更改第二个 Choiceset 值。是否可以在botframework中做到这一点?类似于第一个 Choiceset 值的 eventchange。

我知道如何创建 ChoiceSet,但不知道如何检测第一个 Choiceset 选择的事件。

谢谢。

【问题讨论】:

  • I need the second Choiceset value to change upon the selection of First Choiceset value. 你想实现级联选择集吗?默认情况下,botframework 和 channels 似乎不提供此功能,如果您通过 webchat 将您的 bot 嵌入网站,您可以尝试在 JavaScript 客户端上实现。
  • @FeiHan 我想要实现的是基于选择的第一个下拉值,我需要更改第二个下拉值。和你说的1一样吗?级联选择集?
  • What i want to achieve is that based on the first dropdown value, i need to change the second dropdown value. 我提到了同样的事情,根据第一个 Choiceset 值动态更新第二个 Choiceset 的选择,据我所知,bot 和 channels 不提供此功能。
  • 好吧。谢谢
  • 您在使用网络聊天频道吗?如果是,您可以尝试通过网页中的 JavaScript 实现要求。

标签: c# botframework


【解决方案1】:

我需要在选择 First Choiceset 值时更改第二个 Choiceset 值。是否可以在botframework中做到这一点?类似于第一个 Choiceset 值的 eventchange。

第一种方法:您可以尝试在自适应卡片中显示第一个Input.ChoiceSet,在用户选择一个选项并将选择发送回您的机器人后,您可以动态填充第二个Input.ChoiceSetChoices属性并将其显示在另一张自适应卡片中。

我正在使用网络聊天频道。

第二种方法:您在网站中嵌入网络聊天,正如我在评论中提到的,您可以尝试实现 JavaScript 客户端的要求。

<script>
    var botConnection = new BotChat.DirectLine({ secret: '{directline_secret_here}' });

    var userinfo = { id: '{user_id_here}'};

    BotChat.App({
        botConnection: botConnection,
        user: userinfo,
        bot: { id: '{bot_id_here}' },
        resize: 'detect'
    }, document.getElementById("bot"));


    botConnection.activity$
        .filter(activity => activity.type === "message")
        .subscribe(activity => BindOnChangeEventToSelect(activity));

    function BindOnChangeEventToSelect(activity) {

        //Attach a handler to 'change' event of <select> element
        $("select.ac-multichoiceInput:nth-of-type(2n+1)").on("change", function () {
            $(this).siblings("select").val($(this).val());
        }); 
    }
</script>

测试结果:

【讨论】:

  • Tqvm。会尝试申请