# 会议 Electron SDK API 参考 (/zh-CN/api-reference/meeting/electron)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

本文介绍智能云会议为 Electron 框架提供的 TypeScript API 参考。

<a id="fcruiscenecreator"></a>
## FcrUISceneCreator [#fcruiscenecreator]

场景创建者对象。该类用于创建会议场景（`FcrUIDefaultScene`）。

### 构造函数 [#构造函数]

```typescript
constructor(_config: FcrUISceneCreatorConfig);
```

构造函数用于创建 `FcrUISceneCreator` 类的实例，并初始化配置（[FcrUISceneCreatorConfig](#fcruiscenecreatorconfig)）。

<a id="launch"></a>
### launch [#launch]

```typescript
launch(
  config: FcrUISceneConfig,
  onCancel: FcrUISceneCancelCallback,
  onSuccess: FcrUISceneSuccessCallback,
  onFailure: FcrUISceneFailureCallback,
  dom: HTMLElement,
): FcrUIDefaultScene;
```

启动场景。

**参数**

- `config`：场景配置。详见 [FcrUISceneConfig](#fcruisceneconfig)。
- `onCancel`：用于处理启动取消操作。设备检测时，如果取消加入会议房间，会触发该回调。
- `onSuccess`：场景成功启动时触发的回调。
- `onFailure`：场景启动失败时触发的回调。
- `dom`：场景启动的交互节点，用于渲染场景的 DOM 元素。

**返回值**

返回一个 `FcrUIDefaultScene` 对象，代表已启动的场景。

<a id="fcruidefaultscene"></a>
## FcrUIDefaultScene [#fcruidefaultscene]

场景类，用于展示和管理交互页面。

### 构造函数 [#构造函数-1]

```typescript
constructor(_config: FcrUISceneConfig, _creatorConfig: FcrUISceneCreatorConfig, _dom: HTMLElement);
```

构造函数用于创建 `FcrUIDefaultScene` 类的实例，并初始化场景的配置（[FcrUISceneConfig](#fcruisceneconfig)）、创建配置（[FcrUISceneCreatorConfig](#fcruiscenecreatorconfig)）和 DOM 元素。

<a id="exit"></a>
### exit [#exit]

```typescript
exit(): void;
```

退出场景，并释放 `FcrUIDefaultScene` 对象和该对象持有的资源。

调用该方法会触发 [onExited](#onexited) 回调。

<a id="addobserver"></a>
### addObserver [#addobserver]

```typescript
addObserver(observer: FcrUISceneObserver): void;
```

添加场景观察者。

**参数**

- `observer`：场景观察者对象。详见 [FcrUISceneObserver](#fcruisceneobserver)。

<a id="removeobserver"></a>
### removeObserver [#removeobserver]

```typescript
removeObserver(observer: FcrUISceneObserver): void;
```

移除场景观察者。

**参数**

- `observer`：场景观察者对象。详见 [FcrUISceneObserver](#fcruisceneobserver)。

<a id="fcruisceneobserver"></a>
## FcrUISceneObserver [#fcruisceneobserver]

场景观察者对象，可用于监听场景内的回调事件。

<a id="onexited"></a>
### onExited [#onexited]

```typescript
onExited?(roomId: string, reason: FcrUIExitReason): void;
```

退出场景回调。

成功加入场景后，退出场景时，会触发该回调。

**参数**

- `roomId`：对应的会议房间 ID。
- `reason`：退出理由。详见 [FcrUIExitReason](#fcruiexitreason)。

<a id="onlaunchsuccess"></a>
### onLaunchSuccess [#onlaunchsuccess]

```typescript
onLaunchSuccess?(roomId: string): void;
```

进入场景成功回调。

**参数**

- `roomId`：对应的会议房间 ID。

<a id="onlaunchfailure"></a>
### onLaunchFailure [#onlaunchfailure]

```typescript
onLaunchFailure?(roomId: string, error: FcrError): void;
```

进入场景失败回调。

**参数**

- `roomId`：对应的会议房间 ID。
- `error`：进入场景失败的原因，通过 `FcrError` 报告给你。`FcrError` 包含如下字段：
    - `code`：Int16 类型，错误码。
    - `message`：String 类型，详细的错误原因。

<a id="fcruiscenecreatorconfig"></a>
## 类型定义 [#类型定义]
### FcrUISceneCreatorConfig [#fcruiscenecreatorconfig]

```typescript
interface FcrUISceneCreatorConfig {
  appId: string;
  userId: string;
  parameters?: Record<string, unknown>;
}
```

`FcrUISceneCreator` 的配置。

**参数**

- `appId`：项目的 App ID。详见[获取 App ID](/zh-CN/realtime-media/meeting/build/enable-service#获取-app-id)。
- `userId`：用户 ID，是用户的**唯一标识符**。如果用户 ID 重复，会收到 [onExited](#onexited) 回调且报告退出原因为 `ABORTED(4)`。长度在 64 字符以内。支持的字符集范围（共 36 个字符）：
    - 26 个小写英文字母 a-z
    - 10 个数字 0-9
- `parameters`：私有参数。

<a id="fcruisceneconfig"></a>
### FcrUISceneConfig [#fcruisceneconfig]

```typescript
interface FcrUISceneConfig {
  roomId: string;
  roomToken: string;
  userName: string;
  userRole: FcrUIUserRole;
  userProperties?: Record<string, unknown>;
  resource?: FcrUIResource;
  inviteLink: string;
}
```

`FcrUIScene` 的配置。

**参数**

- `roomId`：会议房间 ID。一般情况，长度在 64 字符以内；如果房间需要使用页面录制，长度在 50 字符以内。支持的字符集范围（共 88 个字符，空格不支持）：
    - 26 个小写英文字母 a-z
    - 26 个大写英文字母 A-Z
    - 10 个数字 0-9
    - "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"&lt;"、"="、"."、"&gt;"、"?"、"@"、"["、"]"、"^"、"_"、"&#123;"、"&#125;"、"|"、"~"、","
- `roomToken`：用于鉴权的 Token。详见[控制台生成临时 Token](/zh-CN/realtime-media/meeting/build/enable-service#生成临时-token) 或[服务端生成正式 Token](/zh-CN/realtime-media/meeting/build/generate-token)。

    :::warning[注意]
    临时 Token 仅适用于集成测试和体验。在生产环境中，请使用正式 Token 以确保安全。无论是临时 Token 还是正式 Token，有效期最长都是 24 小时，请尽快使用。
    :::

- `userName`：房间内显示的用户名。长度在 64 字符以内。无字符集限制。
- `userRole`：房间内用户角色。详见 [FcrUserRole](/zh-CN/api-reference/meeting/client-api#fcruserrole)。
- `inviteLink`：房间链接。用于邀请用户加入会议房间的链接。
- `userProperties`：（可选）房间内用户属性。通过将键值对传入该字段，你可以设置用户属性，作为用户标签。
- `resource`：（可选）房间内资源文件。详见 [FcrUIResource](#fcruiresource)。通过修改该字段取值，你可以修改资源文件的链接。

<a id="fcruiresource"></a>
### FcrUIResource [#fcruiresource]

```typescript
interface FcrUIResource {
  virtualBackgroundImages?: string[];
  virtualBackgroundVideos?: string[];
}
```

房间内资源文件，可用于设置虚拟背景图片和视频。

**参数**

- `virtualBackgroundImages`：虚拟背景图片 URL。支持以数组形式传入多个 URL，URL 可以是 HTTPS 在线地址或本地文件地址。
- `virtualBackgroundVideos`：虚拟背景视频 URL。支持以数组形式传入多个 URL，URL 可以是 HTTPS 在线地址或本地文件地址。

<a id="fcruiexitreason"></a>
### FcrUIExitReason [#fcruiexitreason]

退出房间的原因。

包含如下枚举值：

- `LEAVE_ROOM(1)`：因用户自己离开房间而退出。
- `CLOSE_ROOM(2)`：因房间关闭而退出。
- `KICKED_OUT(3)`：因用户被被踢出房间而退出。
- `ABORTED(4)`：异常原因。使用重复的用户 ID 时会收到该原因。

<a id="fcruiuserrole"></a>
### FcrUIUserRole [#fcruiuserrole]

房间内用户角色。

包含如下枚举值：

- `HOST(1)`：主持人。
- `COHOST(2)`：助理主持人。
- `PARTICIPANT(3)`：参会人。即，除主持人和助理主持人外的所有用户。
