@rongcloud/plugin-call-plus 2.2.0-enterprise-lz-alpha.1 → 2.20.0

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { RCConnectionStatus, EventEmitter, BasicLogger, PluginContext, EnableLogL, IReceivedMessage, IPluginGenerator } from '@rongcloud/engine';
2
- import { RCRemoteTrack, RCTrack, ISubscribeAttr, RCRTCCode, RCLocalAudioTrack, RCRemoteAudioTrack, RCRTCClient, RCFrameRate, RCResolution } from '@rongcloud/plugin-rtc';
1
+ import { RCConnectionStatus, EventEmitter, BasicLogger, PluginContext, IRuntime, EnableLogL, IReceivedMessage, IPluginGenerator } from '@rongcloud/engine';
2
+ import { RCRemoteTrack, RCTrack, ISubscribeAttr, RCRTCCode, RCLocalAudioTrack, RCRemoteAudioTrack, RCRTCClient, RCRTCRoom, RCLocalTrack, IPublishAttrs, IPubSuccessRes, RCFrameRate, RCResolution } from '@rongcloud/plugin-rtc';
3
3
  export { RCFrameRate as RCCallPlusFrameRate, RCResolution as RCCallPlusResolution } from '@rongcloud/plugin-rtc';
4
4
 
5
5
  /**
@@ -413,11 +413,7 @@ declare enum RCCallPlusReason {
413
413
  /**
414
414
  * 远端用户的其他端已经在房间中,不允许 joinRoom 进行音视频通话
415
415
  */
416
- REMOTE_OTHER_CLIENT_IN_RTC = 1214,
417
- /**
418
- * 加密通话失败,如获取秘钥失败等
419
- */
420
- ENCRYPT_FAILED = 1216
416
+ REMOTE_OTHER_CLIENT_IN_RTC = 1214
421
417
  }
422
418
 
423
419
  /**
@@ -475,10 +471,6 @@ interface IBaseSingalCon {
475
471
  * 开始呼叫信令内容
476
472
  */
477
473
  interface IStartCallCon {
478
- /**
479
- * 客户端生成,传给服务
480
- */
481
- callId?: string;
482
474
  /**
483
475
  * 用户生成 callId
484
476
  */
@@ -499,10 +491,6 @@ interface IStartCallCon {
499
491
  * 是否密聊
500
492
  */
501
493
  secretChat: SecretCallType;
502
- /**
503
- * 密钥
504
- */
505
- secretChatKey: string;
506
494
  /**
507
495
  * 当前用户的来源组 ID 类型
508
496
  */
@@ -520,23 +508,22 @@ interface IStartCallCon {
520
508
  */
521
509
  oldRoomId?: string;
522
510
  /**
523
- * 服务端接收的推送扩展
524
- */
511
+ * 服务端接收的推送扩展
512
+ */
525
513
  pushExt?: string;
514
+ /**
515
+ * 推送内容
516
+ */
517
+ pushContent?: string;
526
518
  /**
527
519
  * 附加信息,服务器透传
528
520
  */
529
521
  extra?: string;
530
- innerExtra?: string;
531
522
  }
532
523
  /**
533
524
  * 单呼信令内容
534
525
  */
535
526
  interface IStartSingleCon {
536
- /**
537
- * 客户端生成,传递给服务
538
- */
539
- callId?: string;
540
527
  /**
541
528
  * 用户生成 callId
542
529
  */
@@ -582,16 +569,15 @@ interface IStartSingleCon {
582
569
  * 服务端接收的推送扩展
583
570
  */
584
571
  pushExt?: string;
585
- innerExtra?: string;
572
+ /**
573
+ * 推送内容
574
+ */
575
+ pushContent?: string;
586
576
  }
587
577
  /**
588
578
  * 群呼信令内容
589
579
  */
590
580
  interface IStartGroupCon {
591
- /**
592
- * 客户端生成,传递给服务
593
- */
594
- callId?: string;
595
581
  /**
596
582
  * 用户生成 callId
597
583
  */
@@ -628,16 +614,10 @@ interface IStartGroupCon {
628
614
  * 服务端接收的推送扩展
629
615
  */
630
616
  pushExt?: string;
631
- innerExtra?: string;
632
617
  /**
633
- * 是否密聊(0: 否;1: 是)
634
- * PC 目前无密聊,写死 0
618
+ * 推送内容
635
619
  */
636
- secretChat: SecretCallType;
637
- /**
638
- * 单聊加密 key
639
- */
640
- secretChatKey?: string;
620
+ pushContent?: string;
641
621
  }
642
622
  /**
643
623
  * 开始呼叫 Server 返回
@@ -674,7 +654,10 @@ interface IInviteCallCon extends IBaseSingalCon {
674
654
  * 服务端接收的推送扩展
675
655
  */
676
656
  pushExt?: string;
677
- innerExtra?: string;
657
+ /**
658
+ * 推送内容
659
+ */
660
+ pushContent?: string;
678
661
  }
679
662
  /**
680
663
  * 邀请好友加入信令结果
@@ -753,7 +736,7 @@ interface IPubInviteCon extends IBaseSingalCon {
753
736
  /**
754
737
  * 媒体类型
755
738
  */
756
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
739
+ mediaType: RCCallPlusMediaType;
757
740
  /**
758
741
  * 是否密聊
759
742
  */
@@ -774,14 +757,6 @@ interface IPubInviteCon extends IBaseSingalCon {
774
757
  * 附加信息
775
758
  */
776
759
  extra?: string;
777
- /**
778
- * 可存储的扩展信息,由发起人发起时定义
779
- */
780
- innerExtra?: string;
781
- /**
782
- * 通话加密密钥
783
- */
784
- secretChatKey?: string;
785
760
  }
786
761
  /**
787
762
  * 通话响铃信令内容
@@ -811,6 +786,10 @@ interface IHangupCallCon extends IBaseSingalCon {
811
786
  * 服务端接收的推送扩展
812
787
  */
813
788
  pushExt?: string;
789
+ /**
790
+ * 推送内容
791
+ */
792
+ pushContent?: string;
814
793
  }
815
794
  /**
816
795
  * 通话状态上报信令内容
@@ -1010,7 +989,6 @@ interface ISyncCallLogRes extends IBaseSingalCon {
1010
989
  * 同步数据
1011
990
  */
1012
991
  syncTime: number;
1013
- innerExtra?: string;
1014
992
  }
1015
993
  interface ISyncCallLogResList {
1016
994
  hasMore: 0 | 1;
@@ -1052,7 +1030,7 @@ interface ISignalTransporterListener {
1052
1030
  /**
1053
1031
  * 收到通话状态变更
1054
1032
  */
1055
- onStatusDown(data: IStatusDownCont, byServer: boolean, traceId: string): void;
1033
+ onStatusDown(data: IStatusDownCont, traceId: string, sessionId?: string): void;
1056
1034
  /**
1057
1035
  * 其他端通话状态变更
1058
1036
  */
@@ -1084,7 +1062,7 @@ interface IGetUserCallStateListRes {
1084
1062
  callStateList: {
1085
1063
  callId: string;
1086
1064
  callType: RCCallPlusType;
1087
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
1065
+ mediaType: RCCallPlusMediaType;
1088
1066
  /**
1089
1067
  * 呼叫发起者 ID
1090
1068
  */
@@ -1118,8 +1096,6 @@ interface IGetUserCallStateListRes {
1118
1096
  */
1119
1097
  targetId: string;
1120
1098
  startTime: number;
1121
- innerExtra?: string;
1122
- secretChat: SecretCallType;
1123
1099
  }[];
1124
1100
  }
1125
1101
  interface IClearCallLogRes {
@@ -1140,7 +1116,7 @@ interface IGetCallSessionServerRes extends IBaseSingalCon {
1140
1116
  /**
1141
1117
  * 媒体类型
1142
1118
  */
1143
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
1119
+ mediaType: RCCallPlusMediaType;
1144
1120
  /**
1145
1121
  * 通话状态
1146
1122
  */
@@ -1169,9 +1145,6 @@ interface IGetCallSessionServerRes extends IBaseSingalCon {
1169
1145
  * 同步时间戳
1170
1146
  */
1171
1147
  syncTime: number;
1172
- innerExtra?: string;
1173
- secretChat: SecretCallType;
1174
- secretChatKey?: string;
1175
1148
  }
1176
1149
  interface IGetCallTimeInfoRes extends IBaseSingalCon {
1177
1150
  /**
@@ -1242,14 +1215,6 @@ interface ISessionUser {
1242
1215
  * 成员系统状态
1243
1216
  */
1244
1217
  systemState: RCCallPlusReason;
1245
- /**
1246
- * 摄像头是否可用
1247
- */
1248
- cameraEnable: boolean;
1249
- /**
1250
- * 麦克风是否可用
1251
- */
1252
- microphoneEnable: boolean;
1253
1218
  /**
1254
1219
  * 来源组 ID 类型
1255
1220
  */
@@ -1324,14 +1289,6 @@ interface IRCCallPlusCallRecord {
1324
1289
  * 创建时间
1325
1290
  */
1326
1291
  createTimestamp: number;
1327
- /**
1328
- * 同步数据
1329
- */
1330
- syncData?: string;
1331
- /**
1332
- * 是否为加密通话
1333
- */
1334
- isSecret: boolean;
1335
1292
  }
1336
1293
  interface IUserInfo {
1337
1294
  /**
@@ -1355,15 +1312,7 @@ interface IUserInfo {
1355
1312
  */
1356
1313
  orgId?: string;
1357
1314
  }
1358
- interface IStartCallOpts {
1359
- /**
1360
- * 通话唯一 ID
1361
- */
1362
- callId?: string;
1363
- /**
1364
- * 客户端 callId
1365
- */
1366
- clientCallId: string;
1315
+ interface IStartCallOpts extends ICallId {
1367
1316
  /**
1368
1317
  * 被邀请人信息
1369
1318
  */
@@ -1375,7 +1324,7 @@ interface IStartCallOpts {
1375
1324
  /**
1376
1325
  * 通话媒体类型
1377
1326
  */
1378
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
1327
+ mediaType: RCCallPlusMediaType;
1379
1328
  /**
1380
1329
  * 当前用户来源组 ID 类型
1381
1330
  */
@@ -1397,12 +1346,6 @@ interface IStartCallOpts {
1397
1346
  * 附加信息,服务器透传
1398
1347
  */
1399
1348
  extra?: string;
1400
- /**
1401
- * 内部透传信息,服务器会记录该数据
1402
- */
1403
- innerExtra?: string;
1404
- secretChat: SecretCallType;
1405
- secretChatKey?: string;
1406
1349
  }
1407
1350
  interface IStartCallResult {
1408
1351
  /**
@@ -1542,7 +1485,7 @@ interface IGetCallSessionRes extends ICallId {
1542
1485
  /**
1543
1486
  * 媒体类型
1544
1487
  */
1545
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
1488
+ mediaType: RCCallPlusMediaType;
1546
1489
  /**
1547
1490
  * 通话状态
1548
1491
  */
@@ -1563,12 +1506,6 @@ interface IGetCallSessionRes extends ICallId {
1563
1506
  * 同步时间戳
1564
1507
  */
1565
1508
  syncTime: number;
1566
- innerExtra?: string;
1567
- secretChat: SecretCallType;
1568
- /**
1569
- * 通话加密密钥
1570
- */
1571
- secretChatKey?: string;
1572
1509
  }
1573
1510
 
1574
1511
  declare enum CallTimerEventType {
@@ -1613,17 +1550,8 @@ declare class RCCallInnerSession extends EventEmitter {
1613
1550
  */
1614
1551
  private _callUsers;
1615
1552
  private readonly _logger;
1616
- private readonly _isSecret;
1617
1553
  /**
1618
- * 同步数据
1619
- */
1620
- private _syncData;
1621
- /**
1622
- * 通话加密密钥
1623
- */
1624
- private _secretKey;
1625
- /**
1626
- * 暂存请求更新的 mediaType,无请求时为 null
1554
+ * 请求更新的 mediaType
1627
1555
  */
1628
1556
  private _reqMediaType;
1629
1557
  /**
@@ -1664,7 +1592,7 @@ declare class RCCallInnerSession extends EventEmitter {
1664
1592
  /**
1665
1593
  * 通话媒体类型
1666
1594
  */
1667
- _mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO,
1595
+ _mediaType: RCCallPlusMediaType,
1668
1596
  /**
1669
1597
  * session 呼叫发起者
1670
1598
  */
@@ -1676,15 +1604,7 @@ declare class RCCallInnerSession extends EventEmitter {
1676
1604
  /**
1677
1605
  * 当前 session 人员信息列表
1678
1606
  */
1679
- _callUsers: ISessionUser[], _logger: BasicLogger, _isSecret: boolean,
1680
- /**
1681
- * 同步数据
1682
- */
1683
- _syncData?: string,
1684
- /**
1685
- * 通话加密密钥
1686
- */
1687
- _secretKey?: string);
1607
+ _callUsers: ISessionUser[], _logger: BasicLogger);
1688
1608
  /**
1689
1609
  * 获取 CallID
1690
1610
  */
@@ -1700,7 +1620,7 @@ declare class RCCallInnerSession extends EventEmitter {
1700
1620
  /**
1701
1621
  * 获取媒体类型
1702
1622
  */
1703
- getMediaType(): RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
1623
+ getMediaType(): RCCallPlusMediaType;
1704
1624
  /**
1705
1625
  * 获取 session 发起者
1706
1626
  */
@@ -1716,7 +1636,7 @@ declare class RCCallInnerSession extends EventEmitter {
1716
1636
  /**
1717
1637
  * 请求更新的 mediaType
1718
1638
  */
1719
- getReqMediaType(): RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO | null;
1639
+ getReqMediaType(): RCCallPlusMediaType | null;
1720
1640
  /**
1721
1641
  * inviterTimerId
1722
1642
  */
@@ -1726,7 +1646,6 @@ declare class RCCallInnerSession extends EventEmitter {
1726
1646
  */
1727
1647
  getInviteeTimerId(): number;
1728
1648
  getAllTimerIds(): number[];
1729
- setUserDeviceEnable(userId: string, mediaType: RCCallPlusMediaType, enable: boolean, traceId: string): void;
1730
1649
  /**
1731
1650
  * 更新人员列表, 并返回更新的人员列表
1732
1651
  * 根据人员状态去添加、删除、更新
@@ -1746,11 +1665,11 @@ declare class RCCallInnerSession extends EventEmitter {
1746
1665
  /**
1747
1666
  * 更新媒体类型(升降级)
1748
1667
  */
1749
- updateMediaType(mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO): void;
1668
+ updateMediaType(mediaType: RCCallPlusMediaType): void;
1750
1669
  /**
1751
1670
  * 更新请求的媒体类型(升降级)
1752
1671
  */
1753
- updateReqMediaType(mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO | null): void;
1672
+ updateReqMediaType(mediaType: RCCallPlusMediaType | null): void;
1754
1673
  /**
1755
1674
  * 更新 invter timer id
1756
1675
  */
@@ -1764,9 +1683,6 @@ declare class RCCallInnerSession extends EventEmitter {
1764
1683
  */
1765
1684
  setIsLocalClientHangup(isLocalClientHangup: boolean): void;
1766
1685
  getIsLocalClientHangup(): boolean;
1767
- getSyncData(): string | undefined;
1768
- isSecret(): boolean;
1769
- getSecretKey(): string;
1770
1686
  }
1771
1687
 
1772
1688
  declare enum CallServerAction {
@@ -2056,10 +1972,13 @@ declare class RCCallPlusReportModule {
2056
1972
  audioLevel: number;
2057
1973
  }[]): void;
2058
1974
  onReceivedCallPlusSummaryMessage(message: IRCCallPlusReceivedSummaryMessage): void;
1975
+ onReceivedGroupCallStatusMessage(message: IReceivedGroupCallStatusMessage): void;
2059
1976
  }
2060
1977
 
2061
1978
  declare class SignalTransporter extends EventEmitter {
2062
1979
  private readonly _context;
1980
+ private readonly _runtime;
1981
+ private readonly _initOpts;
2063
1982
  private readonly _timeCorrectioner;
2064
1983
  private readonly _logger;
2065
1984
  private readonly _reportAppEventModule;
@@ -2075,8 +1994,10 @@ declare class SignalTransporter extends EventEmitter {
2075
1994
  /**
2076
1995
  * constructor
2077
1996
  */
2078
- constructor(_context: PluginContext, _timeCorrectioner: TimeCorrectioner, _logger: BasicLogger, _reportAppEventModule: RCCallPlusReportModule);
1997
+ constructor(_context: PluginContext, _runtime: IRuntime, _initOpts: ICallPlusInitOpts, _timeCorrectioner: TimeCorrectioner, _logger: BasicLogger, _reportAppEventModule: RCCallPlusReportModule);
2079
1998
  private _onMessage;
1999
+ private _dealMissMessage;
2000
+ private _dealGroupCallMessage;
2080
2001
  getSessionId(): string;
2081
2002
  getDeviceId(): string;
2082
2003
  registerListener(listener: ISignalTransporterListener): void;
@@ -2207,7 +2128,7 @@ declare class SignalTransporter extends EventEmitter {
2207
2128
  /**
2208
2129
  * 补偿数据处理
2209
2130
  */
2210
- private _onCompensationData;
2131
+ private _onConpensationData;
2211
2132
  }
2212
2133
 
2213
2134
  /**
@@ -2217,8 +2138,9 @@ declare class SignalTransporter extends EventEmitter {
2217
2138
  */
2218
2139
  declare class AbnormalCall {
2219
2140
  private readonly _logger;
2141
+ private _localStore;
2220
2142
  private static _STORAGE_KEY;
2221
- constructor(_logger: BasicLogger);
2143
+ constructor(runtime: IRuntime, _logger: BasicLogger);
2222
2144
  /**
2223
2145
  * 添加异常 callId
2224
2146
  */
@@ -2233,8 +2155,250 @@ declare class AbnormalCall {
2233
2155
  getAbnormalCallIds(userId: string): Promise<string[] | null>;
2234
2156
  }
2235
2157
 
2158
+ declare class RTCModule extends EventEmitter {
2159
+ private readonly _context;
2160
+ private readonly _runtime;
2161
+ private readonly _initOpts;
2162
+ private readonly _logger;
2163
+ private readonly _callEngine;
2164
+ private readonly _reportAppEventModule;
2165
+ static __INNER_RTC_PROCESS_FAILED__: string;
2166
+ static __INNER_RTC_PEERCONNECTION_ABNORMAL_CLOSE__: string;
2167
+ static __INNER_ON_SELF_JOINED__: string;
2168
+ static __INNER_ON_OTHER_JOINED__: string;
2169
+ static __INNER_RECEIVE_FIRST_FRAME__: string;
2170
+ static __INNER_ON_KICKOFF__: string;
2171
+ /**
2172
+ * RCRTC 实例
2173
+ */
2174
+ _rtcClient: RCRTCClient;
2175
+ /**
2176
+ * 己方的音视频 tracks
2177
+ */
2178
+ private _localTracks;
2179
+ /**
2180
+ * RCRTCRoom 实例
2181
+ */
2182
+ _room: RCRTCRoom | null;
2183
+ private _callId;
2184
+ private _callMediaType;
2185
+ private _videoConfig;
2186
+ private _audioConfig;
2187
+ private _isPubTiny;
2188
+ private _audioOutputDeviceId;
2189
+ /**
2190
+ * 视频配置是否变更
2191
+ */
2192
+ private _videoConfigIsChange;
2193
+ /**
2194
+ * 音频配置是否变更
2195
+ */
2196
+ private _audioConfigIsChange;
2197
+ /**
2198
+ * 存储设置的人员和视图
2199
+ */
2200
+ private _userViewMap;
2201
+ private _callPlusStatusReportListener;
2202
+ private _remoteAudioEnable;
2203
+ constructor(_context: PluginContext, _runtime: IRuntime, _initOpts: ICallPlusInitOpts, _logger: BasicLogger, _callEngine: RCCallEngine, _reportAppEventModule: RCCallPlusReportModule);
2204
+ setCallPlusStatusReportListener(listener: IStatusReportListener): void;
2205
+ /**
2206
+ * 取摄像头资源
2207
+ * 内存中有时,返回内存中的视轨
2208
+ */
2209
+ getCameraVideoTrack(traceId: string): Promise<{
2210
+ code: number;
2211
+ track?: RCLocalTrack;
2212
+ }>;
2213
+ /**
2214
+ * 取麦克风资源
2215
+ * 内存中有时,返回内存中的音轨
2216
+ */
2217
+ getMicrophoneAudioTrack(traceId: string): Promise<{
2218
+ code: number;
2219
+ track?: RCLocalTrack;
2220
+ }>;
2221
+ /**
2222
+ * 根据通话类型创建音、视频资源
2223
+ * @param mediaType 音频或音视频
2224
+ */
2225
+ createCallMediaTracks(mediaType: RCCallPlusMediaType, traceId: string): Promise<{
2226
+ code: number;
2227
+ }>;
2228
+ setVideoConfig(videoConfig: IVideoConfig): void;
2229
+ setAudioConfig(audioConfig: IAudioConfig): void;
2230
+ setAudioOutputDeviceId(deviceId: string): Promise<{
2231
+ code: number;
2232
+ }>;
2233
+ destroyAllTracks(traceId: string): void;
2234
+ setAllRemoteAudioEnable(enable: boolean, traceId: string): {
2235
+ code: 80001;
2236
+ } | {
2237
+ code: 0;
2238
+ };
2239
+ destroyTrack(track: RCLocalTrack): Promise<void>;
2240
+ /**
2241
+ * session 连接
2242
+ */
2243
+ sessionConnected(callId: string, traceId: string): Promise<void>;
2244
+ sessionClose(callId: string, traceId: string): Promise<void>;
2245
+ /**
2246
+ * 禁用视频 track
2247
+ */
2248
+ disableVideoTrack(): Promise<{
2249
+ code: number | RCRTCCode;
2250
+ track?: RCLocalTrack;
2251
+ }>;
2252
+ /**
2253
+ * 启用视频track
2254
+ * 1. 启用前应用层需先创建视频 track
2255
+ */
2256
+ enableVideoTrack(traceId: string): Promise<{
2257
+ code: number | RCRTCCode;
2258
+ }>;
2259
+ /**
2260
+ * 通话中切换视频设备
2261
+ */
2262
+ changeVideoDevice(traceId: string): Promise<{
2263
+ code: number;
2264
+ track?: RCLocalTrack;
2265
+ }>;
2266
+ /**
2267
+ * 通话中更换音频设备
2268
+ */
2269
+ changeAudioDevice(traceId: string): Promise<{
2270
+ code: number;
2271
+ }>;
2272
+ /**
2273
+ * 禁用音频 track
2274
+ */
2275
+ disableAudioTrack(): Promise<{
2276
+ code: number | RCRTCCode;
2277
+ track?: RCLocalTrack;
2278
+ }>;
2279
+ /**
2280
+ * 媒体类型升、降
2281
+ */
2282
+ changeMediaType(mediaType: RCCallPlusMediaType, traceId: string): Promise<void>;
2283
+ /**
2284
+ * 升级 音频 -> 音视频
2285
+ * 1. 业务层需要先通过 createLocalTracks 创建本地视频 track
2286
+ * 2. SDK 只处理发布视频 track
2287
+ */
2288
+ private _upgradeMediaType;
2289
+ /**
2290
+ * 降级处理
2291
+ */
2292
+ private _downgradeMediaType;
2293
+ /**
2294
+ * 加入 RTC 房间
2295
+ */
2296
+ joinRTCRoom(callId: string, traceId: string): Promise<{
2297
+ code: number;
2298
+ room?: RCRTCRoom;
2299
+ tracks?: RCRemoteTrack[];
2300
+ }>;
2301
+ /**
2302
+ * RTC 订阅
2303
+ */
2304
+ subscribeTracks(tracks: (ISubscribeAttr)[], traceId: string): Promise<{
2305
+ code: number;
2306
+ }>;
2307
+ /**
2308
+ * RTC 取消订阅
2309
+ */
2310
+ unsubscribeTracks(tracks: RCRemoteTrack[], traceId: string): Promise<{
2311
+ code: number;
2312
+ }>;
2313
+ private _releaseStoredData;
2314
+ getRemoteTracks(): {
2315
+ [userId: string]: RCRemoteTrack[];
2316
+ };
2317
+ getRemoteTrack(userId: string, mediaType: RCCallPlusMediaType): RCRemoteTrack | undefined;
2318
+ getRTCSessionId(): string | null;
2319
+ /** ======私有方法============================================================================================= */
2320
+ /**
2321
+ * RTC 事件监听注册
2322
+ */
2323
+ private _regRTCListeners;
2324
+ private _onLocalTrackReady;
2325
+ private _onRemoteTrackReady;
2326
+ private _onKickOff;
2327
+ /**
2328
+ * RTC Peer 异常关闭
2329
+ * 移动端未处理此回调,定义 sysStatus 为 CONNECTION_ERR
2330
+ */
2331
+ private _onRTCPeerConnectionCloseByException;
2332
+ private _onSelfJoined;
2333
+ private _onRemoteTrackPublish;
2334
+ private _onTrackUnpublish;
2335
+ private _onAudioMuteChange;
2336
+ private _onVideoMuteChagne;
2337
+ private _onRTCStateReport;
2338
+ /**
2339
+ * RTC 接收最终失败后需要调用 hangup 挂断的情况
2340
+ */
2341
+ private _onRTCMethodFail;
2342
+ private _onOtherMemJoined;
2343
+ /**
2344
+ * 创建本地音频 track, 创建成功后保存本地并回调通知
2345
+ */
2346
+ private _createAudioTrack;
2347
+ /**
2348
+ * 创建本地视频 track, 创建成功后保存本地并回调通知
2349
+ */
2350
+ private _createVideoTrack;
2351
+ /**
2352
+ * 获得本地缓存视频 track
2353
+ */
2354
+ getLocalVideoTrack(): RCLocalTrack | undefined;
2355
+ /**
2356
+ * 获得本地缓存音频 track
2357
+ */
2358
+ getLocalAudioTrack(): RCLocalTrack | undefined;
2359
+ /**
2360
+ * 发布本地资源的逻辑
2361
+ */
2362
+ publish(tracks: (RCLocalTrack | IPublishAttrs)[], traceId: string): Promise<{
2363
+ code: number;
2364
+ }>;
2365
+ publishVideoTrack(): Promise<IPubSuccessRes>;
2366
+ setVideoView(list: {
2367
+ userId: string;
2368
+ videoElement: HTMLVideoElement;
2369
+ isTiny?: boolean;
2370
+ }[], traceId: string): void;
2371
+ /**
2372
+ * 删除视图时,取消订阅资源
2373
+ */
2374
+ removeVideoView(userIds: string[], traceId: string): void;
2375
+ /**
2376
+ * 获取存储的人员和 video 元素数据
2377
+ */
2378
+ getUserViewMap(): {
2379
+ [userId: string]: {
2380
+ videoView: HTMLVideoElement;
2381
+ isTiny: boolean;
2382
+ };
2383
+ };
2384
+ /**
2385
+ * 播放媒体资源
2386
+ */
2387
+ playMedia(userId: string, mediaType: RCCallPlusMediaType, videoView: HTMLVideoElement, traceId: string): Promise<{
2388
+ code: 80104;
2389
+ } | {
2390
+ code: 80102;
2391
+ } | {
2392
+ code: RCRTCCode.PB_ERROR | RCRTCCode.SIGNAL_DISCONNECTED | RCRTCCode.PARAMS_ERROR | RCRTCCode.REPERT_JOIN_ROOM | RCRTCCode.NOT_IN_ROOM | RCRTCCode.SERVICE_INVALID | RCRTCCode.RTC_TOKEN_INVALID | RCRTCCode.SIGNAL_ERROR | RCRTCCode.CREATE_OFFER_FAILED | RCRTCCode.REQUEST_FAILED | RCRTCCode.MCU_SERVER_NOT_FOUND | RCRTCCode.BROADCAST_SUB_LIST_NOT_EMPTY | RCRTCCode.ROOM_HAS_BEEN_DESTROYED | RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER | RCRTCCode.GET_USER_MEDIA_FAILED | RCRTCCode.GET_DISPLAY_MEDIA_FAILED | RCRTCCode.BROWSER_PERMISSION_DENIED | RCRTCCode.CREATE_CUSTOM_TRACK_FAILED | RCRTCCode.INVALID_TAGS | RCRTCCode.INVALID_USER_ID | RCRTCCode.CREATE_FILE_TRACK_FAILED | RCRTCCode.INVALID_FILE_INSTANCE | RCRTCCode.SET_REMOTE_DESCRIPTION_FAILED | RCRTCCode.BROWSER_NOT_SUPPORT | RCRTCCode.TRACK_NOT_READY | RCRTCCode.VIDEO_TRACK_MISS_MEDIA_ELEMENT | RCRTCCode.TRACK_PLAY_ERROR | RCRTCCode.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED | RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED | RCRTCCode.PACKAGE_ENVIRONMENT_ERROR | RCRTCCode.PUBLISH_TRACK_LIMIT_EXCEEDED | RCRTCCode.CDN_RESOURCE_IS_EMPTY | RCRTCCode.SIGNAL_JOIN_RTC_ROOM_REFUSED | RCRTCCode.NO_PERMISSION_TO_USE_REQUESTED_DEVICE | RCRTCCode.THE_FUNCTION_IS_DISABLED_IN_PKROOM | RCRTCCode.SOME_TRACKS_PUBLISH_FAILED | RCRTCCode.MAC_IN_ELECTRON_NOT_SUPPORT_SCREEN_SHARE_WITH_AUDIO | RCRTCCode.JWT_TIME_OUT | RCRTCCode.SYSTEM_PERMISSION_DENIED | RCRTCCode.PUBLISH_TRACKS_IS_INVALID | RCRTCCode.TRACK_READYSTATE_IS_ENDED | RCRTCCode.APPLY_3A_NOISE_WORKLET_BEFORE_PUBLISH | RCRTCCode.LOAD_3A_MODULE_FAILED;
2393
+ } | {
2394
+ code: 0;
2395
+ }>;
2396
+ }
2397
+
2236
2398
  declare class RCCallEngine extends EventEmitter {
2237
2399
  private readonly _context;
2400
+ private readonly _runtime;
2401
+ private readonly _initOpts;
2238
2402
  private readonly _logger;
2239
2403
  private readonly _reportAppEventModule;
2240
2404
  static __INNER_SESSION_CLOSE__: string;
@@ -2276,10 +2440,14 @@ declare class RCCallEngine extends EventEmitter {
2276
2440
  * client callId
2277
2441
  */
2278
2442
  private _clientCallId;
2443
+ /**
2444
+ * session 需使用 rtc 模块取设备状态
2445
+ */
2446
+ private _rtcModule;
2279
2447
  /**
2280
2448
  * 构造器
2281
2449
  */
2282
- constructor(_context: PluginContext, _logger: BasicLogger, _reportAppEventModule: RCCallPlusReportModule);
2450
+ constructor(_context: PluginContext, _runtime: IRuntime, _initOpts: ICallPlusInitOpts, _logger: BasicLogger, _reportAppEventModule: RCCallPlusReportModule);
2283
2451
  /**
2284
2452
  * 发起呼叫
2285
2453
  */
@@ -2401,8 +2569,7 @@ declare class RCCallEngine extends EventEmitter {
2401
2569
  * 通知人员状态
2402
2570
  * CallClient 也需要更新人员状态,定义为公共函数
2403
2571
  */
2404
- updateUsersState(callId: string, users: ISessionUser[], traceId: string): void;
2405
- setUserDeviceEnable(userId: string, mediaType: RCCallPlusMediaType, enable: boolean, traceId: string): void;
2572
+ updateUsersState(callId: string, users: ISessionUser[], traceId: string): ISessionUser[];
2406
2573
  /**
2407
2574
  * 获取通话开始时间
2408
2575
  */
@@ -2443,6 +2610,7 @@ declare class RCCallEngine extends EventEmitter {
2443
2610
  endCurrentUserAbnormalCalls(allDevice: boolean): Promise<{
2444
2611
  code: number;
2445
2612
  }>;
2613
+ setRTCModule(rtcModule: RTCModule): void;
2446
2614
  /** ======私有方法============================================================================================= */
2447
2615
  /**
2448
2616
  * IM 状态变更处理
@@ -2528,7 +2696,7 @@ declare class RCCallEngine extends EventEmitter {
2528
2696
  * A2 多端在接听和直接加入 call 时,上报 onPhoneEnd 状态,消除 B 端展示的 onPhone 状态
2529
2697
  */
2530
2698
  private _clearMobileOnPhone;
2531
- private _onUserStateChange;
2699
+ reportRemoteUserStateChange(callId: string, users: ISessionUser[], traceId: string): void;
2532
2700
  private _onOtherMemberInvite;
2533
2701
  private _onRequestChangeMediaType;
2534
2702
  private _receiveMediaTypeChangeResult;
@@ -2542,10 +2710,12 @@ declare class RCCallPlusSession {
2542
2710
  private readonly _session;
2543
2711
  private readonly _callEngine;
2544
2712
  private readonly _logger;
2713
+ private readonly _rtcModule;
2714
+ private readonly _context;
2545
2715
  private _startTime;
2546
2716
  private _duration;
2547
2717
  private _callId;
2548
- constructor(_session: RCCallInnerSession, _callEngine: RCCallEngine, _logger: BasicLogger);
2718
+ constructor(_session: RCCallInnerSession, _callEngine: RCCallEngine, _logger: BasicLogger, _rtcModule: RTCModule, _context: PluginContext);
2549
2719
  /**
2550
2720
  * 获取 CallId
2551
2721
  */
@@ -2561,7 +2731,7 @@ declare class RCCallPlusSession {
2561
2731
  /**
2562
2732
  * 获取通话媒体类型
2563
2733
  */
2564
- getMediaType(): RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
2734
+ getMediaType(): RCCallPlusMediaType;
2565
2735
  /**
2566
2736
  * 获取通话人员列表
2567
2737
  */
@@ -2593,20 +2763,6 @@ declare class RCCallPlusSession {
2593
2763
  code: number;
2594
2764
  duration?: number;
2595
2765
  }>;
2596
- /**
2597
- * 获取通话中的缓存数据,数据由通话发起人在发起通话时定义
2598
- * @returns
2599
- */
2600
- getSyncData(): string | undefined;
2601
- /**
2602
- * 通话是否已加密
2603
- * @returns
2604
- */
2605
- isSecret(): boolean;
2606
- /**
2607
- * 获取通话加密密钥
2608
- */
2609
- getSecretKey(): string;
2610
2766
  }
2611
2767
 
2612
2768
  /**
@@ -2707,9 +2863,13 @@ interface ICallPlusInitOpts {
2707
2863
  * 是否发布小流
2708
2864
  */
2709
2865
  isPubTiny?: boolean;
2866
+ /**
2867
+ * ring 状态下是否允许立即开始新通话,默认为 true
2868
+ */
2869
+ isAllowNewCallWhenRinging?: boolean;
2710
2870
  }
2711
2871
  /**
2712
- * 通话记录的消息 content 字段
2872
+ * 单呼通话记录的消息 content 字段
2713
2873
  */
2714
2874
  interface IRCCallPlusSummaryMessageContent {
2715
2875
  /**
@@ -2744,95 +2904,96 @@ interface IRCCallPlusSummaryMessageContent {
2744
2904
  * 通话挂断原因
2745
2905
  */
2746
2906
  hangupReason: RCCallPlusReason;
2907
+ }
2908
+ /**
2909
+ * 群呼通话记录的类型
2910
+ */
2911
+ declare enum IGroupCallStatusMessageType {
2747
2912
  /**
2748
- * 是否为加密通话
2749
- */
2750
- isSecret: boolean;
2751
- /**
2752
- * 通话发起人定义的同步信息
2913
+ * 群呼通话开始
2753
2914
  */
2754
- syncData?: string;
2915
+ START = 1,
2755
2916
  /**
2756
- * 是否是本人挂断
2917
+ * 群呼通话结束
2757
2918
  */
2758
- isSelfHangup: boolean;
2919
+ END = 2
2759
2920
  }
2760
2921
  /**
2761
- * 通话记录的消息结构定义
2922
+ * 群呼通话记录的消息 content 字段
2762
2923
  */
2763
- interface IRCCallPlusReceivedSummaryMessage extends IReceivedMessage {
2764
- }
2765
- /**
2766
- * 发起呼叫参数
2767
- */
2768
- interface IRCCallPlusStartParams {
2924
+ interface IRCCallPlusGroupCallStatusMessageContent {
2769
2925
  /**
2770
- * callId,量子生成相同密钥时使用
2926
+ * 通话呼叫id
2771
2927
  */
2772
- callId?: string;
2928
+ callId: string;
2773
2929
  /**
2774
- * 被叫方通话用户列表
2930
+ * 群呼状态:
2931
+ * 1:群呼通话开始
2932
+ * 2:群呼通话结束
2775
2933
  */
2776
- userIds: string[];
2934
+ eventType: IGroupCallStatusMessageType;
2777
2935
  /**
2778
- * 通话类型,默认为 `RCCallPlusType.SINGLE`
2779
- * * `RCCallPlusType.SINGLE` - 发起单人呼叫
2780
- * * `RCCallPlusType.MULTI` - 发起多人呼叫
2936
+ * 群组 Id
2781
2937
  */
2782
- type?: RCCallPlusType;
2938
+ groupId: string;
2783
2939
  /**
2784
- * 通话媒体类型,默认为 `RCCallPlusMediaType.AUDIO_VIDEO` 音视频通话
2785
- * * `RCCallPlusMediaType.AUDIO` - 音频通话
2786
- * * `RCCallPlusMediaType.AUDIO_VIDEO` - 音视频通话
2940
+ * 通话类型(0: AUDIO, 1: VIDEO)
2787
2941
  */
2788
- mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO;
2942
+ mediaType: RCCallPlusMediaType;
2789
2943
  /**
2790
- * 推送配置,用于定义移动端接收呼叫时的推送行为
2944
+ * 发起者 ID
2791
2945
  */
2792
- pushConfig?: IRCCallPlusPushConfig;
2946
+ startUserId: string;
2947
+ /**
2948
+ * 通话开始时间
2949
+ */
2950
+ startTime: number;
2793
2951
  /**
2794
- * 透传信息,该信息将通过 `onReceivedCall` 回调时透传给被叫方
2952
+ * 同步时间
2795
2953
  */
2796
- extra?: string;
2954
+ syncTime: number;
2797
2955
  /**
2798
- * 定义通话同步数据,该数据与 `extra` 不同点,在于数据会被服务器存储,同时可通过 `session.getSyncData()` 获取;
2799
- * 数据不可超出 1024 Bytes
2956
+ * 通话结束时间
2800
2957
  */
2801
- syncData?: string;
2958
+ endTime: number;
2802
2959
  /**
2803
- * 加密配置
2960
+ * 是否加密通话
2804
2961
  */
2805
- encryption?: {
2806
- /**
2807
- * 是否加密,默认不加密
2808
- */
2809
- isSecret: boolean;
2810
- /**
2811
- * 密钥
2812
- */
2813
- secretKey: string;
2814
- };
2962
+ secretChat: SecretCallType;
2963
+ }
2964
+ /**
2965
+ * 单呼通话记录的消息结构定义
2966
+ */
2967
+ interface IRCCallPlusReceivedSummaryMessage extends IReceivedMessage {
2968
+ }
2969
+ /**
2970
+ * 群呼通话记录的消息结构定义
2971
+ */
2972
+ interface IReceivedGroupCallStatusMessage extends IReceivedMessage {
2815
2973
  }
2816
2974
  /**
2817
2975
  * callPlus 对外事件定义
2818
2976
  */
2819
2977
  interface ICallPlusEventListener {
2820
2978
  /**
2821
- * 呼入通知
2822
- * 收到呼入时,可选择接听或挂断通话
2979
+ * 被呼叫通知
2980
+ * 被呼叫或被邀请时,收到的通知
2981
+ * 收到被呼叫时,可选择接听或挂断通话
2823
2982
  * @param session 通话实例
2824
2983
  * @param extra 透传呼叫方发起呼叫时携带的附加信息
2825
2984
  */
2826
2985
  onReceivedCall(session: RCCallPlusSession, extra?: string): void;
2827
2986
  /**
2828
- * 群组通话收到远端人员被邀请加入通话通知,如 A 与 B 通话中,A 邀请 C,则 B 会收到此回调
2829
- * @param inviteeUserList - 受邀人用户 ID 列表
2830
- * @param inviterUserId - 邀请者用户 ID
2987
+ * 群组通话中,远端人员被邀请通知,如 A 与 B 通话中,A 邀请 C,则 B 会收到此回调
2988
+ * @param inviteeUserList - 被邀请用户 ID 列表
2989
+ * @param inviterUserId - 发起邀请者的用户 ID
2831
2990
  * @param callId - 所属通话;群聊中,己方已不在通话中的情况下,也会收到服务侧的事件通知
2832
2991
  */
2833
2992
  onRemoteUserInvited(inviteeUserList: string[], inviterUserId: string, callId: string): void;
2834
2993
  /**
2835
- * 通话已建立,sdk 内部会发布音视频资源
2994
+ * 通话建立成功通知
2995
+ * 通话建立后,sdk 内部会发布音视频资源
2996
+ * @param session 通话实例
2836
2997
  */
2837
2998
  onCallConnected(session: RCCallPlusSession): void;
2838
2999
  /**
@@ -2843,54 +3004,54 @@ interface ICallPlusEventListener {
2843
3004
  */
2844
3005
  onUserMediaAvailable(userId: string, mediaType: RCCallPlusMediaType): void;
2845
3006
  /**
2846
- * 通话结束(群组通话时,客户端挂断不代表通话结束)
3007
+ * 通话结束通知
3008
+ * @description 群组通话,收到此通知时,仅代表本人退出通话,不代表通话结束,因为其他人可能仍在通话中
2847
3009
  * @param session 通话实例
2848
3010
  * @param reason 通话结束原因
2849
3011
  */
2850
3012
  onCallEnded(session: RCCallPlusSession, reason: RCCallPlusReason): void;
2851
3013
  /**
2852
- * 通话类型变更
2853
- * @param type 单呼或群呼
3014
+ * 通话类型变更通知
3015
+ * @param type 通话类型,单呼或群呼
2854
3016
  * @param callId 通话 id
2855
3017
  */
2856
3018
  onCallTypeChanged?(type: RCCallPlusType, callId: string): void;
2857
3019
  /**
2858
- * 人员状态变更
2859
- * @param callId 通话 id
2860
- * @param userId 状态变更人员 id
2861
- * @param state 人员变更后状态
2862
- * @param reason 变更原因
2863
- * @param extra 透传远端人员接听、挂断时携带的附加信息
3020
+ * 远端人员状态变更通知
3021
+ * @param callId 通话 Id
3022
+ * @param userId 远端人员的 userId
3023
+ * @param state 远端用户变更后的状态
3024
+ * @param reason 远端用户状态变更原因
2864
3025
  */
2865
3026
  onRemoteUserStateChanged?(callId: string, userId: string, state: RCCallPlusSessionUserState, reason?: RCCallPlusReason): void;
2866
3027
  /**
2867
- * 远端摄像头开、关通知
3028
+ * 远端用户摄像头开、关状态通知
2868
3029
  * @param callId 通话 id
2869
- * @param userId 用户 id
2870
- * @param disabled 是否关闭
3030
+ * @param userId 远端用户 id
3031
+ * @param disabled 摄像头是否关闭,true 为关闭状态,false 为打开状态
2871
3032
  */
2872
3033
  onRemoteCameraStateChanged?(callId: string, userId: string, disabled: boolean): void;
2873
3034
  /**
2874
- * 远端麦克风开、关通知
3035
+ * 远端用户麦克风开、关状态通知
2875
3036
  * @param callId 通话 id
2876
- * @param userId 用户 id
2877
- * @param disabled 是否关闭
3037
+ * @param userId 远端用户 id
3038
+ * @param disabled 麦克风是否关闭,true 为关闭状态,false 为打开状态
2878
3039
  */
2879
3040
  onRemoteMicrophoneStateChanged?(callId: string, userId: string, disabled: boolean): void;
2880
3041
  /**
2881
- * 单呼或群呼结束后,服务器下发的通话日志
3042
+ * 单呼或群呼结束后,服务器下发通话记录通知
2882
3043
  * @param record 数据接口定义为:IRCCallPlusCallRecord,可通过 apiDoc 查看具体包含字段
2883
3044
  */
2884
3045
  onReceivedCallRecord?(record: IRCCallPlusCallRecord): void;
2885
3046
  /**
2886
- * 收到媒体类型变更请求(仅单聊)
2887
- * @param userId 请求发起人
3047
+ * 通话中,收到远端用户请求切换媒体类型通知(仅单聊)
3048
+ * @param userId 远端用户 id,即请求发起人
2888
3049
  * @param transactionId 事物 id,本次请求和应答的唯一标识
2889
- * @param mediaType 请求变更的媒体类型
3050
+ * @param mediaType 请求切换的媒体类型,音频或音视频
2890
3051
  */
2891
3052
  onReceivedChangeMediaTypeRequest?(userId: string, transactionId: string, mediaType: RCCallPlusMediaType): void;
2892
3053
  /**
2893
- * 媒体类型变更结果(仅单聊)
3054
+ * 通话中,收到切换媒体类型结果通知(仅单聊)
2894
3055
  * @param info.userId
2895
3056
  * @param info.transactionId 事物 id,本次请求和应答的唯一标识
2896
3057
  * @param info.mediaType 最终的媒体类型
@@ -2906,10 +3067,11 @@ interface ICallPlusEventListener {
2906
3067
  code: RCCallPlusMediaTypeChangeResult;
2907
3068
  }): void;
2908
3069
  /**
2909
- * 收到通话开始计时
3070
+ * 通话开始时间通知
2910
3071
  * @param info.callId 通话 id
2911
- * @param info.callType 单聊或群聊
2912
- * @param info.callStartTime 通话开始时间
3072
+ * @param info.callType 通话类型,单聊或群聊
3073
+ * @param info.callStartTime 通话开始时间戳(ms)
3074
+ * @description 通话开始时间戳,为通话对应的房间首次被加入时的时间
2913
3075
  */
2914
3076
  onReceivedCallStartTime?(info: {
2915
3077
  callId: string;
@@ -2917,10 +3079,11 @@ interface ICallPlusEventListener {
2917
3079
  callStartTime: number;
2918
3080
  }): void;
2919
3081
  /**
2920
- * 收到首帧时间
2921
- * 收到首帧开始计费
3082
+ * 收到首帧时间通知
3083
+ * 通话从首帧时间开始计费
2922
3084
  * @param callId 通话 id
2923
3085
  * @param callFirstFrameTime 通话首帧到达时间
3086
+ * @description 首帧时间戳,为通话中所有用户最早收到首帧的时间
2924
3087
  */
2925
3088
  onReceivedCallFirstFrameTime?(callId: string, callFirstFrameTime: number): void;
2926
3089
  /**
@@ -2930,20 +3093,32 @@ interface ICallPlusEventListener {
2930
3093
  */
2931
3094
  onFetchRemoteMediaError?(userId: string, code: number): void;
2932
3095
  /**
2933
- * 人员音量变化
3096
+ * 通话中人员音量通知
3097
+ * @description 默认每秒上报一次
2934
3098
  * @param userId 本端或远端人员 id
2935
3099
  * @param audioLevel 音量值(0-100)
2936
3100
  */
2937
3101
  onUserAudioLevelChanged?(userId: string, audioLevel: number): void;
2938
3102
  /**
2939
- * 收到通话结束的消息记录,可用于在 IM 聊天界面插入通话结束消息
2940
- * 仅单聊可收到
3103
+ * 收到通话结束的消息记录通知
3104
+ * @description 仅单聊可收到,可用于在 IM 聊天界面插入通话结束消息
2941
3105
  * 触发时机:
2942
3106
  * 1.单聊在线通话结束后
2943
3107
  * 2.离线时收到单聊呼叫,通话结束后,重新连接 IM 在线时
2944
3108
  * @param message 通话记录的消息体
2945
3109
  */
2946
3110
  onReceivedCallPlusSummaryMessage?(message: IRCCallPlusReceivedSummaryMessage): void;
3111
+ /**
3112
+ * 收到群组通话开始和结束的消息,可用于在 IM 聊天界面插入通话开始和结束消息
3113
+ * 触发条件:
3114
+ * 1.仅在同一个群组中的人员可收到
3115
+ * 2.需在发起呼叫时设置 targtId 参数,targtId 为群组 id
3116
+ * 触发时机:
3117
+ * 1.群组通话开始或结束后
3118
+ * 2.离线时群组里产生新通话,重新连接 IM 在线时
3119
+ * @param message 通话记录的消息体
3120
+ */
3121
+ onReceivedGroupCallStatusMessage?(message: IReceivedGroupCallStatusMessage): void;
2947
3122
  }
2948
3123
  /**
2949
3124
  * 通话前视频配置
@@ -3067,15 +3242,6 @@ interface IStatusReportListener {
3067
3242
  onReceivePacketLoss(data: {
3068
3243
  [userId: string]: RCCallPlusPacketLossStats;
3069
3244
  }): void;
3070
- /**
3071
- * 上报远端视频信息,每秒回调一次
3072
- * @param info.width 视频宽度
3073
- * @param info.height 视频高度
3074
- */
3075
- onReceiveRemoteVideoInfo?(info: {
3076
- width: number;
3077
- height: number;
3078
- }): void;
3079
3245
  }
3080
3246
  /**
3081
3247
  * 人员及人员状态
@@ -3092,6 +3258,10 @@ interface IRCCallPlusPushConfig {
3092
3258
  * 推送标题
3093
3259
  */
3094
3260
  pushTitle: string;
3261
+ /**
3262
+ * 推送内容
3263
+ */
3264
+ pushContent?: string;
3095
3265
  /**
3096
3266
  * iOSConfig
3097
3267
  */
@@ -3198,19 +3368,6 @@ interface IAndroidPushConfig {
3198
3368
  */
3199
3369
  imageUrlHonor?: string;
3200
3370
  }
3201
- /**
3202
- * 服务端需要的 pushConfig 数据格式
3203
- */
3204
- interface IServerPushExt {
3205
- title: string;
3206
- templateId: string;
3207
- pushId: string;
3208
- disableTitle: boolean;
3209
- forceShowPushContent: boolean;
3210
- pushConfigs: {
3211
- [key: string]: any;
3212
- }[];
3213
- }
3214
3371
 
3215
3372
  declare class RCAudioConfigBuilder {
3216
3373
  private _logger;
@@ -3336,6 +3493,7 @@ declare class RCCallPlusAndroidPushConfigBuilder {
3336
3493
  declare class RCCallPlusClient {
3337
3494
  private readonly _context;
3338
3495
  private readonly _logger;
3496
+ private readonly _runtime;
3339
3497
  private readonly _initOpts;
3340
3498
  /**
3341
3499
  * 摄像头采集配置
@@ -3367,7 +3525,7 @@ declare class RCCallPlusClient {
3367
3525
  * 上报应用层事件模块
3368
3526
  */
3369
3527
  _reportAppEventModule: RCCallPlusReportModule;
3370
- constructor(_context: PluginContext, _logger: BasicLogger, _initOpts: ICallPlusInitOpts);
3528
+ constructor(_context: PluginContext, _logger: BasicLogger, _runtime: IRuntime, _initOpts: ICallPlusInitOpts);
3371
3529
  /**
3372
3530
  * 加房间、发布、订阅失败时需结束通话,并上报原因
3373
3531
  */
@@ -3392,10 +3550,6 @@ declare class RCCallPlusClient {
3392
3550
  * 被踢出房间时,需结束通话
3393
3551
  */
3394
3552
  private _kickoffHandle;
3395
- /**
3396
- * 远端资源音视频状态变化,需更新 session 中人员的设备状态
3397
- */
3398
- private _receiveDeviceEnableChangeHandle;
3399
3553
  /**
3400
3554
  * 通话挂断时,需清空内存,离开房间
3401
3555
  */
@@ -3404,10 +3558,11 @@ declare class RCCallPlusClient {
3404
3558
  * 注册应用层事件
3405
3559
  * 包含“收到呼叫、通话结束、通话人员状态变更、通话类型变更”等事件
3406
3560
  * ICallPlusEventListener 对象请参考 apiDoc
3561
+ * @description 重复调用时,会覆盖前一次的设置
3407
3562
  */
3408
3563
  setCallPlusEventListener(listener: ICallPlusEventListener): void;
3409
3564
  /**
3410
- * 注册音视频上下行丢包数据监听
3565
+ * 设置通话质量数据监听
3411
3566
  * 每秒上报一次
3412
3567
  * @param listener 类型为 IStatusReportListener,详细定义可参考 apiDoc
3413
3568
  * @param listener.onSendPacketLoss 发送丢包率信息回调
@@ -3415,11 +3570,12 @@ declare class RCCallPlusClient {
3415
3570
  */
3416
3571
  setStatusReportListener(listener: IStatusReportListener): void;
3417
3572
  /**
3418
- * 设置要观看人员(包括自己和对方)的媒体播放器
3573
+ * 设置渲染视图(包括自己和对方)
3419
3574
  * @param list 为一个列表,可传入多人的媒体播放器
3420
3575
  * @param item.userId 用户 id
3421
3576
  * @param item.videoElement 一个 video 元素,用于播放视频,需要挂载在业务层页面上
3422
3577
  * @param item.isTiny 是否观看别人的小流,小窗口时可以配置为 true,可节省带宽,userId 为远端用户时有效
3578
+ * @description 暂不支持动态切换大小流
3423
3579
  * @returns code 返回是否设置成功
3424
3580
  */
3425
3581
  setVideoView(list: {
@@ -3430,7 +3586,7 @@ declare class RCCallPlusClient {
3430
3586
  code: number;
3431
3587
  };
3432
3588
  /**
3433
- * 删除某个人的媒体播放器
3589
+ * 删除渲染视图
3434
3590
  * 不观看某个人的视频时,业务层可以直接移除对应的 video 标签,
3435
3591
  * 调 removeVideoView 方法,SDK 内部会停止接收对方的媒体传输
3436
3592
  * @param userIds 用户 id 列表
@@ -3444,12 +3600,9 @@ declare class RCCallPlusClient {
3444
3600
  * 播放某个人的视频前,请确保已经调用 `setVideoView` 方法为其设置视频视图
3445
3601
  * @param userId 指定要查看某个人的媒体资源
3446
3602
  * @param mediaType 指定播放音频还是视频
3447
- * @param volume 有效值为 0-100
3448
3603
  * @returns 返回是否播放成功
3449
3604
  */
3450
- playMedia(userId: string, mediaType: RCCallPlusMediaType, options?: {
3451
- volume?: number;
3452
- }): Promise<{
3605
+ playMedia(userId: string, mediaType: RCCallPlusMediaType): Promise<{
3453
3606
  code: number;
3454
3607
  }>;
3455
3608
  /**
@@ -3459,8 +3612,8 @@ declare class RCCallPlusClient {
3459
3612
  */
3460
3613
  createVideoConfigBuilder(): RCVideoConfigBuilder;
3461
3614
  /**
3462
- * 设置视频配置
3463
- * 下次采集时生效,如切换摄像头、重新建立通话
3615
+ * 设置视频配置:分辨率、最大/最小码率、帧率、摄像头 ID 等信息
3616
+ * 需要通话建立前设置
3464
3617
  */
3465
3618
  setVideoConfig(cfg: IVideoConfig): {
3466
3619
  code: number;
@@ -3479,8 +3632,8 @@ declare class RCCallPlusClient {
3479
3632
  */
3480
3633
  createAndroidPushConfigBuilder(): RCCallPlusAndroidPushConfigBuilder;
3481
3634
  /**
3482
- * 设置音频配置
3483
- * 下次采集时生效,如重新建立通话
3635
+ * 设置音频配置:码率、采样率、音频采集设备 ID
3636
+ * 需要通话建立前设置
3484
3637
  */
3485
3638
  setAudioConfig(cfg: IAudioConfig): {
3486
3639
  code: number;
@@ -3494,36 +3647,32 @@ declare class RCCallPlusClient {
3494
3647
  }>;
3495
3648
  /**
3496
3649
  * 发起呼叫
3497
- * @deprecated 接口已废弃,请使用 `startCallWithParams` 接口替代
3498
3650
  * @param userIds 被叫人员 userId 列表,单人呼叫仅需在数组中放置对方一人的 userId
3499
- * @param callType 单人呼叫 or 多人呼叫
3500
- * @param mediaType 通话媒体类型: 音频 or 音视频
3651
+ * @param type 单人呼叫或多人呼叫
3652
+ * @param mediaType 通话媒体类型: 音频或音视频
3501
3653
  * @param pushConfig 移动端推送信息
3502
3654
  * @param extra 附加信息,会透传给被呼叫方
3655
+ * @param targetId 多人通话时,共同所在的群组 id
3656
+ * @description 重试逻辑:信令发送失败时,sdk 内部会间隔 2 秒重试一次,直到成功或超过,超时时间为一分钟
3503
3657
  * @returns callId 呼叫成功后,产生的会话 id
3504
3658
  */
3505
- startCall(userIds: string[], callType?: RCCallPlusType, mediaType?: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO, pushConfig?: IRCCallPlusPushConfig, extra?: string): Promise<{
3506
- code: number;
3507
- callId?: string;
3508
- }>;
3509
- /**
3510
- * 发起呼叫
3511
- * @param params - {@inheritDoc IRCCallPlusStartParams}
3512
- */
3513
- startCallWithParams(params: IRCCallPlusStartParams): Promise<{
3659
+ startCall(userIds: string[], callType?: RCCallPlusType, mediaType?: RCCallPlusMediaType, pushConfig?: IRCCallPlusPushConfig, extra?: string, targetId?: string): Promise<{
3514
3660
  code: number;
3515
3661
  callId?: string;
3516
3662
  }>;
3517
3663
  /**
3518
3664
  * 直接加入进行中的群组通话
3665
+ * @description 只要能获取到群组通话ID,无论是否被邀请过,都可以直接加入
3666
+ * @description 重试逻辑:信令发送失败时,sdk 内部会间隔 2 秒重试一次,直到成功或超过,超时时间为一分钟
3519
3667
  * @param callId 通话 id
3520
3668
  */
3521
3669
  joinMultiCall(callId: string): Promise<{
3522
3670
  code: number;
3523
3671
  }>;
3524
3672
  /**
3525
- * 通话中邀请他人
3526
- * 单人通话中邀请他人会引发通话类型变更
3673
+ * 单聊或群组通话过程中邀请其他人加入
3674
+ * @description 单人通话中邀请他人会引发通话类型变更
3675
+ * @description 重试逻辑:信令发送失败时,sdk 内部会间隔 2 秒重试一次,直到成功或超过,超时时间为一分钟
3527
3676
  * @param userIds 被邀请人列表
3528
3677
  * @param pushConfig 移动端推送信息
3529
3678
  * @param extra 附加信息,会透传给被邀请方
@@ -3535,25 +3684,28 @@ declare class RCCallPlusClient {
3535
3684
  }>;
3536
3685
  /**
3537
3686
  * 接听通话
3687
+ * @description 重试逻辑:信令发送失败时,sdk 内部会间隔 2 秒重试一次,直到成功或超过,超时时间为一分钟
3538
3688
  * @param callId 通话 id
3539
3689
  * @param pushConfig 移动端推送信息
3540
3690
  */
3541
3691
  accept(callId: string, pushConfig?: IRCCallPlusPushConfig): Promise<{
3542
3692
  code: number;
3543
3693
  }>;
3544
- private _innerHangup;
3694
+ private __innerHangup;
3545
3695
  /**
3546
3696
  * 挂断通话
3547
- * @param callId 可选参数;当存在多个通话时,可通过该参数指定要挂断的通话;不传时 SDK 将挂断当前进行中的通话;
3697
+ * @param callId 为可选参数,不传时,挂断正在进行的主 session,传入时可指定挂断主通话或暂未建立连接的通话
3698
+ * 暂未建立连接的通话:指已在通话中时,收到呼叫但暂未接听的通话
3699
+ * 挂断指定通话时,不影响其他通话状态
3548
3700
  * @param pushConfig 移动端推送信息
3549
3701
  */
3550
- hangup(callId?: string, pushConfig?: IRCCallPlusPushConfig, reason?: RCCallPlusReason): Promise<{
3702
+ hangup(callId?: string, pushConfig?: IRCCallPlusPushConfig): Promise<{
3551
3703
  code: number;
3552
3704
  }>;
3553
- private _hangup;
3554
3705
  /**
3555
- * 通话中发起媒体类型变更请求
3556
- * @param mediaType 媒体类型
3706
+ * 通话中发起媒体类型切换请求
3707
+ * @param mediaType 媒体类型,音频或音视频
3708
+ * @description 仅单呼时支持媒体类型切换,无需业务层操作摄像头
3557
3709
  * @returns transactionId 客户端和服务端交互的事务 id,在取消或应答媒体类型切换时传入
3558
3710
  */
3559
3711
  requestChangeMediaType(mediaType: RCCallPlusMediaType.AUDIO | RCCallPlusMediaType.AUDIO_VIDEO): Promise<{
@@ -3561,26 +3713,29 @@ declare class RCCallPlusClient {
3561
3713
  transactionId?: string;
3562
3714
  }>;
3563
3715
  /**
3564
- * 取消切换媒体类型变更请求
3716
+ * 取消已经发起的媒体类型切换请求
3565
3717
  * @param transactionId 客户端和服务端交互的事务 id,为发起媒体类型变更请求返回的 transactionId
3718
+ * @description 仅单呼时支持,可在调用 requestChangeMediaType 之后执行取消
3566
3719
  */
3567
3720
  cancelChangeMediaType(transactionId: string): Promise<{
3568
3721
  code: number;
3569
3722
  }>;
3570
3723
  /**
3571
- * 媒体类型变更应答
3724
+ * 响应通话中媒体类型切换请求
3572
3725
  * @param transactionId 客户端和服务端交互的事务 id,为 onReceivedChangeToVideo 监听收到 transactionId 参数值
3726
+ * @param isAgree 是否同意切换媒体类型
3727
+ * @description 仅单呼时支持
3573
3728
  */
3574
3729
  replyChangeMediaType(transactionId: string, isAgree: boolean): Promise<{
3575
3730
  code: number;
3576
3731
  }>;
3577
3732
  /**
3578
- * 获取当前进行中的通话
3733
+ * 获取当前进行中的通话实例
3579
3734
  * @returns RCCallPlusSession 对象或 null 为当前正在进行的通话对象
3580
3735
  */
3581
3736
  getCurrentCallSession(): RCCallPlusSession | null;
3582
3737
  /**
3583
- * 从服务器获取未结束的通话记录
3738
+ * 从服务器获取当前用户未结束的通话记录
3584
3739
  * @returns records 一组未结束的通话记录
3585
3740
  */
3586
3741
  getAvailableCallRecordsFromServer(): Promise<{
@@ -3588,7 +3743,7 @@ declare class RCCallPlusClient {
3588
3743
  records?: IRCCallPlusCallRecord[];
3589
3744
  }>;
3590
3745
  /**
3591
- * 分页查找当前用户的全部通话记录
3746
+ * 获取当前用户的通话记录
3592
3747
  * @param startTimestamp 起始时间戳,
3593
3748
  * 首次获取可传 -1,倒序时,返回最新的通话记录,正序时,返回最早的通话记录
3594
3749
  * order 为正序时,返回大于此时间戳的通话记录
@@ -3606,20 +3761,21 @@ declare class RCCallPlusClient {
3606
3761
  result?: IRCCallPlusGetCallRecordRes;
3607
3762
  }>;
3608
3763
  /**
3609
- * 根据 callId 集合批量删除通话记录
3610
- * @param callIds callId 列表
3764
+ * 批量删除当前用户通话记录
3765
+ * @param callIds 需要删除通话记录的 callId 列表
3611
3766
  */
3612
3767
  deleteCallRecordsFromServer(callIds: string[]): Promise<{
3613
3768
  code: number;
3614
3769
  }>;
3615
3770
  /**
3616
- * 清空所有通话记录
3771
+ * 删除当前用户所有通话记录
3617
3772
  */
3618
3773
  deleteAllCallRecordsFromServer(): Promise<{
3619
3774
  code: number;
3620
3775
  }>;
3621
3776
  /**
3622
3777
  * 开启摄像头
3778
+ * @description 视频通话建立后默认状态为开启
3623
3779
  * @description 通话过程中打开摄像头,如果扩散资源失败,即对方没收到本端打开摄像头的通知时,此次行为失败
3624
3780
  * @returns track 摄像头视频资源
3625
3781
  */
@@ -3633,7 +3789,8 @@ declare class RCCallPlusClient {
3633
3789
  code: number;
3634
3790
  }>;
3635
3791
  /**
3636
- * 切换摄像头功能,通话前和通话中都可调用。
3792
+ * 切换指定摄像头
3793
+ * @description 通话建立前和通话过程中都可调用
3637
3794
  * @param cameraId 浏览器中取得的摄像头设备 id,可调 getCameras 方法取得
3638
3795
  * @description 切换成功后,`ICallPlusEventListener` 监听器的 `onUserMediaAvailable` 会被触发,此时调用 `callPlusClient.playMedia` 方法播放新的资源。
3639
3796
  */
@@ -3642,6 +3799,7 @@ declare class RCCallPlusClient {
3642
3799
  }>;
3643
3800
  /**
3644
3801
  * 开启麦克风
3802
+ * @description 通话建立后默认开启
3645
3803
  * @description 通话过程中打开麦克风,如果扩散资源失败,即对方没收到本端打开麦克风的通知时,此次行为失败
3646
3804
  */
3647
3805
  startMicrophone(): Promise<{
@@ -3655,12 +3813,13 @@ declare class RCCallPlusClient {
3655
3813
  code: number;
3656
3814
  }>;
3657
3815
  /**
3658
- * 麦克风是否开启
3816
+ * 获取麦克风开关状态
3659
3817
  */
3660
3818
  isMicrophoneEnabled(): boolean;
3661
3819
  /**
3662
3820
  * 设置所有远端音频流是否可用
3663
3821
  * @param enable 为 true 时,启用所有远端音频流;为 false 时,静音所有远端音频流
3822
+ * @description 静音操作仅不播放远端用户音频流,媒体通道还会继续接收远端音频数据
3664
3823
  */
3665
3824
  setAllRemoteAudioEnable(enable: boolean): Promise<{
3666
3825
  code: number;
@@ -3691,14 +3850,8 @@ declare class RCCallPlusClient {
3691
3850
  switchMicrophone(microphoneId: string): Promise<{
3692
3851
  code: number;
3693
3852
  }>;
3694
- /**
3695
- * 客户端生成 callId,量子特定,用于生成同样的密钥
3696
- * 呼叫时传给服务,通话 callId 为此 callId
3697
- * @param userId 用户 id
3698
- */
3699
- generateCallId(userId: string): string;
3700
3853
  }
3701
3854
 
3702
3855
  declare const installer: IPluginGenerator<RCCallPlusClient, ICallPlusInitOpts>;
3703
3856
 
3704
- export { IAndroidPushConfig, IAudioConfig, IAudioConfigBuilder, ICallOpts, ICallPlusEventListener, ICallPlusInitOpts, IRCCallPlusCallRecord, IRCCallPlusGetCallRecordRes, IRCCallPlusPushConfig, IRCCallPlusReceivedSummaryMessage, IRCCallPlusStartParams, IRCCallPlusSummaryMessageContent, IServerPushExt, IStatusReportListener, IVideoConfig, IVideoConfigBuilder, IiOSPushConfig, RCAudioConfigBuilder, RCCallPlusAndroidPushConfigBuilder, RCCallPlusCallState, RCCallPlusCallUser, RCCallPlusClient, RCCallPlusCode, RCCallPlusMediaType, RCCallPlusMediaTypeChangeResult, RCCallPlusPacketLossStats, RCCallPlusReason, RCCallPlusSession, RCCallPlusSessionUserState, RCCallPlusType, RCVideoConfigBuilder, installer };
3857
+ export { IAndroidPushConfig, IAudioConfig, IAudioConfigBuilder, ICallOpts, ICallPlusEventListener, ICallPlusInitOpts, IGroupCallStatusMessageType, IRCCallPlusCallRecord, IRCCallPlusGetCallRecordRes, IRCCallPlusGroupCallStatusMessageContent, IRCCallPlusPushConfig, IRCCallPlusReceivedSummaryMessage, IRCCallPlusSummaryMessageContent, IReceivedGroupCallStatusMessage, IStatusReportListener, IVideoConfig, IVideoConfigBuilder, IiOSPushConfig, RCAudioConfigBuilder, RCCallPlusAndroidPushConfigBuilder, RCCallPlusCallState, RCCallPlusCallUser, RCCallPlusClient, RCCallPlusCode, RCCallPlusMediaType, RCCallPlusMediaTypeChangeResult, RCCallPlusPacketLossStats, RCCallPlusReason, RCCallPlusSession, RCCallPlusSessionUserState, RCCallPlusType, RCVideoConfigBuilder, installer };