单聊相关跳转协议
更新于 2024-01-11本文介绍单聊相关的跳转协议。
常用跳转协议
跳转页面 | 链接 | 参数 | 示例 |
PC端侧边栏 | dingtalk://dingtalkclient/page/link?url=URL&pc_slide=true |
| dingtalk://dingtalkclient/page/link?url=https%3A%2F%2Fwww.dingtalk.com%2F&pc_slide=true |
PC端弹窗 | dingtalk://dingtalkclient/page/link?url=URL&popup_wnd=true&title=TITLE&width=WIDTH&height=HEIGHT |
| |
移动端半浮层 | dingtalk://dingtalkclient/action/im_open_hybrid_panel?panelHeight=percent60&hybridType=online&pageUrl=URL |
| |
移动端全屏 | dingtalk://dingtalkclient/page/link?url=URL |
| dingtalk://dingtalkclient/page/link?url=https%3A%2F%2Fwww.dingtalk.com%2F |
开发者需要基于自己应用的实际场景和在单聊内用户使用时的具体需求来拼装一个单聊应用链接。
需要开发者通过链接参数来组装。例如从移动端页面的打开方式(推入页面、弹出页面等),到PC端的页面跳转逻辑(打开新容器或者左滑页面),都是通过链接参数的配置来实现的。
跳转到H5页面
link(侧边栏/容器划出)
示例:
参数说明:
参数 | 说明 |
url | 页面URL,必须做urlencode。 |
dd_mode | iOS端使用。
|
pc_slide | pc_slide=true 时,PC 端会在应用内打开这个 URL。 |
跳转到应用
openapp(如工作台、浏览器、左划面板)
示例:
参数说明:
参数 | 说明 |
container_type | 展现的容器:
|
corpid | 企业的corpId。 |
app_id | |
redirect_type | 跳转类型:
|
params | 参数,首次打开要将此参数加到跳转url的参数列表内。 |
redirect_url | 跳转url,需要urlencode。 |
slide_panel_option | 左划面板的参数 PC版独有。
例如:{"width": 500,"showAppPage":true} 说明 {"width":500,"showAppPage":true}需要urlencode。 |
跳转到小程序
小程序 scheme支持跳转到第三方企业应用小程序、第三方个人应用小程序,请参考小程序 scheme。
跳转到应用类型 | 小程序schema是否支持 |
企业内部应用 | 不支持 |
第三方企业应用 | 支持 |
第三方个人应用 | 支持 |
如何通过链接获取来源单聊信息
指定特殊打开方式
开发者需要基于自己应用的实际场景和在单聊内用户使用时的具体需求来拼装一个应用链接出来。需要开发者通过链接参数来组装。例如从移动端页面的打开方式(推入页面、弹出页面等),到PC端的页面跳转逻辑(打开新容器或者左滑页面),都是通过链接参数的配置来实现的。
以下以为例,详细说明一个链接是如何拼装出来的。
开发者的目标页面地址:
Loading...当你使用了钉钉统一跳转协议,这一部分将作为“钉钉统一跳转协议”地址的入参,所以需要经过urlEncode。
当你没有使用钉钉统一跳转协议,可直接使用原始Url作为地址。不需要urlEncode。
钉钉统一跳转协议(可选)
Loading...这个部分决定了会以什么方式打开你指定的页面。目前支持的有“浏览器打开”、“侧边栏打开”等,每种方式对应的统一跳转协议的path不一样。
部分统一跳转协议path,只在部分平台客户端可用,比如侧边栏打开只在pc和mac端可用。
地址动参(可选)
Loading...设置了这个动参,当用户点击这个访问开发者的地址时,url里的这部分动参可以替换为上下文的信息,比如corpid和openConversationId。
目前可支持的动参如下:
参数
说明
$CORPID$
动态替换企业ID(corpId)
$ENCCID$
动态替换成单聊会话开放ID(openConversationId)。
仅当不使用钉钉统一跳转协议时使用该动参。
$DOUBLE_ENCCID$
动态替换成单聊会话开放ID(openConversationId),区别在于二次urlencode,用于多次协议透传跳转urldecode。
仅当使用钉钉统一跳转协议时使用该动参。
$DOUBLE_ENCCID$二次url加解密是因为:钉钉以“dingtalk://”有一层内部协议,在解析这层协议需要加密一次;url参数后面的业务https协议透传给下游容器使用的时候也需要加解密一次;由于消费方2次解析需要,所以产生url时候也需要2次加密。
示例产生url: urlencode(钉钉url?xxx=xxx & url = urlencode(业务url))
示例解析url: a、urldecode(钉钉url)-> 得到业务url;b、urldecode(业务url)-> 可用参数




