Если вы хотите получить одно из этих значений (или любые другие, если на то пошло), то вам следует отправить данные через 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()
.
Надежда на помощь!