SocialHub.AI
开发者中心 · REST API

自定义:字段和模块

Flash 针对每个品牌提供两种定制方式,均基于同一共享代码库,绝非分支。自定义字段 允许您将自己的数据添加到会员记录中,并通过 v2 REST API 进行设置。模块 是每个工作区可选的功能,由服务器强制执行。本指南涵盖以上所有内容。

第 1 步 — 定义字段(应用内)

字段在设置之前先声明

所有者或管理员可在 设置 → 自定义字段 下创建字段。每个字段都有一个 `key`(其机器名称,例如 `cf_membership_no`)、一个 `type`,以及(对于选择类型)一个选项列表。键和类型一旦创建就固定不变。`API` 从不创建字段;它只为已存在的字段设置值,并拒绝未知键——定义表即为允许列表。

步骤 2 — 通过 API 设置值

创建或更新时传递 customAttributes

POST /api/v2/members(创建)和 PATCH /api/v2/members/{id}(更新)都接受以您的字段键为键的 customAttributes object。使用具有 members:write 权限范围的 Bearer fl_live_ 密钥进行身份验证。

curl -X POST https://flash.socialhub.ai/api/v2/members \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "ada@example.com",
    "fullName": "Ada Lovelace",
    "customAttributes": {
      "cf_membership_no": "A-10023",
      "cf_preferred_store": "flagship",
      "cf_child_birthday": "2018-05-01"
    }
  }'

更新时,仅发送您想要更改的密钥。将密钥设置为 null 会将其清除。

curl -X PATCH https://flash.socialhub.ai/api/v2/members/{id} \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "customAttributes": { "cf_preferred_store": "airport" } }'
按类型划分的价值结构

每种字段类型接受的内容

类型JSON 值示例接受
text"A-10023"细绳
number42number(或数字 string)
date"2018-05-01"ISO 日期 (YYYY-MM-DD)
booleantrue真/假
enum"flagship"该领域的选择之一
list["running","tennis"]字段选项的子集

验证是严格的:值必须与其字段的类型匹配,enum/list值必须是定义的选项之一,并且400拒绝未知的键。尚不接受敏感个人数据 (PII) 字段 - 将自定义属性保留为非敏感业务值。

下游功能

平台统一使用单一值

细分市场

使用类型合适的运算符,按任意自定义字段筛选成员——该字段与您在 API 中设置的字段相同。

电子邮件个性化

在副本中引用该值,格式为 {{cf_membership_no}} 或 {{member.cf_membership_no}}。

会员阅读

在 customAttributes 下,会员 object 返回自定义值。

② 模块

可选功能,可按工作区启用

自定义字段添加一个 值,而模块则添加一整套 功能 — 例如服务工单模块、预约模块或维修日志模块。模块默认关闭,并根据工作区启用。每个工作区运行相同的代码库;模块的启用或禁用状态属于数据(一种权限),而非私有构建。

门控机制的工作原理

由服务器在一处强制执行

每个模块都有一个稳定的密钥(例如 tickets)。工作区是否可以使用此功能由每个工作区单独设置一个开关,在一个判断点进行检查,并应用于模块出现的所有位置——失败关闭:如果开关未开启,则该功能不可用。

API

禁用模块的端点拒绝使用 403 的调用。仅在 UI 中访问绝不是偶然的。

导航和页面

模块的菜单项和页面仅在工作区启用时才会显示,并在禁用时干净地消失。

租户隔离

权限按工作区划分。一个品牌的模块和数据对其他品牌完全不可见。

无需分叉即可扩展

如何引入新模块

当一个功能真正可重用时,它会作为一个模块构建一次 - 在其密钥下的模块目录中注册,具有自己的数据、自己的权利门控 API 和自己的页面。第一个需要它的工作区就会被构建;接下来只需扳动开关即可。这是该模型的核心:客户差异表示为设置,因此一次升级或修复会立即到达每个工作区。

  1. 该模块使用稳定的密钥和描述在目录中注册。
  2. 其数据和 API 路由均基于该密钥进行访问控制(故障关闭)。
  3. 其导航和页面仅在启用密钥后显示。
  4. 所有者为工作区启用此功能;第二个工作区是切换,而不是重建。
模块管理

打开或关闭模块

工作区所有者通过设置→模块管理模块。每个切换都会立即在 API 和 UI 中生效。

决策规则: 首先使用配置;需要存储值时,添加 自定义字段;当某个功能真正可复用时,才构建模块——切勿为了单个客户而对产品进行分支。

需要一种全新的记录,而不仅仅是一个额外的字段?请参阅自定义对象 — 构建您自己的无代码业务对象,然后浏览记录并对其进行分段。要使堆栈的其余部分保持同步,请参阅连接器和通知。