sr-js-sdk v1.2.0
可回溯前端JS SDK
说明:使用SDK前先在后台配置采集规则(如:入口、产品标识等)
注意修改相关引用处SDK文件实际网络访问地址
使用方式
Step1: 配置API请求地址
方式1:修改SDK中{%REQUEST_ROOT%}
具体后端API部署地址
方式2:引入SDK前设置window.__RECALL_REQUEST_ROOT
Step2: 配置app version(非必需)
引入SDK前设置window.__RECALL_APP_VERSION
Step3: 保险产品相关页面引入JS-SDK
<script src="./dist/recall.umd.min.js"></script>
跨域解决方案
基于整个录制过程中(跨域,非跨域)使用同一个回溯编码(recallId
)的原理实现连续录制。
方式1:
实现原理:基于window.postMessage
跨域方案,将录制开始页生成的回溯编码传递到跨域页面。跨域页面使用该回溯编码开启录制。
Step1: 将message-channel.html
放在业务域名(同录制开始网站域)下
Step2: 跨域页面引入SDK,代码如下:
<script>
// 设置Step1实际网络访问地址
window.__RECALL_CHANNEL_URL = './message-channel.html';
// 配置后台请求地址,重要
window.__RECALL_REQUEST_ROOT = 'https://dr-xd-test.ai-rtc.com/reviewpocapi';
// 产品标识指定
window.__RECALL_PRODUCT_CODE = 'productCode'
//资源路径替换
window.__RECALL_REPLACE_URL = {
oldCacheUrlEl: [],//本地缓存url 例子:['file:///D:/web/sr-js-sdk/dist/loginLanzhou.html','test/est1']
replaceCacheNewUlr: [],//本地缓存替换远程 例子:['https://bb.jinlianfintech.com/reviewpoc','test2/est3']
missProjectNameUrl: '',//少项目名 例子:https://bb.jinlianfintech.com/(?!reviewpoc)
addProjectNameUrl: '',//替换增加后的url例子:https://bb.jinlianfintech.com/reviewpoc
}
</script>
<script src="./dist/recall.umd.min.js"></script>
方式2:
实现原理:通过URL参数传递回溯编码到跨域页面,跨域页面使用该回溯编码开启录制。
Step1:保险业务页面通过recall.recallStore.getRecallId()
获取recallId
Step2:通过url参数传递recallId
到其他子业务系统如:OCR等。如:?recallId=d336965c43e41f4f6f0390cd244a12ad
记录追加方案
场景:用户下单后未立即支付,后来(中间可能用户离开应用)用户通过订单列表进入订单详情再次发起支付。后面进入订单详情发起支付属于记录追加。
步骤:
Step1: 用户下单后(未支付)上报业务数据,参见关联业务数据
Step2:在需要补录回溯信息页URL增加如下参数:?recallBizNo=<订单号|投保单号>
一主流程,多子流程并行记录方案
场景:多被保人情况下投保人完成了投保信息填写,针对不同的被保人分享对应链接让被保人确认签字。被保人确认签字就是多子流程并行记录情况。
步骤:
Step1: 投保人填写信息后分享链接前将业务数据与回溯信息关联,参见关联业务数据
Step2:根据不同被保人配置对应链接,增加如下参数:?recallBizNo=<订单号|投保单号>&recallSubBizNo=<被保人身份证号码|其他标识>
关联业务数据
回溯信息与业务数据关联
自动关联:通过管理后台配置,参见关联业务数据配置样例
手动关联:通过调用上报业务数据接口,参见API接口定义
结束录制
整个投保流程完成,需要结束录制
自动关联:通过管理后台配置,参见结束脚本配置样例
手动关联:通过调用上报结束接口,参见API接口定义
API接口定义
如果在某些场景自动化无法满足需求时,可通过window.recall
访问如下api进行手动控制:
recall.recallRecorder
方法 | 参数 | 描述 |
---|---|---|
recall.recallRecorder.start | 无 | 开始录制 |
recall.recallRecorder.stop | 无 | 结束录制 |
recall.recallRecorder.pause | 无 | 暂停录制 |
recall.recallRecorder.resume | 无 | 恢复录制 |
recall.recallService
方法 | 参数 | 描述 |
---|---|---|
recall.recallService.reportBizData | reportBizParam\<Object>,定义如下 | 上报业务数据 |
recall.recallService.reportEnd | reportEndParam\<Object>,定义如下 | 上报结束 |
reportBizParam定义
{
bizNo: '', // 业务标识(必传)
subBizNo: '', // 子流程业务标识(子流程时,必传)
prtNo: '', // 投保单号
contNo: '', // 保单号
prtName: '', // 投保人姓名
prtIdCar: '', // 投保人证件号码
orderId: '', // 订单号
groupInsurance: '', // 团险号
channelStr: '', // 渠道值
}
reportEndParam定义
{
prtNo: '', // 投保单号
contNo: '', // 保单号
prtName: '', // 投保人姓名
prtIdCar: '', // 投保人证件号码
orderId: '', // 订单号
groupInsurance: '', // 团险号
channelStr: '', // 渠道值
}
recall.recallStore
方法 | 参数 | 描述 |
---|---|---|
recall.recallStore.setDeviceId | String | 设置设备号 |
recall.recallStore.getDeviceId | 无 | 获取设备号 |
recall.recallStore.setRecallId | String | 设置回溯编码 |
recall.recallStore.getRecallId | 无 | 获取回溯编码 |
recall
方法 | 参数 | 描述 |
---|---|---|
recall.stopAndReportBizData | Object,同reportEndParam 定义 | 结束录制并关联业务数据 |
recall.isSupport | 无 | 是否支持回溯数据采集 |
关联业务数据配置样例(管理后台配置)
function reportBizData(url, response) {
if (/policies\/issuances/.test(url)) {
var resData = JSON.parse(response.response);
return {
bizNo: resData.orderNo,
prtNo: '', // 投保单号
contNo: '', // 保单号
prtName: '', // 投保人姓名
prtIdCar: '', // 投保人证件号码
orderId: '' // 订单号
};
}
return null;
}
结束脚本配置样例(管理后台配置)
function reportEnd(url, response) {
if (/\/api\/insurance/.test(url)) {
// 根据实际情况解析response,对应相关字段返回相关业务数据
// 可返回Promise对象
// xhr json,示例,根据实际情况修改
var data = JSON.parse(response.response);
return {
prtNo: data.prtNo, // 投保单号
contNo: data.contNo, // 保单号
prtName: data.prtName, // 投保人姓名
prtIdCar: data.prtIdNo, // 投保人证件号码
orderId: data.orderId // 订单号
};
// fetch json,示例,根据实际情况修改
// return response.json().then(function(data) {
// return {
// prtNo: data.prtNo, // 投保单号
// contNo: data.contNo, // 保单号
// prtName: data.prtName, // 投保人姓名
// prtIdCar: data.prtIdNo, // 投保人证件号码
// orderId: data.orderId // 订单号
// };
// });
}
return null;
}