OpenReply多账号与团队工作区指南:3种角色权限与邀请链接配置详解
【免费下载链接】openreplyThe open-source Manychat alternative项目地址: https://gitcode.com/gh_mirrors/op/openreply
OpenReply 是一款开源的 Manychat 替代品,用于 Instagram 评论转私聊的 DM 自动化营销。除了自动回复评论、发送私信之外,它还内置了**团队工作区(Workspace)**功能:一个工作区可以连接多个 Instagram 账号,并邀请团队成员按 Owner、Admin、Member 三种角色分工协作。本指南面向新手,带你快速理解 OpenReply 多账号与团队协作机制,并掌握邀请链接的完整配置流程。
工作区是什么:首次登录自动创建
在 OpenReply 中,工作区是所有数据的归属单位:连接的 Instagram 账号、营销活动、私信记录、追踪链接和用量统计,都挂在当前工作区下。
好消息是:你什么都不用做。用户首次登录时,系统会自动为其创建一个工作区(默认命名为「xxx 的邮箱前缀's workspace」),并把该用户设为 Owner。这套逻辑见 lib/workspace.ts。
👉 简单记忆:一个人 = 一个自己的工作区;一个团队 = 共用一个工作区。
3种角色权限速查表:Owner / Admin / Member
工作区角色定义在数据库枚举WorkspaceRole中(prisma/schema.prisma),权限判断集中在 lib/workspace-access.ts。
| 能力 | Owner(所有者) | Admin(管理员) | Member(成员) | | :-- ||
|
| | 邀请新成员 / 生成邀请链接 | ✅ | ✅ | ❌ | | 修改成员角色 | ✅ | ✅ | ❌ | | 移除成员 / 撤销邀请 | ✅ | ✅ | ❌ | | 连接、断开 Instagram 账号 | ✅ | ✅ | ❌ | | 查看营销活动、收件箱、报表 | ✅ | ✅ | ✅ | | 发起计费类操作 | ✅ | ❌ | ❌ |
几个关键规则:
- Owner 身份不可更改:角色更新接口会直接拒绝修改 Owner(app/api/workspace/members/route.ts)。
- Admin 与 Member 之间可随时互换:由 Owner 或 Admin 发起,调用 app/api/workspace/members/route.ts 的 PATCH 接口完成。
- Owner 和当前登录者本人不能被移除,避免工作区失去控制权。
💡 配置建议:日常运营给 Member,需要管理账号和人员的给 Admin,Owner 只留给项目负责人。
多账号管理:连接多个 Instagram 账号
一个工作区可以连接任意多个 Instagram 专业账号,适合矩阵号运营和代理商(Agency)场景。
- 进入Settings(设置)页面,找到「Instagram Connection」区域;
- 点击Connect using your own Meta app,完成 Meta OAuth 授权;
- 连接成功后,账号列表会显示
@用户名、Token 到期时间、Webhook 订阅状态,可随时断开。
创建营销活动时,账号选择器会列出工作区下所有账号,还支持「All accounts(全部账号)」选项,一份活动可下发到多个 Instagram 账号:
- 账号列表接口:app/api/instagram/accounts/route.ts
- 选择器组件:components/account-select.tsx
注意:连接、断开账号属于管理权限,只有 Owner/Admin 可操作(lib/workspace-access.ts)。
邀请团队成员:3步生成邀请链接
只有 Owner 和 Admin 能看到并操作设置页底部的「Team」区块(app/(dashboard)/settings/page.tsx/settings/page.tsx#L298-L332))。
第 1 步:填写邮箱。在 Team 区块的输入框中填写对方注册邮箱,例如teammate@agency.com。
第 2 步:选择角色。下拉框只有两个选项:Member(默认)或Admin。出于安全考虑,系统不允许直接把新用户邀请为 Owner。
第 3 步:点击 Invite。邀请成功后,「Pending invites(待处理邀请)」列表会显示:对方邮箱、角色、以及一条可一键复制的邀请链接。
邀请链接的生成规则在 lib/workspace-invitations.ts:
- 链接格式为
/invite/{随机token},token 由 18 字节随机数生成,无法被猜测; - 有效期为 14 天(
INVITE_TTL_DAYS = 14),过期后需要重新邀请; - 对同一邮箱重复邀请时,系统会自动重置 token 和有效期,旧链接随即失效——不用担心旧链接被误用。
邀请链接的生效规则:新手最容易踩的 3 个坑
邀请链接的校验逻辑在 app/api/workspace/invitations/accept/route.ts 和 app/invite/[token]/page.tsx:
坑 1:必须用被邀请的邮箱登录
打开邀请链接时,系统会校验当前登录账号的邮箱是否与邀请邮箱一致,不一致会提示 "This invitation is for a different email"。也就是说:链接不是"谁点开谁加入",而是"指定邮箱才能加入"。
坑 2:已注册用户会"秒生效",不用点链接
如果你邀请的邮箱已经注册过OpenReply,系统会直接把他加进工作区(upsert 成员记录),无需再打开链接(app/api/workspace/members/route.ts)。只有全新用户才需要点链接完成加入。
坑 3:首次登录自动接受未过期的邀请
即使没主动点链接,被邀请用户用该邮箱首次登录时,所有未过期的待处理邀请会自动生效,直接成为工作区成员(lib/workspace.ts)。
此外,Owner/Admin 可以撤销邀请(Revoke),状态置为 REVOKED,链接立即作废;过期的邀请则自动标记为 EXPIRED。
受邀人视角:接受邀请链接的完整流程
- 收到链接(形如
https://你的域名/invite/xxxxxx),先打开并登录/注册 OpenReply; - 页面显示「Join {工作区名称}」卡片,说明受邀角色与邮箱;
- 点击接受后,成员记录与工作区角色一并写入,邀请状态变为 ACCEPTED;
- 之后访问系统即默认进入该工作区,可看到团队的全部 Instagram 账号与活动(Member 仅查看运营,Admin/Owner 可管理)。
⚠️ 如果页面显示邀请已过期,请让工作区 Owner 重新发送一条新的邀请链接。
常见问题速答
Q:Member 能看到别的成员吗?A:可以。成员列表对全体工作区成员可见,只是 Member 没有邀请、改角色、移除的权限。
Q:一个人能属于多个工作区吗?A:目前系统按"最早加入"的工作区作为主工作区返回(lib/workspace-access.ts),日常使用一个团队一个工作区即可。
Q:断开 Instagram 账号会影响团队吗?A:会。断开后该账号下的活动停止发送私信,请确保操作者了解这一影响(设置页会二次确认)。
Q:用量有限制吗?A:OpenReply 自托管版本无套餐限制,每月发送私信数在设置页「Usage」区块实时展示。
小结
| 场景 | 操作入口 | 所需角色 |
|---|---|---|
| 连接多个 Instagram 账号 | Settings → Instagram Connection | Owner / Admin |
| 邀请成员并生成链接 | Settings → Team | Owner / Admin |
| 修改成员角色 / 撤销邀请 | Settings → Team | Owner / Admin |
| 接受邀请链接 | /invite/{token} 页面 | 受邀人本人 |
想深入了解角色与成员的数据模型,可参考 prisma/migrations/20260524151500_agency_workspaces/ 迁移文件和 AGENTS.md;本地部署步骤见 docs/setup.md。
现在你可以打开 Settings 页面,为你的 Instagram 矩阵搭起第一个协作工作区了 🚀
【免费下载链接】openreplyThe open-source Manychat alternative项目地址: https://gitcode.com/gh_mirrors/op/openreply
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考