Dittofeed嵌入式组件:iframe集成
引言:为什么选择嵌入式集成?
在现代SaaS应用中,消息自动化已成为提升用户参与度和转化率的关键功能。Dittofeed通过嵌入式组件提供了一套完整的消息自动化解决方案,让您无需重新开发核心功能,就能为应用添加专业的旅程构建、用户分群、邮件模板管理和订阅管理能力。
通过iframe集成方式,您可以在自己的应用中无缝嵌入Dittofeed的功能模块,实现:
- 快速集成:无需复杂的前端开发
- 安全隔离:iframe提供天然的安全边界
- 功能完整:获得Dittofeed全部专业功能
- 品牌一致性:保持应用整体用户体验
核心概念解析
工作空间架构
Dittofeed采用多租户工作空间架构,支持父工作空间和子工作空间的层级管理:
认证流程
集成步骤详解
步骤1:获取父管理员API密钥
首先需要联系Dittofeed团队获取父工作空间的管理员API密钥:
# 联系信息
邮箱:support@dittofeed.com
Discord:Dittofeed社区
步骤2:创建子工作空间
使用API创建子工作空间,可关联外部ID以便管理:
curl -X PUT \
-H "Authorization: Bearer <parent-admin-api-key>" \
-H "Content-Type: application/json" \
-d '{
"name": "我的客户业务",
"externalId": "1234567890",
"workspaceId": "<parent-workspace-id>"
}' \
https://app.dittofeed.com/api-l/admin/workspaces/child
响应包含子工作空间ID和写入密钥:
{
"id": "6eed2156-606a-4666-925e-7f89adddd743",
"name": "我的客户业务",
"externalId": "1234567890",
"writeKey": "Basic OTQ0MjNkNzctMzA0Ni00MDBhLTgxMDYtMTM2ZTIzZmQyMzE2OjQ3YjRlYzExOTM3NDE3MjU=",
"type": "Child",
"status": "Active"
}
步骤3:创建会话令牌
在后端创建会话令牌供前端使用:
curl -X POST \
-H "Authorization: Bearer <write-key>" \
-H "Content-Type: application/json" \
-d '{"workspaceId": "<child-workspace-id>"}' \
https://app.dittofeed.com/api-l/sessions
响应包含1小时有效期的会话令牌:
{
"token": "1234567890"
}
嵌入式组件集成指南
旅程编辑器
创建和编辑自动化旅程的核心组件:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/journeys/v2?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}&id=${JOURNEY_ID}"
width="100%"
height="600px"
frameborder="0"
allowfullscreen
></iframe>
参数说明:
token: 会话令牌workspaceId: 子工作空间IDid: 旅程ID(新建时省略)
旅程列表
查看和管理所有旅程:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/journeys?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}"
width="100%"
height="500px"
frameborder="0"
></iframe>
广播编辑器
创建一次性消息广播:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/broadcasts/v2?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}&id=${BROADCAST_ID}"
width="100%"
height="700px"
frameborder="0"
></iframe>
模板编辑器
支持多种消息类型的模板编辑:
邮件模板:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/templates/email?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}&id=${TEMPLATE_ID}"
width="100%"
height="800px"
frameborder="0"
></iframe>
短信模板:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/templates/sms?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}&id=${TEMPLATE_ID}"
width="100%"
height="500px"
frameborder="0"
></iframe>
用户分群管理
创建和管理用户分群:
<iframe
src="https://app.dittofeed.com/dashboard-l/embedded/segments/v1?token=${SESSION_TOKEN}&workspaceId=${CHILD_WORKSPACE_ID}&id=${SEGMENT_ID}"
width="100%"
height="600px"
frameborder="0"
></iframe>
最佳实践与配置建议
安全性配置
<!-- 推荐的安全配置 -->
<iframe
src="..."
width="100%"
height="100%"
frameborder="0"
sandbox="allow-same-origin allow-scripts allow-forms allow-popups"
referrerpolicy="strict-origin-when-cross-origin"
></iframe>
响应式设计
.embedded-container {
position: relative;
width: 100%;
height: 0;
padding-bottom: 75%; /* 根据组件类型调整比例 */
}
.embedded-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
错误处理机制
// 监听iframe加载错误
const iframe = document.querySelector('iframe');
iframe.addEventListener('load', function() {
console.log('Dittofeed组件加载完成');
});
iframe.addEventListener('error', function() {
console.error('Dittofeed组件加载失败');
// 显示错误提示或重试机制
});
性能优化策略
懒加载实现
<iframe
loading="lazy"
src="..."
width="100%"
height="600px"
frameborder="0"
></iframe>
预连接优化
<!-- 在head中添加预连接 -->
<link rel="preconnect" href="https://app.dittofeed.com">
<link rel="dns-prefetch" href="https://app.dittofeed.com">
常见问题排查
认证问题
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 空白页面 | 令牌过期 | 重新获取会话令牌 |
| 403错误 | 权限不足 | 检查API密钥权限 |
| 404错误 | 工作空间不存在 | 确认工作空间ID正确 |
网络问题
// 网络状态监测
function checkDittofeedAvailability() {
fetch('https://app.dittofeed.com/health')
.then(response => {
if (!response.ok) {
showFallbackUI();
}
})
.catch(() => {
showFallbackUI();
});
}
扩展功能集成
与现有用户系统集成
事件跟踪集成
// 在您的应用中触发Dittofeed事件
function trackUserEvent(userId, eventName, properties) {
fetch('https://api.dittofeed.com/v1/track', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa(writeKey + ':'),
'Content-Type': 'application/json'
},
body: JSON.stringify({
userId: userId,
event: eventName,
properties: properties
})
});
}
总结与展望
Dittofeed的iframe集成方案为SaaS应用提供了快速、安全的消息自动化能力集成路径。通过标准化的API接口和组件化设计,您可以在几天内为应用添加专业级的消息自动化功能。
关键优势:
- 🚀 快速上线:减少数月开发时间
- 🔒 安全保障:iframe提供天然隔离
- 📊 功能完整:获得全部Dittofeed功能
- 🎨 用户体验:保持应用整体一致性
随着消息自动化需求的不断增长,嵌入式集成将成为SaaS应用标准配置。Dittofeed持续优化嵌入式组件性能和用户体验,为开发者提供更强大的集成能力。
立即开始您的Dittofeed集成之旅,为应用用户提供更智能、更个性化的消息体验!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



