Bot Framework Direct Line:基于自定义字段存储与获取userData及conversationData
实现基于电话号码存储与检索Bot Framework用户数据的方案
我来帮你搞定这个需求——这在表单类机器人场景里非常典型,核心就是要把电话号码作为核心检索标识,打通用户数据、会话数据和手机号的关联。下面分步骤拆解实现:
1. 核心思路:建立手机号与Bot数据的映射
Bot Framework默认的userData和conversationData是和userId/conversationId绑定的,但我们需要用手机号作为检索键,所以必须额外维护一个手机号 ↔ 用户/会话ID的映射表,同时确保收集到手机号后,把对应的用户数据、会话数据和这个映射关联存储。
2. 收集表单时的存储实现
当机器人收集到用户的电话号码后,需要做两件事:
- 把
userData(姓名、邮箱、电话等)和conversationData(会话上下文)存储到你的数据库(比如SQL Server、Cosmos DB) - 单独存储一条映射记录,以电话号码为唯一键,关联对应的
userId和conversationId
代码示例(Node.js Bot Framework v4)
假设你用Cosmos DB作为存储,在收集到手机号后的处理逻辑:
async onMessage(context) { // 假设已经通过表单收集到用户信息,存在context.activity.value里 const userFormData = context.activity.value; const phoneNumber = userFormData.phone; // 1. 获取当前用户和会话ID const userId = context.activity.from.id; const conversationId = context.activity.conversation.id; // 2. 存储用户数据和会话数据到Bot自带状态管理 await this.userState.saveChanges(context); await this.conversationState.saveChanges(context); // 3. 存储手机号-用户/会话ID映射(自定义数据库操作) await this.customDatabase.savePhoneMapping({ phone: phoneNumber, userId: userId, conversationId: conversationId, userData: this.userState.get(context), conversationData: this.conversationState.get(context) }); }
关键注意点
- 手机号唯一性校验:收集阶段要做重复校验,避免同一个手机号对应多条用户记录
- 敏感数据加密:手机号、邮箱属于敏感信息,存储时必须加密(比如AES加密或数据库自带加密功能)
3. 通过电话号码检索数据的逻辑
当需要通过手机号查询时,直接查询映射表,拿到对应的用户数据和会话数据即可:
检索代码示例
async getUserDataByPhone(phoneNumber) { // 从映射表查询对应记录 const mappingRecord = await this.customDatabase.getPhoneMapping(phoneNumber); if (mappingRecord) { return { userData: mappingRecord.userData, conversationData: mappingRecord.conversationData }; } return null; }
4. Direct Line前端集成的额外优化
如果前端在初始化会话时就能获取用户手机号,可以提前把手机号传递给机器人,避免后续重复收集:
const directLine = window.WebChat.createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }); // 发送自定义事件传递手机号 directLine.postActivity({ type: 'event', name: 'preProvidePhone', channelData: { phone: '138xxxxxxxxx' }, from: { id: 'CUSTOM_USER_ID' } }).subscribe();
机器人需要监听这个自定义事件,提前完成手机号的映射存储,让流程更顺畅。
内容的提问来源于stack exchange,提问作者Sajal Sharma
相关产品推荐
相关产品推荐

