Можете ли вы отобразить сообщение пользователя до его появления в веб-чате? - PullRequest
0 голосов
/ 26 июня 2019

Для веб-чата MS Botframework, есть ли способ перехватить пользовательское сообщение перед его отображением в веб-чате и изменить его?

1 Ответ

1 голос
/ 28 июня 2019

Это легко сделать, используя метод createStore().

В скрипте веб-чата, расположенном на вашей странице, создайте магазин, используя вышеуказанный метод. В нем сопоставьте action.type с 'WEB_CHAT / SEND_MESSAGE'. Это будет захватывать каждое сообщение, переданное через компонент веб-чата, до его отображения.

Помните, что этот измененный текст (или любое другое значение, которое вы изменяете) - это то, что отправляется боту. action является корневым объектом. action.payload, по сути, представляет деятельность. Здесь вы найдете текстовое значение и т. Д.

В операторе if выполните все необходимые изменения, а затем верните объект action.

Наконец, включите объект store в компонент renderWebChat. Это должно настроить вас.

В приведенном ниже примере я добавляю текст в текстовое поле, изменяя его перед его отображением и отображением.

<script>
  ( async function () {
    const res = await fetch( 'http://somesite/directline/token', { method: 'POST' } );
    const { token } = await res.json();

    // We are using a customized store to add hooks to connect event
    const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => action => {
      if ( action.type === 'WEB_CHAT/SEND_MESSAGE' ) {
        action.payload.text = action.payload.text + ' (Hello from behind the curtain)'
      }

      return next( action );
    } );

    window.WebChat.renderWebChat( {
      directLine: window.WebChat.createDirectLine( { token } ),
      userID: 'user123',
      username: 'johndoe',
      botAvatarInitials: 'BB',
      userAvatarInitials: 'JD',
      store
    }, document.getElementById( 'webchat' ) );
    document.querySelector( '#webchat > *' ).focus();

  } )().catch( err => console.error( err ) );
</script>

enter image description here

enter image description here

Надежда на помощь!

...