Передача токена значений и электронной почты пользователя с сайта прямой линии в бот для аутентификации - PullRequest
0 голосов
/ 17 января 2020

Я передаю нижеуказанные значения своему боту с канала веб-сайта (прямая линия). Как мне получить эти значения в боте? Можете ли вы объяснить, пожалуйста?

 <script>
  window.WebChat.renderWebChat({
      directLine: window.WebChat.createDirectLine({ token: '@Model.Token' }),
        userID: '@Model.UserId'
  }, document.getElementById('webchat'));
</script>

Спасибо, Сельва

1 Ответ

0 голосов
/ 20 января 2020

Если вы хотите получить одно из этих значений (или любые другие, если на то пошло), то вам следует отправить данные через channelData. Вы можете сделать это несколькими различными способами через store:

1) веб-чата * DIRECT_LINE / POST_ACTIVITY - в этом примере, если опубликовано действие, которое также содержит текст «отправить пользователя» детали »(т. е. нажата кнопка карты, которая также отображает текст для пользователя), затем userId и userDetails будут добавлены и отправлены как channelData точки данных. В этом случае бот получает только сообщения (или postBack, et c.). (Пример ссылки здесь .)

<script src="https://unpkg.com/simple-update-in/dist/simple-update-in.production.min.js"></script>

const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
  if (action.type === 'DIRECT_LINE/POST_ACTIVITY') {
    if(action.payload.activity && action.payload.activity.text) {
      let text = action.payload.activity.text.toLowerCase();
      if(text === 'send user details') {
        const userId = 'xyz789';
        const userDetails = { 'name': 'Bob', 'age': 35, 'features': { 'eyes': 'brown', 'hair': 'blonde' }};
        action = window.simpleUpdateIn(
          action,
          ['payload', 'activity', 'channelData'],
          () => ({
            'userId': userId,
            'userDetails': userDetails
          })
        )
      } 
    }
  }

  return next( action );
} );

** 2) WEB_CHAT / SEND_EVENT ** - В этом примере, опять же, если опубликовано действие, которое также содержит текст «отправить пользователя» детали », затем создается и отправляется отдельное событие события, которое затем включает и userId, и userDetails как channelData точки данных. В этом случае бот получает два действия: сообщение (или postBack, et c.) И событие. (Пример ссылки здесь .)

const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
  if (action.type === 'DIRECT_LINE/POST_ACTIVITY') {
    if(action.payload.activity && action.payload.activity.text) {
      let text = action.payload.activity.text.toLowerCase();
      if(text === 'send user details') {
        const userId = 'xyz789';
        const userDetails = { 'name': 'Bob', 'age': 35, 'features': { 'eyes': 'brown', 'hair': 'blonde' }};
        dispatch( {
          type: 'WEB_CHAT/SEND_EVENT',
          payload: {
            name: 'LOGIN_SUCCESS',
            value: {
              userId,
              userDetails
            }
          }
        } )
      }
    }
  }

  return next( action );
} );

В обоих случаях, для простоты, активность публикуется только тогда, когда входящая активность содержит текст «Отправить данные пользователя». Также обратите внимание, что я демонстрирую два способа использования магазина: косвенный и прямой вызов dispatch().

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

...