将值令牌和用户电子邮件从直线网站传递到机器人以对其进行身份验证



我正在将以下值从网站通道(直线(传递给我的机器人。如何在机器人中接收这些值?你能解释一下吗?

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

谢谢 塞尔瓦

如果要获取这些值中的任何一个(或任何其他值(,则应通过channelData发送数据。您可以通过网络聊天的store以几种不同的方式执行此操作:

1( DIRECT_LINE/POST_ACTIVITY- 在此示例中,如果发布的活动还包括文本"发送用户详细信息"(即按下卡片按钮,该按钮也向用户显示文本(,则userIduserDetails将作为channelData数据点附加并发送。在这种情况下,机器人仅接收消息(或回发等(活动。(此处为示例参考。

<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** - 在此示例中,如果发布的活动也包含文本"发送用户详细信息",则会同时生成并发送一个单独的事件活动,然后包括userIduserDetails作为channelData数据点。在这种情况下,机器人接收两个活动:消息(或 postBack 等(活动和事件活动。(此处为示例参考。

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()

希望有帮助!

最新更新