botframework - 将价值令牌和用户电子邮件从直线网站传递给机器人以对其进行身份验证
问题描述
我从网站频道(直线)将以下值传递给我的机器人。我如何在机器人中接收这些值?你能解释一下吗?
<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 - 在本例中,如果发布的活动还包括文本“发送用户详细信息”(即按下的卡片按钮也向用户显示文本),那么userId
和userDetails
将被附加并作为channelData
数据发送点。在这种情况下,机器人只接收消息(或 postBack 等)活动。(此处的示例参考。)
<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
数据点. 在这种情况下,bot 接收到两个活动:一个消息(或 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 );
} );
在这两种情况下,为简单起见,活动仅在传入活动包含文本“发送用户数据”时发布。另外,请注意,我演示了两种使用 store 的方法:间接调用和直接调用dispatch()
.
希望有帮助!
推荐阅读
- python - 微调 Inception V3 输出张量形状
- .net-core - 单片到微服务架构
- python - 如何将特定概率分数的返回值表示为浮点数但限制为小数点后两位?
- java - 如何在 Firebase 中退出我的 Google 帐户,这样当我再次登录时,我可以选择我想登录的帐户?
- jquery - 烧瓶中使用的 javascript 和 jquery 文件在哪里?
- android - Android 11(R) 中的权限被拒绝问题
- javascript - web3.eth.accounts[0] 返回 undefined 并且 app.vote(1,{ from:web3.eth.accounts[0] }) 给出错误
- python - Python - Tabula - 字体中使用的 OpenType 布局表未在 PDFBox 中实现,将被忽略
- laravel - laravel中会话超时时如何触发事件处理程序?
- python - 用于获取没有特定标签的实例名称的 Lambda 脚本