怎么从浏览器打开飞书, 并跳到与指定工号人员的聊天框, 并携带订单号
背景: 公司使用的飞书作为通讯软件, 想增强飞书和我们平台的协作能力;
需求: 假设遇到了客服想咨询操作人员一笔订单, 通过 web 点击对应操作, 打开飞书, 跳到该操作人员的聊天框, 然后把订单号或者订单详情链接带入到聊天框; 这么做的目的是提高沟通效率, 省去沟通环境中的同步上下文动作.
针对该需求,我建议通过飞书开放平台的"深度链接"功能实现,以下是具体方案及技术实现步骤:
一、技术方案选择
使用飞书提供的 Open Link 协议(类似飞书://open/)生成深度链接
结合 URL 参数传递订单信息
支持网页端与客户端自动跳转
二、具体实现步骤
用户信息映射准备
在平台用户系统与飞书账号系统之间建立映射关系(可通过手机号或邮箱关联)
创建用户信息查询接口:GET /api/lark/user/{orderId} 返回操作人员飞书 user_id
生成深度链接(前端实现示例)
// 获取操作人员飞书 ID
const getLarkUserId = async (orderId) => {
const res = await fetch(/api/lark/user/${orderId}
);
return res.json().user_id;
};
// 生成飞书链接
const generateLarkDeepLink = (userId, orderInfo) => {
const baseUrl = ' applink.feishu.cn/client/chat/chat';
const params = new URLSearchParams({
user_id: userId,
text: 订单咨询:${orderInfo.number}\n 详情链接:${orderInfo.detailUrl}
});
return ${baseUrl}?${params.toString()}
;
};
网页跳转逻辑
三、安全增强措施
信息加密处理
// 使用 AES 加密订单信息
const encryptOrderInfo = (orderId) => {
const cipher = crypto.createCipheriv('aes-256-cbc', SECRET_KEY, IV);
return cipher.update(orderId, 'utf8', 'base64') + cipher.final('base64');
};
// 在生成链接时
const encryptedId = encryptOrderInfo(orderId);
params.set('payload', encryptedId);
服务端验证( Node.js 示例)
app.get('/api/lark/user/:orderId', async (req, res) => {
try {
const decryptedId = decryptOrderInfo(req.params.orderId);
const user = await UserService.findByOrder(decryptedId);
res.json({ user_id: user.feishuId });
} catch (error) {
res.status(403).json({ error: 'Invalid request' });
}
});
四、兼容性处理方案
多环境适配逻辑
function openFeishuChat(feishuUrl, webUrl) {
const ua = navigator.userAgent;
const isMobile = /Mobile|Android|iPhone/i.test(ua);
if (isMobile) {
// 移动端直接尝试打开 App
window.location.href = feishuUrl;
setTimeout(() => {
window.location.href = appStoreLink; // 跳转应用商店
}, 500);
} else {
// PC 端打开桌面客户端
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = feishuUrl;
document.body.appendChild(iframe);
setTimeout(() => {
document.body.removeChild(iframe);
window.open(webUrl); // 降级到网页版
}, 500);
}
}
五、实施建议
分阶段上线计划:
第一阶段:内部测试版(使用测试环境订单数据)
第二阶段:灰度发布( 20%客服团队试用)
第三阶段:全量上线+数据监控
监控指标配置:
// 埋点示例
const trackEvent = (eventName, params) => {
console.log([Analytics] ${eventName}
, params);
// 实际应接入数据分析平台
};
document.querySelector('.feishu-link').addEventListener('click', () => {
trackEvent('FEISHU_CHAT_OPEN', {
order_type: 'refund',
user_agent: navigator.userAgent
});
});
异常处理方案:
添加备选交互流程(当飞书不可用时)
function fallbackToClipboard(orderInfo) {
navigator.clipboard.writeText(订单号:${orderInfo.number}
);
showToast('已复制订单号到剪贴板');
}
设置超时重试机制
let retryCount = 0;
function checkFeishuInstalled() {
return new Promise((resolve) => {
// 通过客户端 API 检测实现
});
}
该方案的优势在于:
实现成本低,主要利用现有开放平台能力
同时支持桌面端和移动端跳转
通过加密保障订单信息安全
提供完整的异常降级方案
支持数据埋点用于后续优化
需要注意:
需要申请飞书开放平台开发者权限
用户首次使用时需要授权账号关联
建议在消息模板中添加平台 logo 等品牌元素
需定期更新加密秘钥(推荐使用密钥管理服务)
这年头问问 deepseek 很难吗?
不会问 ai ,飞书文档多看看也行啊
AI 幻觉很严重哦, 比如说你给的答案就行, 刚刚问了官方技术支持, 明确表示不支持做消息携带跳转
既然是公司内部使用,可以客服先点击链接通知操作人员,操作人员此时已有订单和客服人员信息,由操作人员点击链接打开客服聊天框即可
1.站内直接回复 AI 生成内容可能会被封号; 2.AI 不一定准确,例如 #1 中的 AppLink 飞书并不支持自定义参数所以无法实现
哥们别说和问题无关的话吗, 文档能看的已经看了
想携带上下文信息, 我前司自研的 IM 就可以做到这一点, 看飞书的文档没有看到相关的内容, 想看看有没有人曾经也有这个想法, 或者有这个经验
上下文信息已经有了,只是没在聊天中显示
要不再和技术支持聊聊,催他们来实现这一个东西,感觉很有必要的一个场景。
ai 人家自己不会问,要你贴一个又臭又长还行不通的答案( op 在#4 说的)?越来越感觉 ai 警察做得对
嗯, 刚刚沟通的结果是让我找专门负责对接我们的技术支持, 提需求去落地, 但是如果要花钱, 肯定不做哈哈
AI 的答案并不一定准确, 还是需要自己思考实践过滤一下
open.feishu.cn/document/common-capabilities/applink-protocol/applink-introduction/applink-application
看看这篇文档 按我的理解只要你能在你自己的系统里拿到对应人员的飞书 openid 就能通过 applink 唤起窗口
这可能就是一本正经胡说八道的 ai
AI
又想了想,如果是我的话,可能会这样做,包一下 AppLink ,触发点击动作时先去自己系统后台走一道,调用对应操作用户的 api 给目标飞书先发送上下文消息,应该就是 5 楼的思路
看了一下应该不支持参数吧,只能唤起聊天,还需要走其他的方式进行传输参数,或者使用粘贴板复制
社区明确规定不让发 AI 生成内容。 这么长一大段
创建群聊 -> 向群聊发送单号 -> 构造并访问群聊的链接
================
刚才看文档想到的方式,没试过,不一定行。
谢谢,那个使用 AI 回复的账号已经被彻底 ban 。
一直想有个建议,借位置提一下。
啥时候整一个,回复的时候能携带上下文,像 GitHub 那种
原文
回复
或者像抖音那种评论,在同一层展开,就更好了 哈哈
笑死了,一楼还贴了段又臭又长的 ai 回复。飞书开发相关的训练资料很少,ai 回复的幻觉很严重,这种问题还体现在很多冷门的技术上。
这种需要把飞书文档作为上下文提供进入,让他总结,但是如果我知道上下问在文档哪部分,我费这劲问 ai 干嘛呢,直接看文档不就行。
目前很多大模型的产品支持解析 url 中的内容作为上下文带上。但是飞书的文档子页面非常多,不可能所有都提供,即使都提供了,上下文大概率会超。这种时候需要先从工程层面做到"从飞书文档中过滤出和我的问题相关的部分内容",然后带入到上下文中。
甚至一楼还问一句"这年头问问 deepseek 很难吗" 同样的,这年头发出来之前,验证下自己发的内容很难吗。
总之,我依然相信,大模型是智商过滤器。
一堆国产应用的 SDK 等级还停留在 28 甚至以下的,导致用户都无法单独给媒体文件权限,必须整个外部储存全部给他读。 特别点名腾讯 QQ ,还在停留在 API 26/安卓 8…
早上打网约车去机场,晚上在机场打出租车回家。 早上去花了 106,晚上回 186 。 另外晚上(凌晨 2 点多)的那个出租车司机开车简直不要命,80 公里的城市高架飙到 130…
目前看能让 deepseek 直接阅读单篇文章,但是好像没有应用能自动拉取新的文章,或者 Follow 的输出能用吗?有啥好的思路没呀 那不就是简单的基于 llm api …