Можете ли вы отобразить сообщение пользователя до того, как оно появится в веб-чате?

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


person Shady Shehata    schedule 26.06.2019    source источник


Ответы (1)


Это легко сделать с помощью метода 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>

введите здесь описание изображения

введите здесь описание изображения

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

person Steven Kanberg    schedule 28.06.2019