如何在Cognigy.AI中用JavaScript实现Meta用户数据删除回调
Meta用户数据删除回调在Cognigy.AI中的实现方案
以下是针对你提出的四个问题的具体解答:
1. 在Cognigy.AI中实现回调的方式
可以通过**代码节点(Code Node)**实现,Cognigy没有内置专门处理Meta数据删除回调的模块,具体步骤:
- 在Cognigy Flow中创建独立分支,通过触发条件判断请求是否为Meta的用户数据删除请求(检查请求体中的
object=user和field=delete字段) - 用代码节点编写JavaScript逻辑,处理Meta的POST请求,执行用户数据删除操作
- 将Cognigy的Webhook Endpoint(可在集成页面创建专门的Webhook,或复用Messenger集成的Endpoint,但需确保路由区分)配置为Meta的回调URL
2. PHP代码的使用问题
不能直接使用PHP代码,必须改写为JavaScript。Cognigy的代码节点运行在Node.js环境中,仅支持JavaScript代码。需要将Meta官方PHP示例中的核心逻辑(请求签名验证、数据删除执行、响应格式返回)转换为对应的JavaScript实现。
3. status_url的端点选择
选择a) 主网站端点,原因如下:
- Cognigy的Messenger端点或其他Cognigy特定端点仅用于处理聊天机器人的交互请求,不适合作为持久化的状态查询接口
- status_url需要返回用户数据删除的实时状态(如
completed或in_progress),你需要自己维护这个状态的存储(比如数据库),主网站的后端端点可以方便实现这个功能
4. Transformers的使用建议
不需要使用Transformers。Transformers在Cognigy中的作用是转换不同渠道的消息格式,而Meta的数据删除回调是独立的Webhook请求,与聊天消息交互无关,直接用代码节点处理即可。
代码示例(Cognigy代码节点)
const crypto = require('crypto'); // 1. 验证Meta请求签名(推荐) const appSecret = '你的Meta应用密钥'; const signature = request.headers['x-hub-signature-256']; const hmac = crypto.createHmac('sha256', appSecret); const digest = 'sha256=' + hmac.update(JSON.stringify(request.body)).digest('hex'); if (signature !== digest) { response.status(403).send('Invalid request signature'); return; } // 2. 提取待删除的用户ID const userId = request.body.entry?.[0]?.uid; if (!userId) { response.status(400).send('Missing user ID'); return; } // 3. 执行用户数据删除操作 // 示例:删除Cognigy中的用户数据(需参考Cognigy API文档调整) try { // 删除用户会话数据 await cognigy.api.sessions.deleteSessionsByUser(userId); // 删除用户自定义属性 await cognigy.api.users.updateUser(userId, { attributes: {} }); // 如果有第三方存储的用户数据,在此处同步删除 } catch (err) { console.error('数据删除失败:', err); // 可记录日志,后续重试 } // 4. 返回Meta要求的JSON响应 response.status(200).json({ url: `https://你的主网站域名/data-deletion-status?userId=${userId}`, confirmation_code: `DEL-${userId}-${Date.now()}` });
最佳实践
- 请求签名验证:必须添加签名验证逻辑,防止恶意伪造的删除请求
- 数据彻底删除:除了Cognigy内部的用户数据,还要同步删除关联的第三方存储(如数据库、CRM系统)中的用户信息
- 状态端点实现:主网站的status_url端点需返回标准格式的JSON,示例:
{ "status": "completed" } - 测试验证:使用Meta开发者平台的Webhook测试工具,模拟数据删除请求,验证回调和状态端点的正确性
- 日志记录:记录所有数据删除操作的日志,包括用户ID、删除时间、操作结果,用于合规审计
- 异步处理:如果数据删除耗时较长,可先返回
in_progress状态,后续异步完成删除后更新状态
内容的提问来源于stack exchange,提问作者Prithvi
相关产品推荐
相关产品推荐

