企信链接识别卡片产品需求文档初稿
版本:v0.1
创建日期:2026-06-23
需求来源:用户沟通 + 竞品截图实测 + 企信运行态 HTML
优先级:待确认
文档状态:草稿
需求变更记录
| 变更日期 | 变更人 | 变更内容 |
|---|---|---|
| 暂无 | 暂无 | 暂无 |
依赖需求 Story 列表
| ID | 需求描述 | 涉及端与开发人员 | 是否有依赖项 | 备注 |
|---|---|---|---|---|
| 待确认 | 企信 Web 端链接识别卡片 | 待确认 | 待确认 | 后续需要先定位企信会话详情页 Git 源码和现有消息渲染组件 |
一、需求概述
1.1 需求背景
当前企信消息中发送 URL 链接时,仅展示纯文本链接,用户需要先点开链接才能判断链接内容。竞品 IM 普遍对单条纯链接消息生成链接预览卡片,展示站点 logo、域名、标题和摘要,能降低误点风险,也能让群聊中的业务资料、文档、产品页更容易识别。
本需求目标不是做一个通用“漂亮卡片”,而是在企信会话消息流中,为符合条件的 URL 自动生成低打扰、可识别、可回退的链接预览卡片。
1.3 竞品现状
| 竞品 | 截图 |
|---|---|
| 飞书 | ![]() |
| 企业微信 | ![]() |
| 钉钉 | ![]() |
竞品规则归纳
| 场景 | 飞书 | 企业微信 | 钉钉 | 初步结论 |
|---|---|---|---|---|
| 纯公开网页链接,例如 Salesforce | 生成卡片,展示 logo、域名、标题、摘要 | 生成卡片,展示标题、摘要、右侧 logo | 生成卡片,展示域名、标题、摘要、打开按钮 | 纯网页链接是最稳定的卡片生成场景 |
| 开放平台 / 文档网页,例如飞书开放平台 | 生成卡片 | 生成卡片 | 生成卡片 | 普通 HTML 文档页应按网页卡片处理 |
| 登录态 / SPA hash 链接,例如纷享企信链接 | 生成弱卡片,标题多为“登录”或站点级信息 | 生成弱卡片,标题为“登录” | 生成弱卡片,标题为“登录”并保留 URL | 无法绕过登录态;只能展示可公开获取的站点信息 |
| 文字 + 链接混排 | 不生成卡片,仅保留可点击链接 | 不生成卡片,仅保留可点击链接 | 不生成卡片,仅保留可点击链接 | 混排消息默认不生成卡片更稳,避免打断正常文本表达 |
| 多条纯链接 | 不生成卡片,仅保留多条可点击链接 | 不生成卡片,仅保留多条可点击链接 | 不生成卡片,仅保留多条可点击链接 | 三家都倾向只在“单条纯链接消息”场景触发卡片识别 |
| PDF 文件链接 | 不生成网页卡片,仅保留链接 | 不生成卡片,仅保留链接 | 生成通用“分享链接”卡片 | 文件链接不宜按网页摘要处理,可做文件型兜底卡片 |
| WPS / KDocs 链接 | 生成卡片,展示 365.kdocs.cn、标题“金山文档”和邀请登录提示 | 截图中仅展示纯链接,未生成卡片 | 生成通用“分享链接”卡片,信息较弱 | WPS 链接受站点元信息、登录态和平台抓取策略影响明显 |
| TAPD 链接 | 生成卡片,标题为“TAPD” | 生成卡片,标题为“TAPD” | 生成通用“分享链接”卡片 | 企业工具类登录态链接通常只能展示站点级标题 |
1.4 产品价值
- 让群聊中的链接可被快速识别:用户无需点开即可判断链接是产品官网、文档、PDF、WPS 文档、TAPD 还是内部系统链接。
- 降低链接误点和信息误判:登录态、PDF、抓取失败场景不伪装成完整网页卡片,明确按弱卡片或纯链接展示。
- 保持企信消息流稳定:优先处理单条纯链接消息,混排消息和多条链接消息默认不强制展开,避免把普通沟通消息撑高。
1.5 需求目标
- 当用户发送单条纯 URL 消息时,系统自动识别链接并生成链接预览卡片,展示站点 logo、域名、标题、摘要或文件信息。
- 当链接无法获取有效网页信息时,系统按登录态、文件型、通用站点型或纯链接进行降级展示,不生成误导性内容。
- 当消息为文字 + 链接混排或多条链接消息时,本期默认不自动展开卡片,仅保留原消息和可点击链接。
1.6 范围与非目标
| 类型 | 内容 |
|---|---|
| 本期范围 | 仅 Web 端企信会话详情页中用户发送/接收的普通 URL 链接识别与卡片展示;覆盖公开网页、开放平台文档、登录态链接、PDF 文件链接、WPS/KDocs、TAPD 等典型链接 |
| 非目标范围 | 移动端暂不纳入本期;不绕过目标网站登录态;不解析需要企业权限的文档正文;不承诺所有网站都能拿到 logo/标题/摘要;不处理历史消息批量重刷卡片;不把当前低保真 HTML Demo 作为最终 UI 依据 |
二、产品方案
2.1 最终设计稿
本期 Web 端链接卡片视觉样式以以下设计图为准。该图用于确认消息流中的卡片宽度、链接文本换行、站点 logo / 域名 / 标题 / 摘要的层级,以及未识别 logo 时的占位图标。设计图中包含移动端展示参考,但本期交付范围仍仅包含 Web 端;移动端不纳入本期上线范围。

设计稿中已确认的展示规则:
| 项目 | 规则 |
|---|---|
| 卡片宽度 | 固定约 400px;在消息气泡内展示,不铺满整行 |
| 链接文本 | 原始链接在卡片上方完整展示;超长链接允许折行展示 |
| logo | 识别到网站 logo 时直接展示;未识别时使用通用链接 icon 占位 |
| 域名 | 展示来源域名,不展示协议、路径、参数和 hash;Web 域名字号 12px,移动端参考字号 14px |
| 标题 | 14px 加粗,仅展示一行,超出省略 |
| 摘要 | Web 端 12px,最多展示两行,超出省略;移动端参考字号 14px |
| 操作能力 | 卡片内不展示复制、关闭预览、打开按钮;点击卡片等同点击原链接 |
2.2 整体方案
企信发送消息后,系统识别消息内容中的 URL。若消息内容是“单条纯链接”,则尝试生成链接预览卡片;若消息是“文字 + 链接混排”或“多条链接消息”,本期默认保留为文本消息,不自动生成卡片。
链接卡片展示应贴近 IM 消息流:卡片宽度不宜过大,优先展示站点身份、标题和摘要;信息不足时降级展示,不用空白字段撑 UI。
flowchart TD
A["用户发送消息"] --> B{"是否包含 URL"}
B -->|否| C["按普通文本消息展示"]
B -->|是| D{"是否单条纯链接消息"}
D -->|否| E["保留文本消息和可点击链接"]
D -->|是| F["提取 URL 并请求链接元信息logo/域名/网址标题/摘要信息"]
F --> G{"是否获取到有效网页标题/摘要"}
G -->|是| H["展示网页预览卡片"]
2.3 链接识别规则
| 场景 | 识别条件 | 展示规则 | 示例 |
|---|---|---|---|
| 单条纯链接,且带协议完整 URL | URL 以 http:// 或 https:// 开头 | 生成 1 张链接卡片 按原始完整 URL 识别、打开、转发和搜索;卡片展示时域名可简化 | https://www.fxiaoke.com/XV/UI/Home#chats |
| 不带协议裸域名 | 文本形如 www.xxx.com、xxx.com/path,且能被现有 URL 解析器识别 | 【保持现状】默认不生成卡片,仅保留可点击链接 | www.fxiaoke.com |
| 多条纯链接 | 消息由多行 URL 或多个 URL 组成,除 URL 外无正文 | 【保持现状】默认不生成卡片,仅保留多条可点击链接 | Salesforce +https://www.fxiaoke.com +https://www.fxiaoke.com/XV/UI/Home#chats |
| 文字混排链接 | URL 前后存在普通正文 | 【保持现状】默认不生成卡片,仅链接高亮可点击 | 这是 Salesforce CRM 产品页:https://... |
| 文件链接 | URL path 后缀可识别为 .pdf、.ppt、.pptx、.doc、.docx、.xls、.xlsx 等 | 【保持现状】不识别 | https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf |
| 登录态 / 内部系统链接 | 抓取结果为登录页、空标题、权限页、跳转页或仅站点级信息 | 展示弱卡片:来源域名 + 可获取标题; | 纷享企信、TAPD |
| WPS / KDocs 链接 | kdocs.cn、365.kdocs.cn 等域名 | 按公开可获取信息展示;如果只能获取“分享链接”或登录提示,不强行展示文档正文 | 金山文档邀请链接 |
2.4 卡片信息结构
| 信息项 | 是否必需 | 展示规则 |
|---|---|---|
| 站点 logo / 文件类型图标 | 必需 | 优先 favicon 或站点 logo;文件链接用文件类型图标;获取失败用通用链接图标,即小地球 |
| 来源域名 | 必需 | 展示主域名或完整子域名,隐藏协议、路径、参数和 hash;例如原始链接 https://www.fxiaoke.com/XV/UI/Home#chats,卡片域名展示为 www.fxiaoke.com |
| 标题 | 必需 | 优先网页 title / og:title;获取失败时使用域名、文件名或“分享链接”兜底 |
| 摘要 | 可选 | 优先 og:description / description;无摘要时不展示空行 |
卡片中展示的域名是来源标识,不等同于完整链接。点击打开、消息转发、消息搜索、卡片重新渲染均以原始完整 URL 为准。
本期卡片采用飞书、企业微信方向:链接卡片是原链接消息的渲染结果,卡片本身不展示复制、关闭预览、打开按钮等额外操作。钉钉在卡片上提供复制能力,是因为其渲染卡片后原始链接文本被移除;企信本期不采用该交互。
2.6 卡片交互
| 操作 | 规则 |
|---|---|
| 点击卡片主体 | 打开原始 URL,行为与点击链接一致 |
| 转发 | 转发的是原链接消息;转发到其他会话后,目标会话按链接识别规则重新渲染卡片 |
| 搜索消息 | 搜索可命中原始链接,也可命中卡片内标题、域名、摘要等可见文本 |
| 聊天记录卡片 | 批量转发生成的聊天记录卡片内部,暂不递归识别和渲染链接卡片 |
2.7 多链接不生成卡片的原因
竞品普遍只在“单条纯链接消息”时触发卡片识别,多条纯链接不生成卡片,主要是因为多链接消息的语义更接近“链接清单”而不是“分享某一个页面”。如果逐条展开,会带来几个问题:
- 一条消息被多张卡片撑得过高,影响 IM 消息流阅读效率。
- 多链接之间没有明确主次,系统无法判断用户真正想重点预览哪一个链接。
- 多张卡片同时触发抓取,会增加发送后解析压力和失败噪音。
- 转发、搜索、合并聊天记录等场景会变复杂,容易出现一条消息里嵌套多个预览块的问题。
因此企信本期建议与竞品保持一致:只有单条纯链接消息生成卡片;多条纯链接、文字混排链接、聊天记录卡片内链接均不自动生成卡片。
2.8 安全与权限边界
- 链接预览服务不得携带当前用户登录态去抓取第三方页面,避免越权读取内部文档或业务页面。
- 登录态链接不能展示当前用户才有权限看到的业务标题、客户名称、文档正文等敏感信息。
- 内部系统链接、WPS/KDocs、TAPD 等企业工具链接,若只能公开获取站点级信息,应展示站点级弱卡片或纯链接。
- 卡片中展示的标题、摘要、logo 来源于目标站点公开元信息或文件名,不应由前端根据 URL 路径自行编造。
四、规范检查项
4.1 业务文案多语言 Key
无
4.2 需求埋点
无
4.3 沙盒 / 更改集能力
不涉及。
4.4 PaaS 国际化兼容检查
| ID | 多语接入事项 | 是否需要 | 注意事项 |
|---|---|---|---|
| 1 | 接入翻译工作台 | 否 | 链接标题和摘要来自第三方页面,不建议进入翻译工作台 |
| 2 | CRM提醒 | 否 | 不涉及 CRM 提醒 |
| 3 | 企信消息提醒 | 是 | 仅影响企信消息内容展示,不应改变消息提醒内容 |
| 4 | 支持快捷翻译能力 | 待确认 | 链接卡片标题/摘要是否参与翻译待确认;建议首期不翻译卡片元信息 |
| 5 | 数据多语能力 | 否 | 不涉及业务数据多语 |
4.5 操作日志说明
无。链接预览生成属于消息展示增强,不建议生成用户可见操作日志。
4.6 风险点
| ID | 风险类型 | 风险说明 | 响应策略 |
|---|---|---|---|
| 1 | 权限风险 | 如果抓取服务携带用户登录态,可能把内部页面标题、文档正文展示给无权限成员 | 抓取服务不得携带用户态;登录态链接只展示公开信息 |
| 2 | 性能风险 | 发送多链接消息时,实时抓取可能影响消息发送或展示速度 | 异步抓取、超时回退、缓存元信息 |
| 3 | 误导风险 | 目标站返回登录页或通用标题时,卡片可能让用户误以为识别到了业务页面 | 明确按弱卡片展示,不编造业务标题 |
| 4 | UI 风险 | 卡片过高会打断 IM 消息流,尤其是多链接连续发送场景 | 控制卡片高度,摘要最多两行,多链接数量限制待确认 |
4.7 上线策略
| 项目 | 建议 |
|---|---|
| 收费标准 | 不收费 |
| 上线节奏 | 建议灰度 |
| 灰度原因 | 涉及第三方链接抓取、展示降级、安全边界和消息流体验,需要先小范围验证 |
| 适用版本 | 待确认 |
| 适用终端 | 本期仅 Web 端;移动端暂不纳入本期 |


