如何将 thingsboard 用户注册扩展到 phone 基于数字的用户注册?

How to extend thingsboard user registration to phone number based user registration?

我正在尝试为 thingsboard 用户实施 phone 基于数字的用户注册。

这是我尝试过的:

1) 为给定的 phone 号码创建一个电子邮件用户。例如:PHONE_NUMBER@mydomain.com 在 thingsboard 中通过 REST API 调用。

2) 创建一个自定义 REST api 以启用此用户并设置密码(由用户与 phone 号码一起输入)

现在我不确定在 thingsboard 规则链中的什么地方调用这个 api,以便正确激活注册用户。

我以为是 Root 规则链中的 "Other" link,但这似乎不是正确的位置。当我在那里放置一个 "rest api call" 节点时,没有任何反应。

有人可以指导我正确的方向吗? 我是否遵循了在 thingsboard 中实施基于 phone 的身份验证的最佳途径?

您要查找的消息类型是 REST_API_REQUEST

请注意,每次对规则引擎 REST 服务进行 REST API 调用时都会生成此消息:

http://host:port/api/rule-engine/
http://host:port/api/rule-engine/{entityType}/{entityId}

因此,您可以尝试将您的登录信息 phone/password 包含在您的自定义请求正文中,同时添加一个新变量,如下所示:

请求正文:

{
    username: '5778254@phone.com',
    password: 'adminadmin',
    loginType: 'phoneLogin' //or emailLogin'
}

然后让 Switch 节点将您的消息抓取到自定义规则链 -> 仅过滤包含 'loginType' 字段的消息 -> 执行 REST API 调用登录并正确转换用户名。

注意:例如,如果您想要让用户 A:email="usera@mail.com" 和 phone:“123456”能够通过以下方式登录到 TB:

 Login: phone + password
Login: email + password

然后你需要保留一个单独的数据库来查找与输入的 phone 号码匹配的电子邮件,然后使用电子邮件登录。 您必须让您的自定义休息服务具有规则链:通过 REST API 使用有效帐户登录 TB,接收 JWT_TOKEN-> 使用 REST API 与此 JWT_TOKEN 从组中检索您也想提供此功能的所有用户 -> 遍历用户,直到找到与 Phone 号码匹配的用户 -> return 来自找到客户端应用程序的用户 -> 让客户端应用程序使用用户名登录。因此,用户永远不会知道他实际上是在使用电子邮件登录。

希望对您有所帮助。

编辑:修正了一个错误。 REST_API_REQUEST 消息只会在规则引擎的 REST 服务上生成,而不是在每个 REST 请求上生成。