dsh-agora 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/assets/agora/references/cli/README.md +21 -0
- package/assets/agora/references/cloud-recording/README.md +51 -0
- package/assets/agora/references/conversational-ai/README.md +101 -0
- package/assets/agora/references/rtc/README.md +167 -0
- package/assets/agora/references/rtm/README.md +145 -0
- package/assets/agora/references/server/README.md +68 -0
- package/index.js +25 -52
- package/package.json +2 -3
- package/assets/agora-cn/SKILL.md +0 -58
- package/assets/agora-cn/references/cli.md +0 -41
- package/assets/agora-cn/references/cloud-recording.md +0 -59
- package/assets/agora-cn/references/conversational-ai.md +0 -110
- package/assets/agora-cn/references/rtc.md +0 -180
- package/assets/agora-cn/references/rtm.md +0 -159
- package/assets/agora-cn/references/server.md +0 -77
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agora-cn-rtm
|
|
3
|
-
description: |
|
|
4
|
-
China-mainland (国内/声网) delta for Agora Signaling (RTM, 云信令): CN area
|
|
5
|
-
code / region selection on Web (AgoraRTM.setArea) and native (RtmAreaCode.CN /
|
|
6
|
-
AgoraRtmAreaCode.CN), the CN data-center concept vs the CLI
|
|
7
|
-
`--rtm-data-center CN` control-plane flag, and the CN endpoint domain
|
|
8
|
-
(sd-rtn.com). Use for 国内 RTM / 云信令, RTM data center CN, RTM setArea
|
|
9
|
-
CHINA, RtmAreaCode.CN questions.
|
|
10
|
-
license: MIT
|
|
11
|
-
metadata:
|
|
12
|
-
author: agora
|
|
13
|
-
version: '0.1.0'
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# 国内 RTM(云信令 / Signaling)差异:区域 / 数据中心
|
|
17
|
-
|
|
18
|
-
> 本页只记录国内(大陆 / 声网 / CN 区域)与海外 RTM 的差异。
|
|
19
|
-
> 基础机制(login / subscribe / publish / presence / storage / lock / stream channel)仍以
|
|
20
|
-
> `agora` skill 的 `references/rtm/*` 为准。海外基线里**完全没有** region/area/domain 内容,本页补齐。
|
|
21
|
-
|
|
22
|
-
验证基线:Web SDK `agora-rtm` 2.3.0(npm 包 `agora-rtm.d.ts` 实测,latest=2.3.0);原生 SDK 2.x
|
|
23
|
-
声网文档(`doc.shengwang.cn` api-ref + `docs.agora.io` signaling 文档)。
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 已确认的国内 delta
|
|
28
|
-
|
|
29
|
-
### 1. Web SDK(`agora-rtm` v2)选择 CN 区域
|
|
30
|
-
|
|
31
|
-
**API 是顶层 `AgoraRTM.setArea`,值是大写字符串 `"CHINA"`,不是 `"CN"`。**(与 RTC 的
|
|
32
|
-
`AgoraRTC.setArea({ areaCode: "CHINA" })` 形状不同:RTM 用的是**复数数组** `areaCodes`。)
|
|
33
|
-
|
|
34
|
-
```js
|
|
35
|
-
import AgoraRTM from "agora-rtm";
|
|
36
|
-
|
|
37
|
-
// 只连国内服务器(中国大陆)
|
|
38
|
-
AgoraRTM.setArea({ areaCodes: ["CHINA"] });
|
|
39
|
-
|
|
40
|
-
// 或:全球里排除中国大陆(海外场景)
|
|
41
|
-
AgoraRTM.setArea({ areaCodes: ["GLOBAL"], excludedArea: "CHINA" });
|
|
42
|
-
|
|
43
|
-
// 之后才创建实例
|
|
44
|
-
const rtm = new AgoraRTM.RTM(appId, userId, { logLevel: "info" });
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
- TS 签名(2.3.0):`setArea(options: { areaCodes: AreaCode[]; excludedArea?: AreaCode }): void`。
|
|
48
|
-
- 枚举 `AreaCode`(v2 字符串值):`GLOBAL`(默认)/ `CHINA`(中国大陆)/ `INDIA` / `JAPAN` /
|
|
49
|
-
`ASIA`(除大陆外亚洲)/ `EUROPE` / `NORTH_AMERICA`。
|
|
50
|
-
- ⚠️ **不是** `new RTM(appId, uid, { areaCode: ... })`:v2 的 `RTMConfig`(构造器第三参)里**没有**
|
|
51
|
-
`areaCode` 字段(只有 `encryptionMode/salt/cipherKey/presenceTimeout/logUpload/cloudProxy/
|
|
52
|
-
useStringUserId/logLevel/heartbeatInterval/privateConfig`)。
|
|
53
|
-
- ⚠️ 包内还保留了 legacy v1 的 `LegacyAreaCode` 枚举(`CN = "CN"`, `GLOB = "GLOB"`, `NA`, `EU`,
|
|
54
|
-
`AS`, `JP`, `IN`, `OC`, `SA`, `AF`, `KR`, `US`, `OVS`)——那是 v1 兼容枚举,**v2 请用
|
|
55
|
-
`AreaCode.CHINA = "CHINA"`**,不要照搬 v1 的 `"CN"`。
|
|
56
|
-
|
|
57
|
-
来源:
|
|
58
|
-
- `https://registry.npmjs.org/agora-rtm`(latest=2.3.0;`agora-rtm.d.ts` 的 `AreaCode` / `LegacyAreaCode` / `setArea` / `RTMConfig`)
|
|
59
|
-
- `https://docs.agora.io/en/signaling/get-started/client-configuration?platform=web`("Geographical area configuration" 示例 `setArea({ areaCodes: ["GLOBAL"], excludedArea: "CHINA" })`)
|
|
60
|
-
|
|
61
|
-
### 2. Android SDK(`io.agora:agora-rtm` v2)选择 CN 区域
|
|
62
|
-
|
|
63
|
-
**字段是 `RtmConfig.Builder(...).areaCode(...)`,类型 `EnumSet<RtmAreaCode>`,CN 常量是 `RtmAreaCode.CN`。**
|
|
64
|
-
|
|
65
|
-
```kotlin
|
|
66
|
-
import io.agora.rtm.RtmConfig
|
|
67
|
-
import io.agora.rtm.RtmConstants
|
|
68
|
-
|
|
69
|
-
val rtmConfig = RtmConfig.Builder("your-app-id", "user-id")
|
|
70
|
-
.areaCode(EnumSet.of(RtmConstants.RtmAreaCode.CN)) // 中国大陆
|
|
71
|
-
.eventListener(rtmEventListener)
|
|
72
|
-
.build()
|
|
73
|
-
val rtmClient = RtmClient.create(rtmConfig)
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
- 枚举 `RtmAreaCode`(位掩码):`CN` = `0x00000001`(中国大陆)、`NA` = `0x00000002`、`EU` =
|
|
77
|
-
`0x00000004`、`AS` = `0x00000008`(除大陆外亚洲)、`JP` = `0x00000010`、`IN` = `0x00000020`、
|
|
78
|
-
`GLOB` = `0xFFFFFFFF`(默认,全球)。
|
|
79
|
-
- 默认值 `GLOB`;不设 `areaCode` 即全球,不限定大陆。
|
|
80
|
-
|
|
81
|
-
来源:
|
|
82
|
-
- `https://docs.agora.io/en/signaling/get-started/client-configuration?platform=android`(`.areaCode(EnumSet.of(RtmConstants.RtmAreaCode.AS, RtmConstants.RtmAreaCode.CN))`)
|
|
83
|
-
- `https://doc.shengwang.cn/api-ref/rtm2/android/enumv`(`RtmAreaCode.CN` = `0x00000001` 中国大陆)
|
|
84
|
-
|
|
85
|
-
### 3. iOS SDK(`AgoraRtmKit` / `AgoraRtmClientKit` v2)选择 CN 区域
|
|
86
|
-
|
|
87
|
-
**字段是 `AgoraRtmClientConfig.areaCode`,类型 `AgoraRtmAreaCode`(OptionSet),CN 是 `.CN`。**
|
|
88
|
-
|
|
89
|
-
```swift
|
|
90
|
-
import AgoraRtmKit
|
|
91
|
-
|
|
92
|
-
let config = AgoraRtmClientConfig(appId: "yourAppId", userId: "yourUserId")
|
|
93
|
-
config.areaCode = [.CN] // 中国大陆(可组合多区域,如 [.CN, .NA])
|
|
94
|
-
let rtmClient = try AgoraRtmClientKit(config, delegate: nil)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
- 枚举 `AgoraRtmAreaCode`(位掩码):`CN` = `0x00000001`(中国大陆)、`NA` = `0x00000002`、`EU` =
|
|
98
|
-
`0x00000004`、`AS` = `0x00000008`、`JP` = `0x00000010`、`IN` = `0x00000020`、`GLOB` =
|
|
99
|
-
`0xFFFFFFFF`(默认,全球)。
|
|
100
|
-
- Objective-C 写法:`rtm_config.areaCode = AgoraRtmAreaCodeCN;`(`@property (nonatomic, assign) AgoraRtmAreaCode areaCode;`,默认 `AgoraRtmAreaCodeGLOB`)。
|
|
101
|
-
|
|
102
|
-
来源:
|
|
103
|
-
- `https://doc.shengwang.cn/api-ref/rtm2/swift/toc-configuration/configuration`(`config.areaCode = [.CN, .NA]` 示例)
|
|
104
|
-
- `https://doc.shengwang.cn/api-ref/rtm2/ios/enumv`(`AgoraRtmAreaCodeCN` = `0x00000001` 中国大陆)
|
|
105
|
-
- `https://doc.shengwang.cn/api-ref/rtm2/ios/toc-configuration/configuration`(`areaCode` 属性声明)
|
|
106
|
-
|
|
107
|
-
### 4. RTM 数据中心:控制面 vs 数据面(与 CLI `--rtm-data-center CN` 的关系)
|
|
108
|
-
|
|
109
|
-
国内 RTM 涉及**两层独立配置**,二者互补、不可互相替代:
|
|
110
|
-
|
|
111
|
-
| 层 | 入口 | 作用 | CN 取值 |
|
|
112
|
-
|---|---|---|---|
|
|
113
|
-
| **控制面**(项目/凭据落在哪个区域后端) | CLI `agora project create ... --rtm-data-center CN` / `agora init --rtm-data-center CN` | 决定项目在哪个区域后台开通、去哪个控制台拿 App ID | `CN`(另 `NA`/`EU`/`AP`,默认 `NA`) |
|
|
114
|
-
| **数据面**(SDK 运行时连哪个 SDRTN 边缘区域) | 客户端 area code(§1–§3 的 `setArea` / `areaCode`) | 决定 SDK 连到哪个区域的 RTM 服务边缘节点 | Web `"CHINA"`;Android `RtmAreaCode.CN`;iOS `.CN` |
|
|
115
|
-
|
|
116
|
-
- CLI 的 `--rtm-data-center CN` **不会**替客户端设置 area code,反之亦然:国内部署要**两者都设**
|
|
117
|
-
(CN 项目拿 App ID + 客户端 areaCode = CN)。
|
|
118
|
-
- ⚠️ 取值集不对齐:CLI 是 `CN|NA|EU|AP`,SDK area code 是更细的位掩码
|
|
119
|
-
(`CN/NA/EU/AS/JP/IN/GLOB`),没有字面一一对应(CLI 的 `AP` 无同名 SDK 码)。这是"控制面 vs 数据面"
|
|
120
|
-
两个维度,不是同一枚举的两套别名。
|
|
121
|
-
|
|
122
|
-
来源:CLI 行为以 `agora` CLI 实测为准(`agora init --rtm-data-center CN` / `project create`);SDK
|
|
123
|
-
area code 见 §1–§3 来源。
|
|
124
|
-
|
|
125
|
-
### 5. CN 域名 / 端点(RTM Web 消息频道)
|
|
126
|
-
|
|
127
|
-
- 国内主域名后缀 **`sd-rtn.com`**(海外 `agora.io`)。
|
|
128
|
-
- Signaling SDK(Web)消息频道防火墙白名单里同时列了两套,其中 **国内(`sd-rtn.com`)部分**:
|
|
129
|
-
`.edge.sd-rtn.com`、`web-1.ap.sd-rtn.com` … `web-4.ap.sd-rtn.com`、`rtm.statscollector.sd-rtn.com`、
|
|
130
|
-
`rtm.logservice.sd-rtn.com`;**海外(`agora.io`)部分**:`.edge.agora.io`、`ap-web-1.agora.io` …
|
|
131
|
-
`ap-web-4.agora.io`、`webcollector-rtm.agora.io`、`logservice-rtm.agora.io`。
|
|
132
|
-
- 端口(消息频道):`443; 9591; 9593; 27387`(TCP);v1.x 另加 `9601`。
|
|
133
|
-
|
|
134
|
-
来源:
|
|
135
|
-
- `https://docs.agora.io/en/signaling/reference/firewall`("Signaling SDK (Web) → Message channel → Domains")
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## 与海外一致(无 delta)
|
|
140
|
-
|
|
141
|
-
- **凭据模型**:App ID + App Certificate + token 完全不变。国内只是去 `console.shengwang.cn`
|
|
142
|
-
建项目拿 App ID/证书,token 生成方式(App ID + App Certificate → token)与海外一致。
|
|
143
|
-
- **RTM API 面**:`login` / `subscribe` / `publish` / presence(`getOnlineUsers`/事件)/ storage /
|
|
144
|
-
lock / stream channel(topic)全部同海外;RTM UID 仍是字符串、RTC↔RTM 命名空间隔离等规则不变。
|
|
145
|
-
- **客户端形态**:RTM 仍是纯客户端 SDK(无服务端 SDK / 无 Electron/桌面版),CN 下不变。
|
|
146
|
-
- **areaCode 是可选的**:不设默认 `GLOB`(全球),行为与海外完全一致;只有需要限定/合规时才设 CN。
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## 待验证 / 未知
|
|
151
|
-
|
|
152
|
-
- **原生(Android/iOS)RTM 的精确 CN 接入点域名**:海外防火墙文档"Signaling SDK (Native)"小节只列了
|
|
153
|
-
`.agora.io`(未列出 `.sd-rtn.com` 原生宿主名)。已确认的是后缀 `sd-rtn.com` + Web 端列出的
|
|
154
|
-
`rtm.*.sd-rtn.com` 系列;原生设 `RtmAreaCode.CN` / `.CN` 后连接的确切信令 host 未在公开白名单页
|
|
155
|
-
单独枚举,落地如需精确域名按 `doc.shengwang.cn` 现查。
|
|
156
|
-
- **`--rtm-data-center CN` 与 SDK area code 的字面等价**:官方文档没有一句"CLI CN == 客户端 areaCode CN"
|
|
157
|
-
的直接表述;本页按"控制面 vs 数据面"两层表述(§4),但若需要权威原文确认二者的绑定关系,属待验证。
|
|
158
|
-
- **v1(legacy)SDK 的国内配置**:v2 包里保留的 `LegacyAreaCode.CN = "CN"` 是 v1 兼容枚举;独立 v1
|
|
159
|
-
包(`agora-rtm-sdk`)的国内 area code 具体 API/取值未在本任务核实。
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agora-cn-server
|
|
3
|
-
description: |
|
|
4
|
-
China-mainland (国内/声网) server-side token/auth delta: token algorithm is
|
|
5
|
-
region-agnostic, CN REST domain (api.sd-rtn.com), CN console RESTful API
|
|
6
|
-
credential location, and the CN Docker token image. Use for 国内 token,
|
|
7
|
-
声网 token server, api.sd-rtn.com, RESTful API 凭证.
|
|
8
|
-
license: MIT
|
|
9
|
-
metadata:
|
|
10
|
-
author: agora
|
|
11
|
-
version: '0.1.0'
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# 国内 Server:token / 鉴权
|
|
15
|
-
|
|
16
|
-
验证基线:官方文档(声网 `doc.shengwang.cn` 与海外 `docs.agora.io` 对照)。
|
|
17
|
-
|
|
18
|
-
## 已确认的国内 delta
|
|
19
|
-
|
|
20
|
-
### 1. 服务端 REST 域名(直接调服务端 API 时)
|
|
21
|
-
|
|
22
|
-
CN 主域名 `sd-rtn.com`,但**不是所有服务端产品都换域名**:
|
|
23
|
-
|
|
24
|
-
| 服务端产品 | CN 域名 | 海外域名 |
|
|
25
|
-
|---|---|---|
|
|
26
|
-
| 云端录制 REST | `https://api.sd-rtn.com` | `https://api.sd-rtn.com`(canonical 已统一;`api.agora.io` 仅残留于 quickstart 示例) |
|
|
27
|
-
| RTC 服务端 RESTful(频道管理/踢人规则等) | `https://api.sd-rtn.com` | `https://api.agora.io` |
|
|
28
|
-
|
|
29
|
-
> 云端录制 base URL 已在海外/国内两套文档里统一为 `api.sd-rtn.com`、且无 `/cn/` 前缀;
|
|
30
|
-
> 其真正的国内差异是「控制台换成声网 + `clientRequest.region="CN"`」,详见 [cloud-recording.md](cloud-recording.md)。
|
|
31
|
-
|
|
32
|
-
### 2. Basic Auth 的客户 ID / 密钥获取位置不同
|
|
33
|
-
|
|
34
|
-
鉴权 Header 完全一致:`Authorization: Basic base64(customerID:customerSecret)`。
|
|
35
|
-
但**菜单路径不同**:
|
|
36
|
-
|
|
37
|
-
- **CN(声网)**:`console.shengwang.cn` → 设置 (Settings) → **RESTful API** → 添加密钥。
|
|
38
|
-
- **海外**:`console.agora.io` → **Developer Toolkit** → RESTful API → Add a secret。
|
|
39
|
-
|
|
40
|
-
(即:CN 走"设置 → RESTful API",海外走"Developer Toolkit → RESTful API"。)
|
|
41
|
-
|
|
42
|
-
### 3. CN 专属 token 服务器 Docker 镜像
|
|
43
|
-
|
|
44
|
-
声网文档给的 Docker 部署镜像名是 `agoracn/token:0.1.2023053011`(`agoracn` 命名空间)。
|
|
45
|
-
部署层面小贴士:可用 `goproxy.cn` 加速 `go get`。
|
|
46
|
-
|
|
47
|
-
## 与海外一致(无 delta)
|
|
48
|
-
|
|
49
|
-
### Token 算法 / 输入完全一致,无 region 参数(确认)
|
|
50
|
-
|
|
51
|
-
- 同一开源仓库 `AgoraIO/Tools` 的 `DynamicKey/AgoraDynamicKey`,算法 HMAC-SHA256(AccessToken2)。
|
|
52
|
-
- 同一函数签名、同样输入(App ID + App Certificate + channel + UID/account + role + 过期时间),**无 region 参数**:
|
|
53
|
-
- RTC:`BuildTokenWithUid(...)` / `RtcTokenBuilder.buildTokenWithUid(...)` / `buildTokenWithRtm(...)` / `buildTokenWithUserAccount(...)`
|
|
54
|
-
- RTM:`RtmTokenBuilder2.BuildToken(appId, appCertificate, userId, expire)`
|
|
55
|
-
- **结论**:token builder 是 region-agnostic 的;region 内嵌于 App ID / App Certificate(CN 项目与海外项目是两套不同的 App ID + 证书)。因此**同一个 `agora-token` / `buildTokenWithRtm` 直接用于 CN 项目**,无需 CN 变体或额外参数。
|
|
56
|
-
|
|
57
|
-
### 无 CN 版 token 库 / npm 包
|
|
58
|
-
|
|
59
|
-
CN 文档指向的仍是同一个 `AgoraDynamicKey` 仓库;`agora-token`(npm)全球同一包,CN 直接复用。
|
|
60
|
-
唯一的 CN 专属产物是上述 Docker 镜像 `agoracn/token`(部署层,非库/算法层)。
|
|
61
|
-
|
|
62
|
-
### 其余一致
|
|
63
|
-
|
|
64
|
-
- token 约束:24h 最长有效期、过期前 30s `token-privilege-will-expire`、UID 范围 1..(2³²-1)——CN 与海外相同。
|
|
65
|
-
|
|
66
|
-
## 待验证 / 未知
|
|
67
|
-
|
|
68
|
-
1. 云端录制 base URL 已在两套文档统一为 `api.sd-rtn.com`(已确认);但 RTC 服务端 RESTful 是否也在向 `api.sd-rtn.com` 统一、迁移期 `api.agora.io` 是否仍可用——未钉死。
|
|
69
|
-
2. `agoracn/token` 是否有海外等价镜像 `agoraio/token`(未在海外文档找到,未确认)。
|
|
70
|
-
|
|
71
|
-
## 来源
|
|
72
|
-
|
|
73
|
-
- 声网 token 生成:https://doc.shengwang.cn/doc/rtc/javascript/basic-features/token-authentication
|
|
74
|
-
- 声网 RTM token:https://doc.shengwang.cn/doc/rtm2/javascript/user-guide/token/token-generation
|
|
75
|
-
- 声网云录制 REST 快速开始:https://doc.shengwang.cn/doc/cloud-recording/restful/get-started/quick-start
|
|
76
|
-
- 声网 RTC 服务端 REST:https://doc.shengwang.cn/doc/rtc/restful/get-started/call-api
|
|
77
|
-
- 海外对照:https://docs-md.agora.io/en/video-calling/token-authentication/deploy-token-server.md
|