身份校验

启用身份校验后,在客服网页插件代码中按要求传参,即可打通线上客服与第三方网页的客户身份信息校验通道。

场景说明:当企业有自研的网站或app,嵌入纷享在线客服插件,并根据纷享提供的接口,完成接入的身份校验开发工作后,从企业自研的网站或app进行客服咨询时,纷享在线客服将根据传参自动识别咨询用户的身份。

  • 开启身份校验模块功能

入口:在线客服->身份校验,点击开启

  • 开发接入前配置步骤

1、生成身份校验密钥:点击“生成密钥”,即可生成密钥,生成密钥后,请妥善保存此密钥,若忘记密钥,需要重新生成。

2、设置访客身份校验字段: 在纷享销客系统中,全部咨询用户存储在访客对象(对象apiname是“WebImVisitorObj”,为了从自研官网发起咨询的用户可以自动匹配到纷享销客系统中的访客用户,需要配置校验的字段,支持企业自定义身份校验字段,通常情况下,从自研官网将姓名+手机号,就能匹配到唯一的访客用户,如果没有匹配到,会根据传参数新建一条访客用户数据。

3、访客用户关联CRM客户和联系人:一般情况下,从线上客服咨询进入纷享系统的访客用户需要客服人员手动关联到crm客户和联系人,如果企业自研官网需要将发起咨询的用户与crm客户和联系人关联,可以将自研官网系统的用户信息导入到crm客户和联系人中,并启用“自动关联客户和联系人”,设置访客用户自动查询和匹配联系人的字段,根据匹配字段自动查询系统中已有联系人,访客自动关联联系人,请尽量按手机或姓名+手机联合查询即可。

  • 身份校验开发接入说明 1、生成访客校验字段json字符串,示例参数如下: {"full_name":"张三","phone":"15912345678"} 2、使用身份校验生成的密钥,对访客校验字段json字符串使用AES算法进行加密,获取加密字符串A 3、将生产的字符串A追加到网页插件customParams参数

加密算法:AES 工作模式:ECB 填充方式:PKCS5Padding

加密示例代码(java)


public static String encrypt(String data, String key) {
    try {

        // 密钥转换
        SecretKey secretKey = toKey(key);
        byte[] enCodeFormat = secretKey.getEncoded();
        SecretKeySpec k = new SecretKeySpec(enCodeFormat, "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, k);
        byte[] dataArray = data.getBytes("utf-8");
        byte[] encode = cipher.doFinal(dataArray);
        // 密文转换
        return bytesToHexString(encode);
    } catch (Exception e) {
        LOGGER.error("failed to encrypt, data={}, key={}", data, key, e);
        return null;
    }
}

private static SecretKey toKey(String key) throws Exception {
    byte[] data = Base64.decodeBase64(key);
    SecretKey secretKey = new SecretKeySpec(data, "AES");
    return secretKey;
}

private static final String bytesToHexString(byte[] bArray) {

    StringBuffer sb = new StringBuffer(bArray.length);
    String sTemp;
    for (int i = 0; i < bArray.length; i++) {
        sTemp = Integer.toHexString(0xFF & bArray[i]);
        if (sTemp.length() < 2)
        sb.append(0);
        sb.append(sTemp.toUpperCase());
    }
    return sb.toString();
}

results matching ""

    No results matching ""