虎符 crm-mapping 服务接入说明

本文档描述了用户接入虎符 crm-mapping 官方赋能场景步骤。

1、入驻云鼎

虎符作为云鼎的一个业务组件,接入虎符官方赋能场景需要先入驻云鼎(入驻指引:https://yd-doc.jdcloud.com/docs/2-get-start/)提交入驻审核后联系云鼎运营审核,如已入驻跳过此步骤。

2、申请接入 crm-mapping 场景

入驻成功后登陆虎符控制台,虎符控制台地址:https://hufu-yd-console.jdcloud.com/

2.1、创建虎符应用

虎符网关以应用维度进行授权管理的,接入场景前首先需要创建一个虎符应用。

(1)点击左侧菜单栏“应用管理”按钮进入虎符应用列表界面,点击“创建应用”按钮进入创建应用界面。


(2)进入创建应用界面后填写应用相关信息,业务域选择“零售”,应用名称自定义,应用类型选择“CRM系统”,点击授权类型,选择一个京东云Access Key,如果没有,前往AccessKey管理页面:https://uc.jdcloud.com/account/accesskey创建。 * 注:虎符应用依赖于京东云accessKey,如果删除或禁用京东云accessKey,会导致虎符应用不可用!

2.2、申请接入

(1)点击左侧菜单栏“官方赋能”->“场景列表”,接入官方赋能场景列表,选择“虎符crm-mapping服务”场景,点击“申请接入”按钮,选择上一步创建的应用。

(2)申请接入后,跳转到“我的场景”界面,找到对应的接入申请应用,查看是否授权(已授权分组列),如果是空,需要联系虎符运营授权,需提供应用的AppKey及申请接入的场景。

未授权状态

已授权状态

2.3、接入管理

接入成功后,进入“接入管理”页面可以查看 api列表信息,调试API,以及查看环境信息、下载SDK。

(1)调试API

(2)下载SDK

3、提交 mapping 计算任务

完成上述接入过程后,可以通过sdk来提交 mapping 计算任务

3.1、文件格式说明

明文包、密文包要按照规定的格式上传,提交计算任务后开始进入等待队列,执行完成之后系统会给虎符应用所属京东云pin设置的邮箱发送邮件,邮件中包含任务Id以及计算结果下载地址(一天内有效)

1、明文包样本数据:https://hufu-doc.s3.cn-north-1.jdcloud-oss.com/plaintext.csv

2、密文包样本数据:https://hufu-doc.s3.cn-north-1.jdcloud-oss.com/ciphertext.csv

3、mapping计算结果数据:https://hufu-doc.s3.cn-north-1.jdcloud-oss.com/result_1608616334573.csv

3.2、限制说明

1、测试环境允许公网调用,线上环境只允许在鼎内调用

2、经过授权的虎符应用才允许提交 mapping 计算任务

3、每天只允许提交5次 mapping 计算任务

4、mapping计算结果匹配率(匹配结果条数 / 明文条数)上限是20%,大于等于20%时不会返回匹配结果

5、mapping计算结果下载地址一天内有效,计算完成后请及时下载

3.2、java 代码示例

目前只发布了测试环境和线上环境,测试环境使用公网地址,线上环境使用VPC地址(鼎内)

 public class Demo {

     //虎符应用的ak sk
     private static String accessKeyId = "***";
     private static String secretKey = "***";
     private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretKey);
     //如果文件较大socketTimeout建议设置大一些
     private static CrmMappingClient client = CrmMappingClient.builder()
             .credentialsProvider(credentialsProvider)
             .httpRequestConfig(new HttpRequestConfig.Builder().connectionTimeout(10000).socketTimeout(120 * 1000).contentType(ContentType.APPLICATION_OCTET_STREAM).protocol(Protocol.HTTP).build())
 //                .environment(new Environment.Builder().endpoint("y6x8ama01wbn-test.cn-north-1.vpc.jdcloud-api.net").build()) // 测试环境VPC地址
                   .environment(new Environment.Builder().endpoint("y6x8ama01wbn-test.cn-north-1.jdcloud-api.net").build()) // 测试环境公网地址
 //                .environment(new Environment.Builder().endpoint("y6x8ama01wbn.cn-north-1.vpc.jdcloud-api.net").build()) // 线上环境VPC地址
 //                .environment(new Environment.Builder().endpoint("y6x8ama01wbn.cn-north-1.jdcloud-api.net").build()) // 线上环境公网地址
             .build();

     public static void main(String[] args) {
         /**
          * 上传明文,注:样本数据是随机生成的手机号,为避免测试数据与真实数据相同,样本集对手机号做了模糊化处理,实际计算时需要提交真实手机号
          */
         UploadPlaintextUsingPOSTRequest uploadPlaintextUsingPOSTRequest = new UploadPlaintextUsingPOSTRequest();
         try {
             uploadPlaintextUsingPOSTRequest.setJdcloudRequestBody(Files.readAllBytes(Paths.get("plaintext.csv")));
         } catch (IOException e) {
             e.printStackTrace();
         }
         UploadPlaintextUsingPOSTResponse uploadPlaintextUsingPOSTResponse = client.uploadPlaintextUsingPOST(uploadPlaintextUsingPOSTRequest);
         System.out.println(new Gson().toJson(uploadPlaintextUsingPOSTResponse));
         /**
          * 上传密文
          */
         UploadCipherTextUsingPOSTRequest uploadCipherTextUsingPOSTRequest = new UploadCipherTextUsingPOSTRequest();
         try {
             uploadCipherTextUsingPOSTRequest.setJdcloudRequestBody(Files.readAllBytes(Paths.get("ciphertext.csv")));
         } catch (IOException e) {
             e.printStackTrace();
         }
         UploadCipherTextUsingPOSTResponse uploadCipherTextUsingPOSTResponse = client.uploadCipherTextUsingPOST(uploadCipherTextUsingPOSTRequest);
         System.out.println(new Gson().toJson(uploadCipherTextUsingPOSTResponse));
         /**
          * 提交计算任务,提交后会进入等待队列,计算任务执行完成之后会邮件通知京东云pin设置的邮箱联系人
          */
         CommitTaskUsingPOSTRequest commitTaskUsingPOSTRequest = new CommitTaskUsingPOSTRequest();
         commitTaskUsingPOSTRequest.setCiphertextUrl(uploadCipherTextUsingPOSTResponse.getUploadCiphertextResVO().getCiphertextUrl());
         commitTaskUsingPOSTRequest.setPlaintextUrl(uploadPlaintextUsingPOSTResponse.getUploadPlaintextResVO().getPlaintextUrl());
         CommitTaskUsingPOSTResponse commitTaskUsingPOSTResponse = client.commitTaskUsingPOST(commitTaskUsingPOSTRequest);
         System.out.println(new Gson().toJson(commitTaskUsingPOSTResponse));
     }

results matching ""

    No results matching ""