1.2.0 • Published 2 years ago

sr-js-sdk v1.2.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

可回溯前端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.reportBizDatareportBizParam\<Object>,定义如下上报业务数据
recall.recallService.reportEndreportEndParam\<Object>,定义如下上报结束

reportBizParam定义

{
  bizNo: '', // 业务标识(必传)
  subBizNo: '', // 子流程业务标识(子流程时,必传)
  prtNo: '', // 投保单号
  contNo: '', // 保单号
  prtName: '', // 投保人姓名
  prtIdCar: '', // 投保人证件号码
  orderId: '', // 订单号
  groupInsurance: '', // 团险号
  channelStr: '', // 渠道值
}

reportEndParam定义

{
  prtNo: '', // 投保单号
  contNo: '', // 保单号
  prtName: '', // 投保人姓名
  prtIdCar: '', // 投保人证件号码
  orderId: '', // 订单号
  groupInsurance: '', // 团险号
  channelStr: '', // 渠道值
}

recall.recallStore

方法参数描述
recall.recallStore.setDeviceIdString设置设备号
recall.recallStore.getDeviceId获取设备号
recall.recallStore.setRecallIdString设置回溯编码
recall.recallStore.getRecallId获取回溯编码

recall

方法参数描述
recall.stopAndReportBizDataObject,同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;
}