跳到主要内容

辅助 SDK 开发者文档

更新时间 2025/01/04 10:00:24

简介

辅助 SDK 是我们提供的一个基于 websocket 的业务服务 SDK,它是一个轻量级的工具,与画布 SDK 相互独立运行。 我们可以通过该服务基于同一个 websocket 连接发起复数不同的业务形式。 通过辅助 SDK,开发者可以方便地使用我们提供的业务服务,增强应用程序的实时交互能力。

类似于画布 Web SDK,我们同时为辅助 SDK 提供了前端 JS SDK,与服务端 REST 能力。如需查看 API 文档,请移步 SDK API 文档, 或 REST API 文档

当前我们已经支持基于辅助 SDK 发起签到类型业务,我们有规划后续拓展出IM (Instant Message)等业务,敬请期待!

前置动作

如果您希望使用我们的辅助 SDK,您首先需在控制台内,打开您的应用配置页面,并开启辅助 SDK 能力,图示如下:

开启辅助 SDK 能力

工作模式

辅助 SDK 基于 websocket 机制进行工作,当您完成辅助 SDK 的初始化工作后,您的 Web App 会自动连接至我们的服务器并加入您指定的业务频道中。

注:英飞辅助 SDK 业务下,业务频道的 ID 会统一使用 channelId 进行标记。

连接至同一业务频道的 Web 客户端会共享 websocket 链路内发送的业务信令,进而支持复杂交互的业务子服务,例如进行签到活动

集成方式

请您按照下述步骤完成辅助 SDK 的集成与使用。

准备鉴权 Token

在正式使用辅助 SDK 前,您需要优先了解鉴权 Token 的作用与生成机制。为确保辅助 SDK 业务使用的正当性, 我们需要基于 Token 鉴权机制完成对用户身份的验证。为生成一个合规的鉴权 Token,您提供如下信息:

  • appIdappSecret:该信息可以在我们的管理台应用中获取。
  • channelId:即业务频道 ID,该 ID 需要您自行指定,可以为任意字符串,不同 appId 下的相同业务频道 ID 相互隔离。 您不需要事先创建业务频道,业务频道也不会被销毁。加入相同业务频道的辅助 SDK 客户端会自动共享数据。如您计划将辅助 SDK 与画布 SDK 结合使用, 您可以考虑将 channelId 与画布的 recordId 保持一致。
  • loginName:即辅助 SDK 用户的 userId,您应当尽量为不同的用户提供不同的 loginName 接入我们的业务频道,以避免产生业务困扰。
  • userType:接入业务频道的用户身份,分为 hostguest 两种,当前这二者在辅助 SDK 业务内尚未有明显区别,
  • expire:Token 过期时间戳,单位为毫秒。例如:希望过期时间为 2025-01-01 00:00:00,则 expire 字段应设置为 1735660800000。

为方便您生成该 Token,我们提供了生成 Token 的代码示例供您参考,现包括 golangJavaNode 示例。

请注意,本文描述的鉴权 token 与画布 WebSDK 初始化 Token,及画布 REST 服务 AccessToken 在使用场景及生成方式上均有不同,请注意区分并避免混用。

引入 CDN 脚本资源

辅助 SDK 资源链接为:

您可以直接在 HTML 文件中引用我们的 CDN 资源,示例如下:

<script src="https://cdn-plaso-school.plaso.cn/infi/www/static/accessory-sdk/1.0.0/umd/index.js"></script>

注:我们不承诺 CDN 服务的稳定性,建议您自行下载 JS 文件并关联至应用中。

除了 umd 标准的 JS 脚本外,我们还提供了类型声明文件 来为您的开发提供便利,使用模式如下:

// 下载 d.ts 文件,并放置于您的 typescript 项目中,假定文件被命名且存放于跟目录下 infi.d.ts
// 下载地址为:https://cdn-plaso-school.plaso.cn/infi/www/static/accessory-sdk/1.0.0/umd/index.d.ts

// 在您的全局类型声明文件内,你可以通过这种方式对辅助 SDK 对象添加类型定义
interface Window {
InfiAccessorySdk: import('./infi').InfiAccessorySdkInterface;
}

加入业务频道

引入后,您可以在 JavaScript 代码中通过 window.InfiAccessorySDK 访问 SDK,并加入业务频道。示例如下:

const sdk = window.InfiAccessorySDK;
// 创建服务客户端并加入业务频道
const result = await sdk.createClient({
// 您需要自行生成该 token
token: 'token',
channelId: 'channelId',
loginName: 'loginName',
});
if (result.code === 0) {
sdkClient = result.payload;
console.log('SDK Client created:', sdkClient);
} else if (result.code === 4) {
console.error('SDK Client already initialized');
} else {
console.error('Error creating SDK Client:', result.code);
}

请确保将示例中的 tokenchannel 等重要参数替换为实际有效的数值。 创建成功我们就可以使用 SDK Client 来获取业务子服务的实例,这里以签到子服务为例:

if (sdkClient) {
const { code, payload } = sdkClient.getSignInClient();
signInClient = payload;
console.log('Creating SignIn client:', code, payload);
} else {
console.error('SDK Client not initialized');
}

事件监听

我们为辅助 SDK 设计了事件系统,顶层和每个业务子服务都有比较完善的事件回调,你可以使用 SDK client 实例上的 on 方法开监听事件

sdkClient.on('CONNECTING', data => {
console.log('websocket connecting', data);
});
sdkClient.on('RECONNECTED', data => {
console.log('websocket reconnected', data);
});
sdkClient.on('ERROR', data => {
console.log('init error', data);
});

SDK Client 事件列表:

事件名
描述
CONNECTING
辅助 SDK websocket 连接中
RECONNECTED
辅助 SDK websocket 连接/重连成功
ERROR
错误监听

错误码

code
描述
-1
SDK 内部错误通用错误码
0
成功
1
App 已经被禁用
2
请求超时
3
SDK client 已经被禁用
4
创建 SDK client参数错误
5
重复创建 SDK client
6
SDK client 未创建成功
100
创建签到参数校验失败
101
业务频道内已有签到活动
102
当前业务频道内没有签到活动
103
签到动作执行间隔过短
104
重复签到

demo 示例

为方便您理解辅助 SDK 的使用模式,我们提供了 demo 代码 供您参考。 您仅需下载 accessorySDK 目录下的资源,并于浏览器中执行 index.html 即可。