diff --git a/dita/flexible-classroom/edu-context/API/api_onaudiorawdatabeforemixed.dita b/dita/flexible-classroom/edu-context/API/api_onaudiorawdatabeforemixed.dita new file mode 100644 index 00000000000..eb264f55169 --- /dev/null +++ b/dita/flexible-classroom/edu-context/API/api_onaudiorawdatabeforemixed.dita @@ -0,0 +1,41 @@ + + + + + 收到远端多路音频流,在将多路音频流合为一路音频流前抛出的音频数据。 + + + + + + + + + + + fun onAudioRawDataBeforeMixed(data: FcrAudioRawData) + FrcAudioRawData onAudioRawDataBeforeMixed(FrcAudioRawData data) + + + + + SDK 只能抛出采样率为 48K,双声道的数据。 + + + 参数 + + + data + 音频数据,详见 。 + + + streamUuid + 流 ID。 + + + roomUuid + 房间 ID。 + + + + diff --git a/dita/flexible-classroom/edu-context/API/api_onaudiorawdatamixed.dita b/dita/flexible-classroom/edu-context/API/api_onaudiorawdatamixed.dita new file mode 100644 index 00000000000..d7619d4b3a5 --- /dev/null +++ b/dita/flexible-classroom/edu-context/API/api_onaudiorawdatamixed.dita @@ -0,0 +1,36 @@ + + + + + 收到远端多路音频流,在将多路音频流合为一路音频流前抛出的音频数据。 + + + + + + + + + + + fun onAudioRawDataMixed(data: FcrAudioRawData) + FrcAudioRawData onAudioRawDataMixed(FrcAudioRawData data) + + + + + SDK 只能抛出单声道数据,采样率可通过 控制。 + 参数 + + + data + 音频数据,详见 。 + + + + + 返回值 + 音频数据,详见 。 + + + diff --git a/dita/flexible-classroom/edu-context/API/enum_audiorawdataposition.dita b/dita/flexible-classroom/edu-context/API/enum_audiorawdataposition.dita index 0dbf5b101b4..76f60291ad1 100644 --- a/dita/flexible-classroom/edu-context/API/enum_audiorawdataposition.dita +++ b/dita/flexible-classroom/edu-context/API/enum_audiorawdataposition.dita @@ -9,7 +9,15 @@ record - 录制后 + 2:录制后 + + + beforeMixed + 8:多条远端音频流被混合成一路音频流前 + + + mixed + 4:所有远端与本地音频流都已混合成一路音频流 diff --git a/dita/flexible-classroom/edu-context/Edu_Context_API_Android.ditamap b/dita/flexible-classroom/edu-context/Edu_Context_API_Android.ditamap index 919fee8feef..beb40256bd3 100644 --- a/dita/flexible-classroom/edu-context/Edu_Context_API_Android.ditamap +++ b/dita/flexible-classroom/edu-context/Edu_Context_API_Android.ditamap @@ -31,6 +31,7 @@ + @@ -42,6 +43,8 @@ + + @@ -149,6 +152,7 @@ + diff --git a/dita/flexible-classroom/edu-context/Edu_Context_API_iOS.ditamap b/dita/flexible-classroom/edu-context/Edu_Context_API_iOS.ditamap index 0d21019196e..03a583eee92 100644 --- a/dita/flexible-classroom/edu-context/Edu_Context_API_iOS.ditamap +++ b/dita/flexible-classroom/edu-context/Edu_Context_API_iOS.ditamap @@ -47,6 +47,8 @@ + + diff --git a/dita/flexible-classroom/edu-context/config/keys-edu-context-api-kotlin.ditamap b/dita/flexible-classroom/edu-context/config/keys-edu-context-api-kotlin.ditamap index af51029c566..9fc0b97a5fe 100644 --- a/dita/flexible-classroom/edu-context/config/keys-edu-context-api-kotlin.ditamap +++ b/dita/flexible-classroom/edu-context/config/keys-edu-context-api-kotlin.ditamap @@ -244,6 +244,13 @@ + + + + setAudioRawDataConfig + + + @@ -547,6 +554,20 @@ + + + + onAudioRawDataBeforeMixed + + + + + + + onAudioRawDataMixed + + + @@ -870,6 +891,13 @@ + + + + FcrAudioRawDataPosition + + + diff --git a/dita/flexible-classroom/edu-context/config/keys-edu-context-api-swift.ditamap b/dita/flexible-classroom/edu-context/config/keys-edu-context-api-swift.ditamap index 7c14cd95c09..0ec569a4c42 100644 --- a/dita/flexible-classroom/edu-context/config/keys-edu-context-api-swift.ditamap +++ b/dita/flexible-classroom/edu-context/config/keys-edu-context-api-swift.ditamap @@ -761,6 +761,20 @@ + + + + onAudioRawDataBeforeMixed + + + + + + + onAudioRawDataMixed + + + diff --git a/markdown/Flexible-Classroom/api_ref/restful_api_ref/agora_class_restful_api.md b/markdown/Flexible-Classroom/api_ref/restful_api_ref/agora_class_restful_api.md index 59e0720ac10..4ea6c0420f9 100644 --- a/markdown/Flexible-Classroom/api_ref/restful_api_ref/agora_class_restful_api.md +++ b/markdown/Flexible-Classroom/api_ref/restful_api_ref/agora_class_restful_api.md @@ -7,7 +7,7 @@ 所有请求都发送给域名:api.agora.io。 -为保障 REST 服务的高可用,避免因区域网络故障造成的服务不可用,声网提供切换域名的方案,详情请参考[切换域名](/cn/Real-time-Messaging/rtm_integration_bp?platform=RESTful#切换域名) +为保障 REST 服务的高可用,避免因区域网络故障造成的服务不可用,声网提供切换域名的方案,详情请参考[切换域名](/cn/Real-time-Messaging/rtm_integration_bp?platform=RESTful#切换域名)。 ### 数据格式 @@ -20,7 +20,7 @@ - 服务端生成的 RTM Token。 - 生成 RTM Token 时使用的 uid。 -具体生成 RTM Token 的方法请参考[生成 RTM Token](/cn/Real-time-Messaging/token_server_rtm) 文档。 +具体生成 RTM Token 的方法请参考[生成 RTM Token](/cn/Real-time-Messaging/token_upgrade_rtm) 文档。 ### 区域 @@ -127,7 +127,7 @@ | `roomProperties.schedule` | Object | 非必填 | 课程计划,包含开始时间,持续时长,拖堂时长等属性。 | | `roomProperties.schedule.startTime` | Integer | 非必填 | 课堂开始时间戳,单位为毫秒。该字段不可更新。 | | `roomProperties.schedule.duration` | Integer | 非必填 | 课堂持续时长,单位为秒。如果你设置了课堂持续时长和拖堂时长,当开启录制时,会按照二者之和向上取整设置最长录制时间 `maxRecordingHour` 参数。详见[设置录制状态](#设置录制状态)的 `maxRecordingHour` 参数说明。 | -| `roomProperties.schedule.closeDelay` | Integer | 非必填 | 拖堂时长,单位为秒。当课堂持续时长结束后,课程会进入“关闭”状态(`state`= 2,即拖堂状态),此时用户仍可以正常进入和逗留在教室。当拖堂时间结束时,课堂会关闭,并踢出所有用户。 | +| `roomProperties.schedule.closeDelay` | Integer | 非必填 | 拖堂时长,单位为秒。当课堂持续时长结束后,课程会进入“结束”状态(`state`= 2),此时用户仍可以正常进入和逗留在教室。当拖堂时间结束时,课堂会进入“关闭”状态(`state`= 3),并踢出所有用户。 | | `roomProperties.processes` | Object | 非必填 | 申请邀请流程,包含举手等功能。 | | `roomProperties.processes.handsUp` | Object | 非必填 | 上台设置,包含上台人数上限等。 | | `roomProperties.processes.handsUp.maxAccept` | Integer | 非必填 | 上台人数上限。 | @@ -178,6 +178,59 @@ curl -X POST 'https://api.agora.io/{region}/edu/apps/{yourAppId}/v2/rooms/test_c ``` +### 查询课堂 + +#### 接口描述 + +返回房间对象所有信息。 + +#### 接口原型 + +- 方法:GET +- 接入点:/{region}/edu/apps/{appId}/v2/rooms/{roomUuid} + +#### 请求参数 + +**URL 参数** + +| 参数 | 类型 | 是否必填 | 描述 | +| :--------- | :----- |:-----| :----------------------------------------------------------- | +| `region` | String | 必填 | 服务区域,为公共参数,详见[区域](#区域)。 | +| `appId` | String | 必填 | 声网 App ID,为公共参数,详见[其他业务参数](#其他业务参数)。 | +| `roomUuid` | String | 必填 | 课堂 uuid,为公共参数,详见[其他业务参数](#其他业务参数)。 | + + +#### 请求示例 + +```json +curl -X GET 'https://api.agora.io/{region}/edu/apps/{yourAppId}/v2/rooms/test_class' \ +-H 'Content-Type: application/json;charset=UTF-8' \ +-H 'x-agora-uid: {uid}' \ +-H 'x-agora-uid: {rtmToken}' +``` + +#### 响应参数 + +| 参数 | 类型 | 描述 | +| :----- | :------ |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `code` | Integer | 响应状态码,详见[公共响应参数](#公共响应参数)。 | +| `msg` | String | 接口响应文字信息,详见[公共响应参数](#公共响应参数)。 | +| `ts` | Number | 当前服务端的 Unix 时间戳,详见[公共响应参数](#公共响应参数)。 | +| `data` | Object | 返回数据,为[公共响应参数](#公共响应参数)。包含以下数据:`roomUuid`: String 型,房间ID。`roomName`: String 型,房间名。 `createTime`: Integer 型,创建房间时间戳。 `roomProperties`: Object 型,房间属性。 `roomType`: Integer 型,房间类型。 `0`: 1v1。 `2`: 大班课。 `4`: 小班课。 `schedule`: Object 型,课程计划。 `state`: Integer 型,房间状态。`0`: 未开始。`1`: 开始。`2`: 结束。`3`: 关闭。 `startTime`: Integer 型,开始时间。 `endTime`: Integer 型,结束时间。 `closeTime`: Integer 型,关闭时间。 `widgets`: Object 型,组件集合。 `netlessBoard`: Object 型,白板组件。 `extra`: Object 型,扩展信息。 `boardAppId`: String型,白板AppId。`boardId`: String型,白板房间Id。`boardToken`: String型,白板房间Token。`boardRegion`: String型,白板区域。 `state`: Integer型,组件状态。 `0`: Integer型,未激活。`1`: Integer型,激活。 `easemobIM`: Object 型,聊天室组件。 `extra`: Object 型,扩展信息。 `orgName`: String型,组织名。`appName`: String型,app名。`chatRoomId`: String型,聊天室id。`appKey`: String型,appKey。 `state`: Integer型,组件状态。 `0`: Integer型,未激活。`1`: Integer型,激活。 | + + +#### 响应示例 + +```json +{ + "msg": "Success", + "code": 0, + "ts": 1610167740309 +} +``` + + + ### 设置课堂状态 #### 接口描述 @@ -644,7 +697,7 @@ curl -X DELETE 'https://api.agora.io/{region}/edu/apps/{yourAppId}/v2/rooms/test | 参数 | 类型 | 是否必填 | 描述 | | :------ | :----- | :----- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `dirty` | Object | 非必填 | 用户踢人标记,包含以下字段:`state`: Integer 型,踢人状态:`1`: 被踢,无法进入课堂。 `0`: 未被踢,可以进入课堂。`duration`: Number 型,临时踢人持续时间,单位为秒,从被踢出时开始计时。当被踢持续时长结束后,用户自动恢复为未被踢状态。若不传duration,则永久踢出。 | +| `dirty` | Object | 非必填 | 用户踢人标记,包含以下字段:`state`: Integer 型,踢人状态:`1`: 被踢,无法进入课堂。 `0`: 未被踢,可以进入课堂。`duration`: Number 型,临时踢人持续时间,单位为秒。该字段仅在 `state` 为 `1` 时生效。从被踢出时开始计时,过了 `duration` 设置的时长后,用户自动恢复为未被踢状态。若不传该参数,则用户被永久踢出。 | #### 请求示例 @@ -708,10 +761,10 @@ curl -X POST 'https://api.agora.io/{region}/edu/apps/{yourAppId}/v2/rooms/test_c **请求包体参数** -| 参数 | 类型 | 是否必填 | 描述 | -| :---------------- | :----- |:----------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `mode` | String | 非必填 | 录制模式:`web`:启用[页面录制模式](/cn/Agora%20Platform/webpage_recording)。录制生成 MP4 文件。此外,录制服务会在当前 MP4 文件时长超过 2 小时或大小超过 2 GB 时创建一个新的 MP4 文件。不填:启用[合流录制模式](/cn/Agora%20Platform/composite_recording_mode)且只录制老师的音视频。录制生成 M3U8 和 TS 文件。 | -| `webRecordConfig`| Object | 非必填 | 页面录制配置。当 `mode` 设为 `web` 时,你需要通过该参数设置页面录制的详细信息,包含以下字段:`rootUrl`: (必填)String 类型,待录制页面的根地址。实际录制时,灵动课堂RESTful API会根据 `rootUrl` 自动拼接上 `roomUuid`、`roomType` 等参数,以便声网页面录制服务可以以一个“隐身用户”的身份加入指定课堂进行录制。`publishRtmp`: (非必填)是否将页面录制的流推到 CDN:`true`: 推。`false`: 不推。`onhold`:(非必填)Boolean 类型,可设为:`true`: 在启动页面录制任务后立即暂停录制。录制服务会打开并渲染待录制页面,但不生成切片文件。`false`:(默认)启动页面录制任务并开始录制。`videoBitrate`:(非必填)Number 类型,输出视频的码率,单位为 kbps,范围为 [50, 8000]。针对不同的输出视频分辨率,`videoBitrate` 的默认值不同:输出视频分辨率大于或等于 1280 × 720:默认值为 2000。输出视频分辨率小于 1280 × 720:默认值为 1500。`videoFps`:(非必填)Number 类型,输出视频的帧率,单位为 fps,范围为 [5, 60],默认值为 15。`audioProfile`: Number 类型,设置输出音频的采样率、码率、编码模式和声道数。0:(默认)48 kHz 采样率,音乐编码,单声道,编码码率约 48 Kbps1:48 kHz 采样率,音乐编码,单声道,编码码率约 128 Kbps2:48 kHz 采样率,音乐编码,双声道,编码码率约 192 Kbps`videoWidth`: Number 类型,设置输出视频的宽度,单位为 pixel,范围为 [480, 1920]。默认为 1280。`videoWidth` 和 `videoHeight` 的乘积需小于等于 1920 x 1080。`videoHeight`: Number 类型,设置输出视频的高度,单位为 pixel,范围为 [480, 1920]。默认为 720。`videoWidth` 和 `videoHeight` 的乘积需小于等于 1920 × 1080。`maxRecordingHour`: Number 类型,设置最长录制时间,单位为小时,范围为 [1,720]。如果你设置了课堂持续时长和拖堂时长,当开启录制时,会按照二者之和向上取整设置最长录制时间 `maxRecordingHour` 参数。例如,课堂持续时长是 1800 秒,拖堂时长是 600 秒,则最长录制时间为二者之和约 0.66 小时(2400 秒)向上取整的值 1 小时。如果不设置课堂持续时长,则最长录制时间默认为 2 小时。当录制时长超过 `maxRecordingHour`,录制会自动停止。 | +| 参数 | 类型 | 是否必填 | 描述 | +| :---------------- | :----- |:----------------|:--------------| +| `mode` | String | 非必填 | 录制模式:`web`:启用[页面录制模式](/cn/Agora%20Platform/webpage_recording)。录制生成 MP4 文件。此外,录制服务会在当前 MP4 文件时长超过 2 小时或大小超过 2 GB 时创建一个新的 MP4 文件。不填:启用[合流录制模式](/cn/Agora%20Platform/composite_recording_mode)且只录制老师的音视频。录制生成 M3U8 和 TS 文件。 | +| `webRecordConfig`| Object | 非必填 | 页面录制配置。当 `mode` 设为 `web` 时,你需要通过该参数设置页面录制的详细信息,包含以下字段:`rootUrl`: (必填)String 类型,待录制页面的根地址。实际录制时,灵动课堂 RESTful API 会根据 `rootUrl` 自动拼接上 `roomUuid`、`roomType` 等参数,以便声网页面录制服务可以以一个“隐身用户”的身份加入指定课堂进行录制。`publishRtmp`: (非必填)是否将页面录制的流推到 CDN:`true`: 推。`false`: 不推。`onhold`:(非必填)Boolean 类型,可设为:`true`: 在启动页面录制任务后立即暂停录制。录制服务会打开并渲染待录制页面,但不生成切片文件。`false`:(默认)启动页面录制任务并开始录制。`videoBitrate`:(非必填)Number 类型,输出视频的码率,单位为 kbps,范围为 [50, 8000]。针对不同的输出视频分辨率,`videoBitrate` 的默认值不同:输出视频分辨率大于或等于 1280 × 720:默认值为 2000。输出视频分辨率小于 1280 × 720:默认值为 1500。`videoFps`:(非必填)Number 类型,输出视频的帧率,单位为 fps,范围为 [5, 60],默认值为 15。`audioProfile`: Number 类型,设置输出音频的采样率、码率、编码模式和声道数。0:(默认)48 kHz 采样率,音乐编码,单声道,编码码率约 48 Kbps1:48 kHz 采样率,音乐编码,单声道,编码码率约 128 Kbps2:48 kHz 采样率,音乐编码,双声道,编码码率约 192 Kbps`videoWidth`: Number 类型,设置输出视频的宽度,单位为 pixel,范围为 [480, 1920]。默认为 1280。`videoWidth` 和 `videoHeight` 的乘积需小于等于 1920 x 1080。`videoHeight`: Number 类型,设置输出视频的高度,单位为 pixel,范围为 [480, 1920]。默认为 720。`videoWidth` 和 `videoHeight` 的乘积需小于等于 1920 × 1080。`maxRecordingHour`: Number 类型,设置最长录制时间,单位为小时,范围为 [1,720]。如果你设置了课堂持续时长和拖堂时长,当开启录制时,会按照二者之和向上取整设置最长录制时间 `maxRecordingHour` 参数。例如,课堂持续时长是 1800 秒,拖堂时长是 600 秒,则最长录制时间为二者之和约 0.66 小时(2400 秒)向上取整的值 1 小时。如果不设置课堂持续时长,则最长录制时间默认为 2 小时。当录制时长超过 `maxRecordingHour`,录制会自动停止。 | | `retryTimeout` | Number | 非必填 | 重试超时时间,单位为秒。灵动课堂RESTful API最多重试两次。设置 `retryTimeout` 参数后,声网建议你参考[课堂录制最佳实践](/cn/agora-class/agora_class_record?platform=RESTful#启动课堂录制)进行操作。 | #### 请求示例 diff --git a/markdown/Flexible-Classroom/faq/agora_class_errors.md b/markdown/Flexible-Classroom/faq/agora_class_errors.md index 35143c45132..afd3d7a6382 100644 --- a/markdown/Flexible-Classroom/faq/agora_class_errors.md +++ b/markdown/Flexible-Classroom/faq/agora_class_errors.md @@ -89,6 +89,15 @@ Error running install script for optional dependency: "/root/flexible-classroom- ## 如何处理加入课堂相关报错? +### 加入房间时报 `600001: Failed to join the classroom` 错误怎么办? + +该错误有以下几种可能的错误原因: +- 用户 Token 无效,可参照《Web 端加入房间时报 `600001-1` 错误,或登录教室时服务端报 401 错误怎么办?》。 +- 用户选择的区域错误。 请检查 [`launch`](/cn/agora-class/agora_class_api_ref_web?platform=Web#launch) 方法的 `region` 字段是否设置了正确的区域。 +- 教室内该角色人数已达上限,无法进入。例如,教室内老师的数量达到上限,则用户无法再以老师的角色进入教室。 +- 房间人数已达上限,无法进入。例如,房间总人数大于 200。 +- 房间不存在或者创建的房间已结束,请检查房间是否过期。 + ### Web 端加入房间时报 `600001-1` 错误,或登录教室时服务端报 401 错误怎么办? ![](https://web-cdn.agora.io/docs-files/1680084824802) diff --git a/markdown/Flexible-Classroom/faq/agora_class_states.md b/markdown/Flexible-Classroom/faq/agora_class_states.md index 6193ee87233..bfc67e0c400 100644 --- a/markdown/Flexible-Classroom/faq/agora_class_states.md +++ b/markdown/Flexible-Classroom/faq/agora_class_states.md @@ -1,27 +1,32 @@ # 灵动课堂有哪些课堂状态? -灵动课堂支持未开始、开始和结束三种课堂状态。各个状态的说明详见下表: +灵动课堂有以下几种课堂状态: -| 课堂状态 | 说明 | -|------|-----------------------------------------------------------------------------------------------------------| -| 未开始 | 课堂未开始和开始状态下,老师和学生均可以:用实时音视频功能使用实时消息功能看到学生列表使用互动白板功能灵动课堂云服务会标记当前状态 -| -| 开始 | 同上 | -| 拖堂 | 同上 | -| 关闭 | 老师和学生立即被踢出课堂音视频、实时消息、白板服务均断开关闭的课堂无法加入课堂关闭后无法再重新开始教室结束 1 小时后会被销毁 | +| 课堂状态 | `state` 值 | 说明 | +|------|-----|----------------------| +| 未开始 | `0` | 还未到课堂的开始时间。课堂未开始和开始状态下,老师和学生均可以:用实时音视频功能使用实时消息功能看到学生列表使用互动白板功能 | +| 开始 | `1` | 课堂开始时间之后,并且在持续时长之内。课堂未开始和开始状态下,老师和学生均可以:用实时音视频功能使用实时消息功能看到学生列表使用互动白板功能 | +| 结束 | `2` | 已超过课堂持续时长,但在拖堂时间内。此时老师和学生依旧可以进出课堂,也可以正常使用功能。 | +| 关闭 | `3` | 已超过课堂持续时长和拖堂时间。在关闭状态下:老师和学生会被踢出课堂,且无法再加入。音视频、实时消息、白板服务均断开。课堂关闭后无法再重新开始。课堂关闭 1 小时后会被销毁。 | ## 课堂状态切换 -在灵动课堂客户端中,可以在调用 launch 方法启动课堂时通过以下参数指定课堂开始时间和持续时间: +在灵动课堂客户端中,可以在调用 `launch` 方法启动课堂时通过以下参数指定课堂开始时间和持续时间,设置课堂状态的切换: - startTime : 设置课堂开始时间(毫秒),以第一个进入课堂的用户传入的参数为准。 -duration: 设置课堂持续时间(秒),以第一个进入课堂的用户传入的参数为准。 -closeDelay: 拖堂时间(秒),以创建房间时传入的参数为准,默认10分钟。 +`startTime`: 设置课堂开始时间(毫秒),以第一个进入课堂的用户传入的该参数为准。 +`duration`: 设置课堂持续时长(秒),以第一个进入课堂的用户传入的该参数为准。 +`closeDelay`: 拖堂时间(秒),以创建房间时传入的该参数为准,默认 10 分钟。 -课堂会在指定时间自动开始,经过指定持续时间+拖堂时间(若有)后自动结束。 +课堂会在指定的开始时间自动开始,经过课堂持续时长与拖堂时间之和后自动结束。老师也可以手动开始和结束课堂。 -此外,你还可通过设置课堂状态 RESTful API 切换课堂状态。 +此外,你还可通过[设置课堂状态](agora_class_restful_api#%E8%AE%BE%E7%BD%AE%E8%AF%BE%E5%A0%82%E7%8A%B6%E6%80%81) RESTful API 切换课堂状态。 + +## 参考 API + +- [`launch`(Web/Electron)](agora_class_api_ref_web#launch) +- [`launch`(Android)](agora_class_api_ref_android#launch) +- [`launch`(iOS)](agora_class_api_ref_ios#launch) diff --git a/markdown/Flexible-Classroom/faq/agora_class_token007.md b/markdown/Flexible-Classroom/faq/agora_class_token007.md index 077b7ad42a0..f5d5e9916de 100644 --- a/markdown/Flexible-Classroom/faq/agora_class_token007.md +++ b/markdown/Flexible-Classroom/faq/agora_class_token007.md @@ -1,3 +1,7 @@ +// TODO 部署服务器,客户端鉴权的步骤参考 rtm 文档,提供一个 go 语言的 sample。单个用户的 token。 + + + # 如何在 灵动课堂 RESTful API中进行 HTTP Token 认证? ## 功能描述 @@ -54,7 +58,7 @@ Agora 在 GitHub 上提供一个开源的 [AgoraDynamicKey](https://github.com/A ### AccessToken2 生成器代码 - +//TODO 三种作用域对应的是什么场景?006 的就是 app 全局吗?等于用户可以同时生成3个 token 供不同情况使用?为什么要用个人和指定房间制定用户的? 目前,灵动课堂的Token007提供3种级别作用域:App全局,个人用户,指定房间指定用户(客户端使用)。 @@ -90,7 +94,7 @@ Agora 在 GitHub 上提供一个开源的 [AgoraDynamicKey](https://github.com/A #### 指定房间指定用户(客户端使用) 作用域为具体房间具体用户,该token打包了ServiceEducation和ServiceRtm两个服务,在客户端SDK启动时传入,可以帮助用户打通灵动课堂及RTM用户登录的token。 - +//TODO 前2个token 是只能服务端适用吗 | 语言 | 算法 | 核心方法 | 示例代码 | | -------- | ----------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------------- | | C++ | HMAC-SHA256 | [BuildRoomUserToken](https://github.com/AgoraIO/Tools/blob/master/DynamicKey/AgoraDynamicKey/cpp/src/EducationTokenBuilder2.h) | | @@ -105,7 +109,7 @@ Agora 在 GitHub 上提供一个开源的 [AgoraDynamicKey](https://github.com/A ### AccessToken 生成器代码 - +//TODO 006 的就是 app 全局吗? | 语言 | 算法 | 核心方法 | 示例代码 | | -------- | ----------- | ---------- | ---------------- |
+ fun onAudioRawDataBeforeMixed(data: FcrAudioRawData) + FrcAudioRawData onAudioRawDataBeforeMixed(FrcAudioRawData data) + +
+ fun onAudioRawDataMixed(data: FcrAudioRawData) + FrcAudioRawData onAudioRawDataMixed(FrcAudioRawData data) + + +
音频数据,详见 。