Отключить ввод текста пользователем c# - PullRequest
0 голосов
/ 05 февраля 2020

Возможно ли отключить ввод текста пользователем в текстовой среде бота V4 на каком-либо канале? У меня это как часть требований клиента Может кто-нибудь помочь мне

enter image description here

1 Ответ

2 голосов
/ 05 февраля 2020

Ящик, на который вы ссылаетесь, называется ящиком отправки. Если вы используете 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>

enter image description here

Надеюсь на помощь!

...