接入平台通过回调到外部应用服务器来完成某些通知功能,比如主动告知通讯录有变化。回调配置#
想要开启回调功能,需要管理员开启通讯录同步功能(开启该功能参考通讯录同步功能概述),并设置接收事件服务器地址: URL
:URL:对接的外部应用提供的公开可访问的回调服务地址 ,由开发者搭建(需要满足接口要求,参考回调API说明 ),用于接收通知消息或者事件。如果url是https协议,请确保服务证书是有效的,否则回调失败。
保存的时候橙讯服务器会给对应的应用服务器端发送“通讯录回调地址测试”请求,对方返回成功后才能保存。
回调协议#
1.
所有接口使用HTTPS协议,POST方法、JSON数据格式、UTF8编码。所有请求都推送至系统事件接收URL,推送时如果response的http code不为200,会重发,共三次。建议第三方服务发生重启后,主动执行一次增量查询。
2.
回调地址格式为:POST URL?corpid=xxx×tamp=xxx&nonce=xxx&signature=xxx,其中corpid,nonce,timestamp,signature为橙讯系统自动添加,URL为前面配置。corpid为组织ID,nonce为随机数,timestamp为请求 时间戳,signature为按下面签名算法得出的签名值。
3.
签名算法和规则:signature采用 HMAC-SHA256算法,用十六进制表示。
4.
返回结果/参数说明,标明返回参数示例及说明。特别留意,所有接口返回包里都有err_code、err_msg。err_code是否为0判断是否调用成功(err_code意义请见全局错误码)。
签名计算#
1.
设所有发送或者接收到的数据为集合M(Body中的json属性,加上URL中的corpid, timestamp,nonce),将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串baseString。特别注意以下重要规则:4.
验证签名时,传送的signature参数不参与签名,将生成的签名与该signature值作校验
5.
接口可能增加字段,验证签名时必须支持增加的扩展字段
2.
在baseString最后拼接上&key=keyvalue得到最后要被签名(finalString)的字符串。这里keyvalue在开通时设置。最后对finalString进行HMAC-SHA256运算,得到的用十六进制表示的签名值字符串为signature值
Signature Key
由系统生成,可在应用授权信息中查看
请求URL为:URL?corpid=123×tamp=1555305587&nonce=1556085361&signature=45818f4d3c52c0f96ab6241dbb9e4b03539681ec
Body为:{"event_type":"ADDRESS_BOOK","version":100}
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
baseString="corpid=123456&event_type=ADDRESS_BOOK&nonce=SXqHqgjEFe×tamp=1608602744059&version=100";
第二步:拼API的key(开通时设置的),并计算
finalString=baseString+"&key=keyvalue";signature=Hex(hash_hmac("sha256", finalString, key));
//注:采用UTF-8,HMAC-SHA256签名方式对比该signature和URL中的signature值
API:通讯录回调地址测试#
{
"event_type": "PING",
"version": 0
}
API:通讯录变更通知#
{
"event_type": "ADDRESS_BOOK",
"version": 5
}
API:通讯录可见范围变更(5.4.0添加)#
{
"event_type": "ADDRESS_BOOK_VISIBILITIES_CHANGED"
}
参数 | 说明 |
---|
event_type | 通知类型:ADDRESS_BOOK:通讯录有变化 |
version | 当前通讯录版本号 |