“客户资料接口”是为增强客服能力,对有自建客户系统,同时又具备一定开发对接能力的用户,提供的对接接口。接口分为两个部分:“查询接口”和“绑定接口”。 ## 查询接口 查询接口是通过知你唯一用户ID(uid)去自建客户系统查询具体的客户信息。返回结果显示在聚合聊天的“客户资料”选项卡里。 ![](https://box.kancloud.cn/1e427e95b5164be812db2f7453a8fa6c_1052x196.png) 例如,查询地址为ht tps://example.zhinikefu.com/query。则我们会带上uid相关信息,向这个查询接口获取具体的客户信息。如https://example.zhinikefu.com/query?uid= xxx&timestamp=xxx&nonce=xxx&sign=xxx。具体参数如下: | 参数名 |说明| 备注 | | --- | --- | --- | | uid | 用户ID | 微信号用户使用此参数 | | appid | 查询公众号和小程序信息时,用户所在公众号或小程序的appid |公众号、小程序用户使用此参数 | openid| 查询公众号和小程序信息时,用户openid|公众号、小程序用户使用此参数 | timestamp | 请求时间戳 | 可以对时间做一个校验,降低重放攻击 | | nonce | 长度16的随机数(字母+数字) | 增加签名结果的随机性 | | sign | 签名 | 详情见「关于签名 | 对于 微信号必须先绑定在显示信息 对于公众号和小程序用户,如果您的客户系统中可以通过 appid 和 openid 确定并返回用户信息,不需要绑定 如果客户系统根据uid查询到相关客户信息,则以JSON的形式返回如下: ``` { "errcode":0, "data":{ crm_info: [ { "label":"手机号", "value":"13100000000" }, { "label":"购买数", "value":"5" } ] } } ``` data里的每一个对象,都是一组用户信息,label表示标题,value表示具体的客户信息。errcode为-100的时候,表示用户未绑定,会展示下图页面,其它非0值表示获取用户信息失败 ![](https://box.kancloud.cn/5ff1dd7806a1cfb3f3b664469cad63e8_454x204.png) ## 绑定接口 绑定接口主要是在查询接口未查到相关信息的时候,客服同学可以在“客户资料”选项卡界面,通过设置好的绑定接口,将各个渠道用户和自建客户系统进行数据绑定,以便查询显示客户资料。 ![](https://box.kancloud.cn/7d733b85e7ff3cb4f0b29a8eed3ebc84_1062x310.png) 当客服在“客户资料”选项卡界面发起绑定操作的。发送POST请求到绑定地址。绑定参数这一栏,“绑定参数名”是给客服看到,参数key是给服务端对接获取用的。例如,我们给自己客服系统增加的配置: ![](https://box.kancloud.cn/907475a962ae518c535b456476d4d9e5_1104x384.png) 当客服在前台填写了某个客户的相关信息,例如: ![](https://box.kancloud.cn/5ff1dd7806a1cfb3f3b664469cad63e8_454x204.png) 当客服填入手机号:13100000000,点击绑定后,我们会组装一个POST请求,发送到绑定地址。 具体发送参数如下: | 参数名 |说明| 备注 | | --- | --- | --- | | uid | 用户ID | | | appid | 公众号或小程序appid|公众号、小程序使用此参数查询 | openid| 公众号或小程序openid |公众号、小程序使用此参数查询 | bind | 表示绑定还是解绑(0:解绑 1:绑定)| | | bind_key | 参数名(bind=0不存在此字段) |比如:phone | | bind_value | 参数值(bind=0不存在此字段) | 比如:13100000000 | | name | 用户名称(bind=0不存在此字段) | | | avatar | 用户头像(bind=0不存在此字段) | | | timestamp | 请求时间 | | | nonce | 长度16的随机数(字母+数字) | | | sign | 签名 | 用于合法性验证 | 如果客服输入的手机号在客户系统查到,绑定成功后,应返回JSON格式的消息体,errcode为0,如:{"errcode":0},网页端收到正确的返回值后,会自动调用一次查询接口,查询关联的客户信息。当收到errcode值不为0时,则认为绑定失败,会重新显示绑定界面。 ## 关于签名 为了接口合法使用,我们对接口调用进行了鉴权。在设置界面完善信息后,我们系统会生成一串随机码,即密钥(SecretKey)。在调用贵司接口的时候,我们服务端会根据SecretKey,计算出签名值,即sign,具体算法如下: 所有发送的数据为集合M,集合M中添加secret= SecretKey (客户资料对接界面显示的secretKey),将集合M内参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,并对stringA进行sha256运算,再将得到的字符串所有字符转换为大写,得到sign值signValue