【问题标题】:Disable user typing text box c#禁用用户输入文本框c#
【发布时间】:2020-05-21 03:21:27
【问题描述】:

是否可以在任何通道中禁用 V4 bot 框架中的用户输入文本区域?我将此作为客户要求的一部分,有人可以帮助我吗

【问题讨论】:

  • 很遗憾,目前没有这样的功能。
  • 这是不正确的。请参阅提供的解决方案。
  • 接受/投票支持更大的 Stack Overflow 社区和任何有类似问题的人。如果您觉得我的回答足够,请“接受”并点赞。如果没有,请告诉我我还能提供哪些帮助!
  • @StevenKanberg OP 指定了Channel 你能举一个Channel 的例子吗?我知道它在网络聊天中是可能的,因为JavaScript。所以希望你会考虑你的话This is incorrect

标签: botframework bots chatbot


【解决方案1】:

您所指的邮箱称为发送邮箱。如果您使用的是BotFramework-Web Chat,您可以通过styleOptions 传递值来禁用它,如下所示:

<script>
  (async function () {

    const styleOptions = {
      hideSendBox = true
    }

    [...]

    window.ReactDOM.render(
      <ReactWebChat
        directLine={directLine},
        styleOptions={styleOptions}
      />,
      document.getElementById( 'webchat' )
    );
  })
</script>

如果您使用的是 iFrame 嵌入式版本的网络聊天,它是不可配置的。

希望有帮助!


编辑

如果您希望发送框根据从机器人收到的活动类型做出响应,那么您将需要结合使用 activityMiddleware() 函数和事件发射器/侦听器。在以下示例中,当suggestedActions 是活动属性时,我隐藏/显示发送框。

请注意,数据值应为“none”和“flex”。特别是后面的值不是suggestedActions时,为了保持当前代码。

<script>
  (async function () {

    [...]

    const activityMiddleware = () => next => card => {
      const { activity: { suggestedActions } } = card;
      const toggleSendBoxEvent = new Event('ToggleSendBoxEvent')
      if (suggestedActions) {
        toggleSendBoxEvent.data = "none";
        window.dispatchEvent(toggleSendBoxEvent);
      } else {
        toggleSendBoxEvent.data = "flex";
        window.dispatchEvent(toggleSendBoxEvent);
      }
  
      return next(card);
    )

    [...]

    window.ReactDOM.render(
      <ReactWebChat
        directLine={ window.WebChat.createDirectLine({ token }) }
        activityMiddleware={ activityMiddleware }
      />,
      document.getElementById( 'webchat' )
    );

    window.addEventListener('ToggleSendBoxEvent', ( { data } ) => {
      const sendBoxes = document.getElementsByClassName("main");
      let send_Box;
      for (let sendBox of sendBoxes) {
        send_Box = sendBox;
      }
      send_Box.setAttribute('style', `display:${ data }`)
    })

  });
</script>

希望有帮助!

【讨论】:

  • 但是我们如何在特定条件下隐藏发送框呢?例如,当我的机器人响应有按钮/选项可供选择时,我希望禁用发送框,并且应该启用发送框以回答机器人的正常问题。如果您也可以帮助我,那将非常有帮助。提前致谢
  • 更新了帖子以反映如何有条件地显示/隐藏发送框。如果有用,请点赞。
  • @StevenKanberg 你能帮帮我吗,我的代码出了什么问题,它对我不起作用,我使用了你的解决方案,在这里找到我的完整代码:stackoverflow.com/questions/60412674/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 2015-09-03
  • 2014-10-16
  • 2019-08-30
相关资源
最近更新 更多