UNPKG

nim-web-sdk-ng

Version:

Yunxin IM SDK next generation

712 lines (711 loc) 18.3 kB
import type { NIMEBaseServiceClass } from './types'; /** * v2 信令模块 * * 注: 使用 dist/esm 产物时,需要动态引入 V2NIMSignallingService 后使用 * * @example * ``` * import { NIM, V2NIMSignallingService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMSignallingService, 'V2NIMSignallingService') * ``` */ export declare class V2NIMSignallingService extends NIMEBaseServiceClass<V2NIMSignallingListener> { /** * 直接呼叫对方加入房间 * * 注: 这是一个组合接口, 实现了创建房间 createRoom + 自己加入房间 join + 邀请对方加入房间 invite 的功能. * @example * ```ts * const result = await nim.V2NIMSignallingService.call({ * calleeAccountId: "accountId1", * requestId: "req123", * channelType: 1 * }) * ``` */ call(params: V2NIMSignallingCallParams): Promise<V2NIMSignallingCallResult>; /** * 呼叫建立. * * 注: 这是一个组合接口, 包括加入信令频道房间, 同时接受对方呼叫 * * @param params 接受呼叫参数 * @example * ```ts * const result = await nim.V2NIMSignallingService.callSetup({ * channelId: "channelId", * callerAccountId: "callerId", * requestId: "req123" * }) * ``` */ callSetup(params: V2NIMSignallingCallSetupParams): Promise<V2NIMSignallingCallSetupResult>; /** * 创建信令房间 * @param channelType 频道类型 * @param channelName 频道名称 * @param channelExtension 频道相关扩展字段 * @example * ```ts * const channelInfo = await nim.V2NIMSignallingService.createRoom(1, "roomName") * ``` */ createRoom(channelType: V2NIMSignallingChannelType, channelName?: string, channelExtension?: string): Promise<V2NIMSignallingChannelInfo>; /** * 关闭信令房间接口 * @param channelId 频道ID * @param offlineEnabled 是否需要存离线消息。默认为 false * @param serverExtension 服务端扩展字段 * @example * ```ts * await nim.V2NIMSignallingService.closeRoom("channelId") * ``` */ closeRoom(channelId: string, offlineEnabled?: boolean, serverExtension?: string): Promise<void>; /** * 加入信令房间接口 * @param params 加入信令房间参数 * @example * ```ts * const result = await nim.V2NIMSignallingService.joinRoom({ channelId: "channelId" }) * ``` */ joinRoom(params: V2NIMSignallingJoinParams): Promise<V2NIMSignallingJoinResult>; /** * 离开信令房间接口 * @param channelId 频道ID * @param offlineEnabled 是否需要存离线消息。默认为 false * @param serverExtension 服务端扩展字段 * @example * ```ts * await nim.V2NIMSignallingService.leaveRoom("channelId") * ``` */ leaveRoom(channelId: string, offlineEnabled?: boolean, serverExtension?: string): Promise<void>; /** * 邀请成员加入信令房间接口 * @param params 邀请成员加入信令房间接口参数 * @example * ```ts * await nim.V2NIMSignallingService.invite({ * channelId: "channelId", * inviteeAccountId: "accountId1", * requestId: "req123" * }) * ``` */ invite(params: V2NIMSignallingInviteParams): Promise<void>; /** * 取消之前的邀请成员加入信令房间接口 * @param params 取消之前的邀请成员加入信令房间接口参数 * @example * ```ts * await nim.V2NIMSignallingService.cancelInvite({ * channelId: "channelId", * inviteeAccountId: "accountId1", * requestId: "req123" * }) * ``` */ cancelInvite(params: V2NIMSignallingCancelInviteParams): Promise<void>; /** * 拒绝别人的邀请加入信令房间请求 * @param params 拒绝邀请加入信令房间接口参数 * @example * ```ts * await nim.V2NIMSignallingService.rejectInvite({ * channelId: "channelId", * inviterAccountId: "inviterId", * requestId: "req123" * }) * ``` */ rejectInvite(params: V2NIMSignallingRejectInviteParams): Promise<void>; /** * 接受别人的邀请加入信令房间请求 * @param params 接受邀请加入信令房间接口参数 * @example * ```ts * await nim.V2NIMSignallingService.acceptInvite({ * channelId: "channelId", * inviterAccountId: "inviterId", * requestId: "req123" * }) * ``` */ acceptInvite(params: V2NIMSignallingAcceptInviteParams): Promise<void>; /** * 发送自定义控制指令 * * 注: 可以发送给指定用户, 如果不指定, 则发送给信令房间内的所有人 * * @param channelId 频道ID * @param receiverAccountId 接受者ID * @param serverExtension 服务端扩展字段 * @example * ```ts * await nim.V2NIMSignallingService.sendControl("channelId", "receiverId", '{"action":"mute"}') * ``` */ sendControl(channelId: string, receiverAccountId?: string, serverExtension?: string): Promise<void>; /** * 根据频道名称查询频道房间信息 * * @param channelName 频道名称 * @returns 频道房间信息 * @example * ```ts * const roomInfo = await nim.V2NIMSignallingService.getRoomInfoByChannelName("roomName") * ``` */ getRoomInfoByChannelName(channelName: string): Promise<V2NIMSignallingRoomInfo>; } export declare type V2NIMSignallingJoinResult = { /** * 频道房间相关信息 */ roomInfo: V2NIMSignallingRoomInfo; /** * 音视频房间相关信息 */ rtcInfo: V2NIMSignallingRtcInfo; }; export declare type V2NIMSignallingAcceptInviteParams = { /** * 信令频道ID */ channelId: string; /** * 邀请者账号ID */ inviterAccountId: string; /** * 邀请者创建的请求ID,接受请求时需要填入邀请者填入的 ID,ID 从通知中获取 */ requestId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 是否需要存离线消息。默认 true */ offlineEnabled?: boolean; }; export declare type V2NIMSignallingRejectInviteParams = { /** * 信令频道ID */ channelId: string; /** * 邀请者账号ID */ inviterAccountId: string; /** * 邀请者创建的请求ID,拒绝请求时需要填入邀请者填入的 ID,ID 从通知中获取 */ requestId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 是否需要存离线消息。默认 true */ offlineEnabled?: boolean; }; /** * 取消之前的邀请成员加入信令房间请求参数 */ export declare type V2NIMSignallingCancelInviteParams = { /** * 信令频道ID */ channelId: string; /** * 被邀请者账号ID */ inviteeAccountId: string; /** * 邀请者创建的请求ID,取消邀请时需要填入邀请者填入的 ID */ requestId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 是否需要存离线消息。默认 true */ offlineEnabled?: boolean; /** * 推送相关配置 */ pushConfig?: V2NIMSignallingPushConfig; }; export declare type V2NIMSignallingInviteParams = { /** * 信令频道ID */ channelId: string; /** * 被邀请者账号ID */ inviteeAccountId: string; /** * 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId */ requestId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 信令相关配置 */ signallingConfig?: V2NIMSignallingConfig; /** * 推送相关配置 */ pushConfig?: V2NIMSignallingPushConfig; }; export declare type V2NIMSignallingJoinParams = { /** * 信令频道ID, 唯一标识了该频道房间 */ channelId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 信令相关配置 */ signallingConfig?: V2NIMSignallingConfig; /** * 音视频相关参数配置 */ rtcConfig?: V2NIMSignallingRtcConfig; }; /** * 接受呼叫请求回包 */ export declare type V2NIMSignallingCallSetupResult = { /** * 频道房间相关信息 */ roomInfo: V2NIMSignallingRoomInfo; /** * 音视频房间相关信息 */ rtcInfo?: V2NIMSignallingRtcInfo; /** * 呼叫状态 * * 注: 200 为 呼叫成功 */ callStatus?: number; }; /** * 呼叫建立请求参数 */ export declare type V2NIMSignallingCallSetupParams = { /** * 信令频道ID, 唯一标识了该频道房间 */ channelId: string; /** * 接受的呼叫者账号ID */ callerAccountId: string; /** * 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId */ requestId: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 信令相关配置 */ signallingConfig?: V2NIMSignallingConfig; /** * 音视频相关参数配置 */ rtcConfig?: V2NIMSignallingRtcConfig; }; export declare type V2NIMSignallingCallResult = { /** * 频道房间相关信息 */ roomInfo: V2NIMSignallingRoomInfo; /** * 音视频房间相关信息 */ rtcInfo?: V2NIMSignallingRtcInfo; /** * 呼叫状态 * * 注: 200 为 呼叫成功 */ callStatus?: number; }; export declare type V2NIMSignallingRtcInfo = { /** * 进入音视频对应的 Token */ rtcToken?: string; /** * 音视频房间 token 过期时间 */ rtcTokenTtl?: number; /** * 音视频SDK相关参数. JSON 格式化字符串 */ rtcParams?: string; }; /** * V2NIMSignallingCallParams */ export declare type V2NIMSignallingCallParams = { /** * 被呼叫者账号ID */ calleeAccountId: string; /** * 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该 requestId */ requestId: string; /** * 频道类型 */ channelType: V2NIMSignallingChannelType; /** * 频道名称 */ channelName?: string; /** * 频道相关扩展字段 */ channelExtension?: string; /** * 服务器扩展字段, 长度限制 4096 个字符 */ serverExtension?: string; /** * 信令相关配置 */ signallingConfig?: V2NIMSignallingConfig; /** * 推送相关配置 */ pushConfig?: V2NIMSignallingPushConfig; /** * 音视频相关参数配置 */ rtcConfig?: V2NIMSignallingRtcConfig; }; export declare type V2NIMSignallingConfig = { /** * 是否需要存离线消息。默认 true */ offlineEnabled?: boolean; /** * 是否需要计未读。默认 true */ unreadEnabled?: boolean; /** * 用户 uid */ selfUid?: number; }; export declare type V2NIMSignallingRtcConfig = { /** * 云信音视频房间频道名称. */ rtcChannelName?: string; /** * 音视频房间 token 过期时间 */ rtcTokenTtl?: number; /** * 音视频SDK相关参数. JSON 格式化的字符串 */ rtcParams?: string; }; export declare const enum V2NIMSignallingEventType { /** * 未知 */ V2NIM_SIGNALLING_EVENT_TYPE_UNKNOWN = 0, /** * 关闭信令频道房间 */ V2NIM_SIGNALLING_EVENT_TYPE_CLOSE = 1, /** * 加入信令频道房间 */ V2NIM_SIGNALLING_EVENT_TYPE_JOIN = 2, /** * 邀请加入信令频道房间 */ V2NIM_SIGNALLING_EVENT_TYPE_INVITE = 3, /** * 取消邀请加入信令频道房间 */ V2NIM_SIGNALLING_EVENT_TYPE_CANCEL_INVITE = 4, /** * 拒绝邀请 */ V2NIM_SIGNALLING_EVENT_TYPE_REJECT = 5, /** * 接受邀请 */ V2NIM_SIGNALLING_EVENT_TYPE_ACCEPT = 6, /** * 离开信令频道房间 */ V2NIM_SIGNALLING_EVENT_TYPE_LEAVE = 7, /** * 自定义控制命令 */ V2NIM_SIGNALLING_EVENT_TYPE_CONTROL = 8, /** * 用户被踢 */ V2NIM_SIGNALLING_EVENT_TYPE_KICK = 9 } /** * 信令频道类型 */ export declare const enum V2NIMSignallingChannelType { /** * 音频频道 */ V2NIM_SIGNALLING_CHANNEL_TYPE_AUDIO = 1, /** * 视频频道 */ V2NIM_SIGNALLING_CHANNEL_TYPE_VIDEO = 2, /** * 自定义频道 */ V2NIM_SIGNALLING_CHANNEL_TYPE_CUSTOM = 3 } /** * 信令频道信息 */ export declare type V2NIMSignallingChannelInfo = { /** * 信令频道名称, 如果请求时不传,则该字段为空 */ channelName?: string; /** * 信令频道ID, 唯一标识了该频道房间,后续主要以该字段作为请求标识 */ channelId: string; /** * 频道类型. 房间创建后跟频道类型绑定 */ channelType: V2NIMSignallingChannelType; /** * 频道是否有效. 自 10.8.0+ 支持 */ channelValid: boolean; /** * 频道相关扩展字段, 长度限制4096 */ channelExtension?: string; /** * 频道房间创建时间 */ createTime: number; /** * 频道房间过期时间 */ expireTime: number; /** * 创建者账号 ID */ creatorAccountId: string; }; /** * 信令事件 */ export declare type V2NIMSignallingEvent = { /** * 信令频道事件类型 */ eventType: V2NIMSignallingEventType; /** * 信令频道房间相关信息 */ channelInfo: V2NIMSignallingChannelInfo; /** * 操作者ID. 即通知的来源账号ID */ operatorAccountId: string; /** * 服务器扩展字段,长度限制 4096. */ serverExtension?: string; /** * 操作的时间点 */ time: number; /** * 被邀请者账号ID,以下场景包含该字段 * * 1. 邀请加入信令频道房间 * 2. 取消邀请加入信令频道房间 */ inviteeAccountId?: string; /** * 邀请者账号ID,以下场景包含该字段 * * 1. 对方拒绝邀请, * 2. 对方接受邀请 */ inviterAccountId?: string; /** * 本次请求发起产生的请求ID, 以下场景包含该字段 * * 1. 邀请加入信令房间 * 2. 拒绝邀请 * 3. 接受邀请 * 4. 取消邀请 */ requestId?: string; /** * 推送相关配置, 以下场景包含该字段,可能为空,依赖于发起方 * * 1. 邀请加入信令房间 */ pushConfig?: V2NIMSignallingPushConfig; /** * 是否需要计未读。默认为 true */ unreadEnabled?: boolean; /** * 成员信息. 以下场景包含该字段 * * 1. 成员加入房间事件包括该信息 */ member?: V2NIMSignallingMember; }; export declare type V2NIMSignallingRoomInfo = { /** * 频道房间相关信息. */ channelInfo: V2NIMSignallingChannelInfo; /** * 成员列表信息 */ members: V2NIMSignallingMember[]; }; /** * 推送相关配置 */ export declare type V2NIMSignallingPushConfig = { /** * 是否需要推送。默认值 true */ pushEnabled?: boolean; /** * 推送标题. pushEnabled 为 true 必填 */ pushTitle?: string; /** * 推送文案. pushEnabled 为 true 必填 */ pushContent?: string; /** * 推送数据. pushEnabled 为 true 必填 */ pushPayload?: string; }; /** * 成员相关信息 */ export declare type V2NIMSignallingMember = { /** * 成员账号ID */ accountId: string; /** * 成员 uid */ uid: number; /** * 用户加入信令频道房间时间 */ joinTime: number; /** * 用户信令频道房间过期时间 */ expireTime: number; /** * 成员操作的设备ID */ deviceId: string; }; /** * 信令模块的监听定义 * * 注: 使用 dist/esm 产物时,需要动态引入 V2NIMSignallingService 后使用 * * @example * ``` * import { NIM, V2NIMSignallingService } from 'nim-web-sdk-ng/dist/esm/nim' * NIM.registerService(V2NIMSignallingService, 'V2NIMSignallingService') * ``` */ export interface V2NIMSignallingListener { /** * 在线事件回调, 包括以下情形: * * 1. 关闭房间 * 2. 加入房间 * 3. 离开房间 * 4. 邀请加入房间 * 5. 取消邀请加入房间 * 6. 拒绝加入邀请 * 7. 接受加入邀请 * 8. 控制事件 */ onOnlineEvent: [event: V2NIMSignallingEvent]; /** * 离线事件回调, 包括以下情形: * * 1. 关闭房间 * 2. 加入房间 * 3. 离开房间 * 4. 邀请加入房间 * 5. 取消邀请加入房间 * 6. 拒绝加入邀请 * 7. 接受加入邀请 * 8. 控制事件 */ onOfflineEvent: [events: V2NIMSignallingEvent[]]; /** * 多端事件操作同步回调. 来自本账号的其他端所触发的事件, 包含以下情形: * * 1. 拒绝加入邀请 * 2. 接受加入邀请 */ onMultiClientEvent: [event: V2NIMSignallingEvent]; /** * 用户登录SDK后,同步获取到的当前未退出的信令频道列表 */ onSyncRoomInfoList: [roomInfoList: V2NIMSignallingRoomInfo[]]; } export declare type V2NIMSiganllingServiceConfig = { /** * 是否兼容 v1 格式, 默认 true * * 注: 若兼容 v1,那么有 v1 模块去标记 ack 足够了; */ compatibleWithV1?: boolean; };