UNPKG

@polyv/chat-sdk

Version:

SDK for using chat service of Polyv

1,852 lines (1,839 loc) 100 kB
// Generated by dts-bundle v0.7.3 // Dependencies for this module: // ../../events // ../../@polyv/chat-image-upload-sdk // ../../@just4/ajax/interfaces // ../../@just4/load-script/interfaces declare module '@polyv/chat-sdk' { /** * SDK 调用入口。 * @packageDocumentation */ import { Events, SocketIOEvents } from '@polyv/chat-sdk/constants/events'; import { ChatController as Chat } from '@polyv/chat-sdk/controller/chat'; export { Events, SocketIOEvents }; export { ChatConfig, ChannelInfo, UserInfo, DomainInfo, PlvSocketConfig } from '@polyv/chat-sdk/types/config'; export { PlvSocket } from '@polyv/chat-sdk/core/core'; export { Chat }; export { AskController as Ask } from '@polyv/chat-sdk/controller/ask'; export { DiscussionController as Discussion } from '@polyv/chat-sdk/controller/discussion'; export * from '@polyv/chat-sdk/controller/discussion/enum'; export { BanType } from '@polyv/chat-sdk/types/message-receive'; export { SpecialUserTypes } from '@polyv/chat-sdk/constants/special-user-types'; export const events: Readonly<{ BEFORE_SETUP: Events.BEFORE_SETUP; BEFORE_CONNECT: Events.BEFORE_CONNECT; DESTROYED: Events.DESTROYED; LOGIN: Events.LOGIN; RELOGIN: Events.RELOGIN; LOGIN_CB: Events.LOGIN_CB; LOGIN_SUCCESS: Events.LOGIN_SUCCESS; LOGOUT: Events.LOGOUT; TOKEN_EXPIRED: Events.TOKEN_EXPIRED; OVERTIMECONNECT: Events.OVERTIMECONNECT; CLOSEROOM: Events.CLOSEROOM; OPENROOM: Events.OPENROOM; SHIELD: Events.SHIELD; ADD_SHIELD: Events.ADD_SHIELD; CENSOR_CHANGE: Events.CENSOR_CHANGE; ADD_CENSORER: Events.ADD_CENSORER; REMOVE_SHIELD: Events.REMOVE_SHIELD; KICK: Events.KICK; UNKICK: Events.UNKICK; SPEAK: Events.SPEAK; SEND_MESSAGE: Events.SEND_MESSAGE; SPEAK_ERROR: Events.SPEAK_ERROR; CENSOR: Events.CENSOR; SELF_SPEAK: Events.SELF_SPEAK; CHAT_IMG: Events.CHAT_IMG; ON_SLICE_ID: Events.ON_SLICE_ID; EMOTION: Events.EMOTION; CUSTOMER_MESSAGE: Events.CUSTOMER_MESSAGE; REWARD: Events.REWARD; REDPAPER: Events.REDPAPER; RED_PAPER_RESULT: Events.RED_PAPER_RESULT; SYS_MSG: Events.SYS_MSG; REMOVE_HISTORY: Events.REMOVE_HISTORY; REMOVE_CONTENT: Events.REMOVE_CONTENT; CHAT_IMG_UPLOAD_PROGRESS: Events.CHAT_IMG_UPLOAD_PROGRESS; SELF_CHAT_IMG: Events.SELF_CHAT_IMG; SELF_CHAT_IMG_RESULT: Events.SELF_CHAT_IMG_RESULT; S_QUESTION: Events.S_QUESTION; T_ANSWER: Events.T_ANSWER; T_ANSWER_ERROR: Events.T_ANSWER_ERROR; AskQuestionError: Events.AskQuestionError; SET_NICK: Events.SET_NICK; GET_FULL_MESSAGE: Events.GET_FULL_MESSAGE; SEND_FILE: Events.SEND_FILE; LIKES: Events.LIKES; UPDATE_SESSION_ID: Events.UPDATE_SESSION_ID; FLOWERS: Events.FLOWERS; MAX_VIEWER_LOGIN: Events.MAX_VIEWER_LOGIN; MotivationLikes: Events.MotivationLikes; SPEAK_TO_TOP: Events.SPEAK_TO_TOP; SPEAK_CANCEL_TOP: Events.SPEAK_CANCEL_TOP; REFRESH_PRODUCT_LIST: Events.REFRESH_PRODUCT_LIST; MESSAGE: import("./constants/events").CustomSocketIOEvents.MESSAGE; CONNECT: SocketIOEvents.CONNECT; DISCONNECT: SocketIOEvents.DISCONNECT; RECONNECT: SocketIOEvents.RECONNECT; RECONNECT_ATTEMPT: SocketIOEvents.RECONNECT_ATTEMPT; ERROR: SocketIOEvents.ERROR; CONNECT_ERROR: SocketIOEvents.CONNECT_ERROR; CONNECT_TIMEOUT: SocketIOEvents.CONNECT_TIMEOUT; RECONNECTING: SocketIOEvents.RECONNECTING; }>; } declare module '@polyv/chat-sdk/constants/events' { /** * 封装聊天室消息及限定对外触发事件的参数 * @packageDocumentation */ import { AskError, AskMsg } from '@polyv/chat-sdk/controller/ask/types'; import { ChatImgUploadProgressMsg, EmotionMessage, RemoveHistoryMessage } from '@polyv/chat-sdk/types/message'; import { LoginAck, LoginUser, ReceiveLoginMsg, ReceiveLogoutMsg, ReceiveCloseRoomMsg, ReceiveSpeakMsg, ReceiveChatImgMsg, LocalChatImgMsg, ReceiveShieldMsg, CustomerMessage, RedPackMsg, RedpackResultMsg, RemoveContentMsg, RewardMsg, SysMsg } from '@polyv/chat-sdk/types/message-receive'; /** * SocketIO 事件 */ export enum SocketIOEvents { /** 连接socket */ CONNECT = "connect", /** 取消连接 */ DISCONNECT = "disconnect", /** 重新连接后 */ RECONNECT = "reconnect", /** 重新连接开始 */ RECONNECT_ATTEMPT = "reconnect_attempt", /** 错误 */ ERROR = "error", /** 连接错误 */ CONNECT_ERROR = "connect_error", /** 连接超时 */ CONNECT_TIMEOUT = "connect_timeout", /** 重连中 */ RECONNECTING = "reconnecting" } /** * 自定义socketio事件 */ export enum CustomSocketIOEvents { MESSAGE = "message" } /** * 聊天室 SDK 事件 */ export enum Events { /** 准备设置 SDK */ BEFORE_SETUP = "BEFORE_SETUP", /** 准备连接聊天室 */ BEFORE_CONNECT = "BEFORE_CONNECT", /** 已销毁 */ DESTROYED = "DESTROYED", /** * 用户登录聊天室 * 事件参数:{@link ReceiveLoginMsg} * @event */ LOGIN = "LOGIN", /** * 用户重复登录聊天室 * 事件参数:{@link LoginUser} * @event */ RELOGIN = "RELOGIN", /** * 登录回调事件。消息主体为数组,含有部分指示用户及频道状态的字段 * 事件参数:{@link LoginAck} * @event */ LOGIN_CB = "LOGIN_CB", /** * 登录成功(登录回调字符串首位为2)。消息主体同 LOGIN_CB * 事件参数:{@link LoginAck} * @event */ LOGIN_SUCCESS = "LOGIN_SUCCESS", /** * 用户登出聊天室 * 事件参数:{@link ReceiveLogoutMsg} * @event */ LOGOUT = "LOGOUT", /** * 聊天室登录token过期/无效 * 事件参数:null * @event */ TOKEN_EXPIRED = "TOKEN_EXPIRED", /** * 登陆聊天室超时(setup 后30秒以上未登录成功) * 事件参数:null * @event */ OVERTIMECONNECT = "OVERTIMECONNECT", /** * 聊天室关闭 * 事件参数:{@link ReceiveCloseRoomMsg} * @event */ CLOSEROOM = "CLOSEROOM", /** * 聊天室开启 * 事件参数:{@link ReceiveCloseRoomMsg} * @event */ OPENROOM = "OPENROOM", /** * 发送禁言事件,将某个用户id或ip进行禁言 * @event */ SHIELD = "SHIELD", /** * 禁言事件 * 事件参数:{@link ReceiveShieldMsg} * @event */ ADD_SHIELD = "ADD_SHIELD", /** * 审核切换事件 * @event */ CENSOR_CHANGE = "CHANGE", /** * 添加审核者 * @event */ ADD_CENSORER = "ADD_CENSORER", /** * 解除用户禁言 * 事件参数:{@link ReceiveShieldMsg} * @event */ REMOVE_SHIELD = "REMOVE_SHIELD", /** * 踢出用户 * @event */ KICK = "KICK", /** * 取消踢出用户 * @event */ UNKICK = "UNKICK", /** * 收到用户发言事件 * 事件参数:{@link ReceiveSpeakMsg} * @event */ SPEAK = "SPEAK", /** * 个人发言成功事件 * 事件参数:{@link ReceiveSpeakMsg} * @event */ SEND_MESSAGE = "SEND_MESSAGE", /** * 个人发言失败(含违禁词等) * 事件参数:{@link ReceiveSpeakMsg} * @event */ SPEAK_ERROR = "SPEAK_ERROR", /** * 个人发言审核回调 * 事件参数:{@link ReceiveSpeakMsg} * @event */ CENSOR = "CENSOR", /** * 接收到自己发言 * 事件参数:{@link ReceiveSpeakMsg} * @event */ SELF_SPEAK = "SELF_SPEAK", /** * 图片消息 * 事件参数:{@link ReceiveChatImgMsg} * @event */ CHAT_IMG = "CHAT_IMG", ON_SLICE_ID = "onSliceID", /** * 表情消息 * @event */ EMOTION = "EMOTION", /** * 自定义消息 * 事件参数:{@link CustomerMessage} * @event */ CUSTOMER_MESSAGE = "CUSTOMER_MESSAGE", /** * 打赏消息 * 事件参数:{@link RewardMsg} * @event */ REWARD = "REWARD", /** * 红包消息 * 事件参数:{@link RedPackMsg} * @event */ REDPAPER = "REDPAPER", /** * 有人领取到红包 * 事件参数:{@link RedpackResultMsg} * @event */ RED_PAPER_RESULT = "RED_PAPER_RESULT", /** * 系统消息(封装) * 事件参数:{@link SysMsg} * @event */ SYS_MSG = "SYS_MSG", /** * 管理员清空聊天室 * 事件参数:null * @event */ REMOVE_HISTORY = "REMOVE_HISTORY", /** * 管理员删除单条消息 * 事件参数:{@link RemoveContentMsg} * @event */ REMOVE_CONTENT = "REMOVE_CONTENT", /** * 图片上传过程状态 * 事件参数:{@link ChatImgUploadProgressMsg} * @event */ CHAT_IMG_UPLOAD_PROGRESS = "CHAT_IMG_UPLOAD_PROGRESS", /** * 个人图片开始上传 * 事件参数:{@link LocalChatImgMsg} * @event */ SELF_CHAT_IMG = "SELF_CHAT_IMG", /** * 个人图片消息发送结果 * 事件参数:{@link ReceiveChatImgMsg} * @event */ SELF_CHAT_IMG_RESULT = "SELF_CHAT_IMG_RESULT", /** * 学生提问 * 事件参数:{@link AskMsg} * @event */ S_QUESTION = "S_QUESTION", /** * 讲师或特殊身份回答 * 事件参数:{@link AskMsg} * @event */ T_ANSWER = "T_ANSWER", /** * 回答异常 */ T_ANSWER_ERROR = "T_ANSWER_ERROR", /** * 提问异常 */ AskQuestionError = "AskQuestionError", /** * 设置昵称 */ SET_NICK = "SET_NICK", /** * 获取完整聊天信息 */ GET_FULL_MESSAGE = "GET_FULL_MESSAGE", /** * 发送文件分享消息 */ SEND_FILE = "SEND_FILE", /** * 点赞消息 */ LIKES = "LIKES", /** * 内部自定义事件 * ----- */ UPDATE_SESSION_ID = "UPDATE_SESSION_ID", /** * 送花消息 */ FLOWERS = "FLOWERS", /** * 已达到最大并发 */ MAX_VIEWER_LOGIN = "maxViewerLogin", MotivationLikes = "MotivationLikes", /** * 评论上墙 */ SPEAK_TO_TOP = "TO_TOP", /** * 取消上墙 */ SPEAK_CANCEL_TOP = "CANCEL_TOP", /** * 刷新商品列表 */ REFRESH_PRODUCT_LIST = "REFRESH_PRODUCT_LIST" } /** SDK 仅转发事件 */ export type ForwardEvent = 'ForwardEvent'; /** SDK 触发事件类型 */ export type EventType = Events | SocketIOEvents | ForwardEvent | CustomSocketIOEvents; /** SDK 触发事件数据 */ export type ETypeParam = { /** 针对仅转发的事件 */ [key: string]: unknown; [Events.BEFORE_SETUP]: null; [Events.BEFORE_CONNECT]: null; [Events.DESTROYED]: null; [SocketIOEvents.CONNECT]: null; [SocketIOEvents.CONNECT_ERROR]: null; [SocketIOEvents.CONNECT_TIMEOUT]: null; [SocketIOEvents.DISCONNECT]: null; [SocketIOEvents.ERROR]: null; [SocketIOEvents.RECONNECT]: null; [SocketIOEvents.RECONNECTING]: null; [SocketIOEvents.RECONNECT_ATTEMPT]: null; [Events.LOGIN]: ReceiveLoginMsg; [Events.LOGOUT]: ReceiveLogoutMsg; [Events.RELOGIN]: LoginUser; [Events.CLOSEROOM]: ReceiveCloseRoomMsg; [Events.OPENROOM]: ReceiveCloseRoomMsg; [Events.TOKEN_EXPIRED]: null; [Events.SPEAK]: ReceiveSpeakMsg; [Events.CENSOR]: ReceiveSpeakMsg; [Events.SELF_SPEAK]: ReceiveSpeakMsg; [Events.SPEAK_ERROR]: ReceiveSpeakMsg; [Events.SEND_MESSAGE]: ReceiveSpeakMsg; [Events.CHAT_IMG]: ReceiveChatImgMsg; [Events.ADD_SHIELD]: ReceiveShieldMsg; [Events.REMOVE_SHIELD]: ReceiveShieldMsg; [Events.CHAT_IMG_UPLOAD_PROGRESS]: ChatImgUploadProgressMsg; [Events.CUSTOMER_MESSAGE]: CustomerMessage; [Events.LOGIN_CB]: LoginAck; [Events.MAX_VIEWER_LOGIN]: LoginAck; [Events.LOGIN_SUCCESS]: LoginAck; [Events.REDPAPER]: RedPackMsg; [Events.RED_PAPER_RESULT]: RedpackResultMsg; [Events.REMOVE_CONTENT]: RemoveContentMsg; [Events.REMOVE_HISTORY]: RemoveHistoryMessage; [Events.REWARD]: RewardMsg; [Events.SELF_CHAT_IMG]: LocalChatImgMsg; [Events.SELF_CHAT_IMG_RESULT]: ReceiveChatImgMsg; [Events.SYS_MSG]: SysMsg; [Events.EMOTION]: EmotionMessage; [Events.S_QUESTION]: AskMsg; [Events.T_ANSWER]: AskMsg; [Events.T_ANSWER_ERROR]: AskError; }; /** event emitter 事件处理器 */ export interface Listener { (args: unknown): unknown; } /** socketIO 事件处理器 */ export interface WsListener { (args: string): unknown; } } declare module '@polyv/chat-sdk/controller/chat' { import { Message } from '@polyv/chat-sdk/message'; import { ChatConfig, MsgHandlers, GetRoomSignData } from '@polyv/chat-sdk/types/config'; import { ResponseBody, SpeakOptions, RemoveHistoryParams } from '@polyv/chat-sdk/types/index'; import { ChatImgContent, SendFileContent, ChatSpeakTopContent } from '@polyv/chat-sdk/types/message'; import { BanType } from '@polyv/chat-sdk/types/message-receive'; import { ChannelHistoryOptions, SessionHistoryOptions, TimeHistoryOptions, SdkSessionMsgResData, SdkTimeMsgResData, ApiMsg, PlaybackMsgPartRes, PlaybackMsgRes, SendFileResultData, SpeakTopParams } from '@polyv/chat-sdk/controller/chat/types'; import { AskController, CensorController, UserController } from '@polyv/chat-sdk/controller'; import { DiscussionController } from '@polyv/chat-sdk/controller/discussion'; export class ChatController extends Message { /** 房间是否全体禁言 */ protected _isRoomClosed: boolean; /** 是否 IP 被屏蔽 */ protected _isIPBlocked: boolean; /** 是否 ID 被屏蔽 */ protected _isIDBlocked: boolean; /** 聊天审核模块 */ censor: CensorController; /** 提问模块 */ ask: AskController; /** 用户模块 */ user: UserController; /** 洽谈室模块 */ discussion: DiscussionController; /** 禁言类型 */ BanType: typeof BanType; protected msgHandlers: MsgHandlers; constructor(config: ChatConfig); /** * 发送聊天室消息 * @param content 消息内容 */ send(options: SpeakOptions): Promise<unknown>; /** * 根据索引值获取历史聊天消息 * @param options 消息过滤参数 * @returns */ getChannelHistory(options: ChannelHistoryOptions): Promise<ApiMsg[]>; /** * 根据索引值获取历史聊天消息 * 改接口将会返回准确的禁言状态 * @param options 消息过滤参数 * @returns */ getChannelHistory2(options: ChannelHistoryOptions): Promise<ApiMsg[]>; /** * 根据场次id获取历史聊天消息 * @param options 消息过滤参数 * @returns */ getSessionHistory(options: SessionHistoryOptions): Promise<SdkSessionMsgResData>; /** * 根据时间获取聊天记录 * @param options 消息过滤参数 * @returns */ getTimeHistory(options: TimeHistoryOptions): Promise<SdkTimeMsgResData>; /** * 切换聊天室发言状态 * @param enabled 是否允许发言 */ setChatEnabled(enabled: boolean): Promise<void>; /** * 异步方式获取房间号签名 * @param data 签名数据 */ _getRoomSign(data: GetRoomSignData): Promise<string>; /** * 设置昵称 * @param nickname 昵称 */ setNickname(nickname: string): void; /** * 获取特定直播场次聊天消息分段 */ getPlaybackMsgPart(page?: number, sessionId?: string, videoId?: string): Promise<PlaybackMsgPartRes>; /** * 获取特定场次及分段的聊天消息数据 */ getPlaybackMsg(id: number, sessionId?: string): Promise<PlaybackMsgRes>; /** * 删除某条消息 * @param content 消息内容 */ delete(id: string): Promise<unknown>; /** * 清空聊天历史记录 * @api */ removeHistory(params?: RemoveHistoryParams): Promise<void>; getFullMessage(id: string): Promise<unknown>; /** 发送图片消息 */ emitImgMsg(content: ChatImgContent): void; /** * 文件分享消息 * http://yapi.igeeker.org/project/77/interface/api/35345 */ sendFile(content: SendFileContent): Promise<ResponseBody<SendFileResultData>>; /** 激励 */ motivate(motivatedId: string, type: 'speak' | 'mic', speakId?: string): Promise<ResponseBody>; /** * 添加评论上墙 * @param params 评论上墙数据 */ speakToTop(params: SpeakTopParams): Promise<ResponseBody>; /** * 添加评论上墙 * @param params 评论上墙数据 */ speakCancelTop(params: SpeakTopParams): Promise<ResponseBody>; getSpeakTopInit(): ChatSpeakTopContent | undefined; } } declare module '@polyv/chat-sdk/types/config' { /** * 聊天室实例配置 * @packageDocumentation */ import { PlvSocket } from '@polyv/chat-sdk/core/core'; import { SocketMessage, SocketBaseMessage } from '@polyv/chat-sdk/types/message'; /** * 用户配置信息。 */ export interface UserInfo { /** 用户 id */ userId: string; /** 用户昵称 */ nick: string; /** 用户头像 */ pic: string; /** 用户角色。云课堂观众传slice,普通频道观众传student,讲师端传teacher,销售传sales其他按照具体角色传入 */ userType: string; /** 用户自定义身份 */ actor?: string; /** 用户自定义身份背景色 */ actorBgColor?: string; /** 用户自定义身份字体色 */ actorFColor?: string; /** 用户自定义参数 param4 */ param4?: string; /** 用户自定义参数 param5 */ param5?: string; /** 用户 unionId */ unionId?: string; /** 用户来源, 如 webClient */ userSource?: string; } /** * 特殊用户自定义头衔信息配置 */ export interface AuthorizationConfig { /** 自定义头衔 */ actor?: string; /** 自定义头衔背景色 */ bgColor?: string; /** 自定义头衔字体色 */ fColor?: string; } /** * 频道配置信息。 */ export interface ChannelInfo { /** 频道id */ channelId: string; /** 频道房间号(若不传入,房间号默认为频道号) */ roomId: string; /** 子房间号数组 */ sibRooms?: string[]; /** 频道所属客户账号 id(对于活动直播或三分屏直播等支持严禁词的场景必传,用于根据用户账号设置,进行严禁词过滤) */ accountId?: string; /** 频道当前场次 id */ sessionId?: string; } /** * 聊天室自定义域名配置。 */ export interface DomainInfo { /** 聊天室 websocket 服务域名 */ wsHost?: string; /** 聊天室 api 接口域名 */ apiHost?: string; /** 保利威直播 api 接口域名 */ polyvApiHost?: string; /** elog 接口域名 */ elogDomain?: string; } /** 外部获取 token 时的回调data */ export interface GetChannelTokenCbData { /** 账号 appId */ appId: string; /** 频道 api token */ channelToken: string; } export interface GetChannelTokenCb { (data: GetChannelTokenCbData): unknown; } /** 外部获取频道 token 异步函数 */ export interface GetChannelToken { (cb: GetChannelTokenCb): unknown; } /** 外部获取公用 token 时的回调data */ export interface GetCommonTokenCbData { /** 公用 api token */ commonToken: string; } export interface GetCommonTokenCb { (data: GetCommonTokenCbData): unknown; } /** 外部获取公用 token 异步函数 */ export interface GetCommonToken { (cb: GetCommonTokenCb): unknown; } /** * 获取房间号签名数据 */ export interface GetRoomSignData { /** 频道号 */ channelId: string; /** 房间号 */ roomId: string; } /** * 获取房间号签名回调类型 */ export interface GetRoomSignCb { (sign: string): unknown; } /** * 获取房间号签名类型 */ export interface GetRoomSign { (data: GetRoomSignData, cb: GetRoomSignCb): unknown; } export interface GetChatTokenCb { (token: string): unknown; } /** 外部获取频道 token 异步函数 */ export interface GetChatToken { (cb: GetChatTokenCb): unknown; } /** PlvSocket类配置 */ export interface PlvSocketConfig { /** 外部 socket */ socket?: SocketIOClient.Socket; /** 聊天室登录 token(若使用外部socket,可不传) */ token?: string; /** 聊天室连麦 token */ mediaChannelKey?: string; /** 聊天室域名 */ wsHost?: string; /** 频道配置信息 */ channelInfo: ChannelInfo; /** 用户配置信息 */ userInfo: UserInfo; /** 自定义头衔信息,非必需 */ authorization?: AuthorizationConfig; /** 初始化的时候是否发送聊天室登录消息 */ login?: boolean; /** 修改token */ getToken?: GetChatToken; /** 分组Id */ groupId?: string; } export interface MsgHandlers { [key: string]: (msg: SocketMessage | SocketBaseMessage) => void; } /** Message类配置 */ export interface MessageConfig { /** 聊天室自定义域名配置信息(可选,内部设置默认值) */ domainInfo?: DomainInfo; /** 聊天室类实例 */ plvSocket: PlvSocket; } /** Chat类配置 */ export interface ChatConfig extends MessageConfig { /** 特殊身份发言是否审核 */ specialToCensored?: boolean; /** 获取 api 频道 token 外部异步函数 */ getChannelToken?: GetChannelToken; /** 获取 api 公用 token 外部异步函数 */ getCommonToken?: GetCommonToken; /** 获取房间号签名,用于禁言、踢出、删除聊天消息等 */ getRoomSign?: GetRoomSign; /** 分组Id */ groupId?: string; /** 是否初始化提问模块 */ initAsk?: boolean; /** 是否初始化洽谈室模块 */ initDiscussion?: boolean; /** 洽谈室信息 */ discussionInfo?: DiscussionInfo; } /** 洽谈室信息 */ export interface DiscussionInfo { /** 活动 id */ activityId: string; /** 销售 id */ followerId: string; } } declare module '@polyv/chat-sdk/core/core' { import EventEmitter from 'events'; import { PlvSocketConfig, UserInfo, ChannelInfo } from '@polyv/chat-sdk/types/config'; import { Events, SocketIOEvents, WsListener, EventType, ETypeParam } from '@polyv/chat-sdk/constants/events'; import { SocketMessage } from '@polyv/chat-sdk/types/message'; export class PlvSocket extends EventEmitter { /** 聊天室配置 */ protected _config: PlvSocketConfig; /** socketio 实例 */ protected _socket: SocketIOClient.Socket; /** * 获取socket实例对象 */ get socket(): SocketIOClient.Socket; /** * 获取socketId */ get socketId(): string; /** * 获取userInfo */ get userInfo(): UserInfo; /** * 获取channelInfo */ get channelInfo(): ChannelInfo; /** * 获取token */ get token(): string | undefined; constructor(config: PlvSocketConfig); /** socketIO 及聊天室业务事件常量 */ static events: Readonly<typeof Events & typeof SocketIOEvents>; /** websocket 支持程度 */ static supportsWebSocket(): boolean; /** * 更新配置 * @param newConfig 新配置参数 */ updateConfig(newConfig: PlvSocketConfig): this; /** * 初始化 */ init(): Promise<unknown>; /** * 绑定 socketio 原生事件 */ protected bindWsEvents(): this; /** 封装聊天室审核消息 */ protected handleCensorMsg(msg: SocketMessage): Promise<this>; protected handleMotivationMsg: (msg: SocketMessage) => void; protected handleProductMsg: (msg: SocketMessage) => void; protected handleSpeakToTop: (msg: SocketMessage) => void; protected handleSpeakCancelTop: (msg: SocketMessage) => void; /** * 登录聊天室 */ login: () => Promise<unknown>; /** * 发布事件 * @param event 事件名称 * @param args 事件数据 * @returns this */ trigger<E extends EventType>(event: E, args: ETypeParam[E]): this; /** * 发送聊天室业务消息(message事件)。 * 一般 message 事件都会回调并且Promise被resolved,若出现没有回调的事件,promise 可能不被resolved。 */ emitMsg(data: unknown): Promise<unknown[]>; /** * 直接发送 socketIO 消息 * @param event 事件名称 * @param args 事件参数 * @returns this */ emitWs(event: string, ...args: unknown[]): this; /** * 直接监听 socketIO 消息 * @param event 事件名称 * @param listener 事件处理器 * @returns this */ onWs(event: string, listener: WsListener): this; /** * 取消监听 socketIO 消息 * @param event 事件名称 * @param listener 事件处理器 * @returns this */ offWs(event: string, listener: WsListener): this; /** * 修改聊天室用户信息 * @api * @param userInfo 用户信息 */ updateUserInfo(userInfo?: Partial<UserInfo>): void; /** * 销毁聊天室实例 */ destroy(): Promise<this>; } } declare module '@polyv/chat-sdk/controller/ask' { import { Message } from '@polyv/chat-sdk/message'; import { ChatConfig, MsgHandlers } from '@polyv/chat-sdk/types/config'; import { ChatImgContent } from '@polyv/chat-sdk/types/message'; import { AskMsg, AskMsgByApi, AskSocketMsg, CommonAskMsg, GetAskListOptions, SendAskAnswerData, SendAskQuestionData, SendAskImageOptions, GetQuestionListOptions, QuestionListApiResponse, GetQuestionUserListOfTimestampOptions, QuestionUserListOfTimestampResponse, GetQuestionListOfUserIdOptions } from '@polyv/chat-sdk/controller/ask/types'; /** * 提问控制器 * @class */ export class AskController extends Message { constructor(config: ChatConfig); /** 封装事件处理器(注意this上下文) */ msgHandlers: MsgHandlers; /** * 消息中的 s_userId 是否跟某个人关联 * @api * @param msg 消息体 * @param userId 用户id */ isAnswerUser(msg: AskMsg, userId: string): boolean; /** * 判断消息是否属于某个用户有关的消息 * @api * @param msg 消息体 * @param userId 用户id */ isMsgOfUser(msg: AskMsg, userId: string): boolean; /** * 发送提问消息 * @api */ sendQuestion(data: SendAskQuestionData): void; /** * 发送提问图片消息 * @api */ sendAskImage(data: SendAskImageOptions): void; /** * 发送回答消息 * @api */ sendAnswer(data: SendAskAnswerData): void; /** * 处理来自 socket 的提问消息 * @param msg 消息体 */ handleAskSocketMsg(msg: AskSocketMsg): void; /** * 获取提问列表 * @api */ getAskList(options?: GetAskListOptions): Promise<AskMsg[]>; /** * 处理提问数据,将其转换成内部定义的类型 * @param commonData 公共数据 * @param msg 提问消息 */ machAskInfo(commonData: CommonAskMsg, msg: AskMsgByApi | AskSocketMsg): AskMsg | undefined; /** 发送图片消息 */ emitImgMsg(content: ChatImgContent, sUserId: string): void; /** 获取提问列表(新) */ getQuestionList(options?: GetQuestionListOptions): Promise<QuestionListApiResponse>; /** 获取提问用户列表 */ getQuestionUserList(options?: GetQuestionListOptions): Promise<QuestionListApiResponse>; /** * @description: 根据时间戳获取用户列表 * @param {GetQuestionUserListOfTimestampOptions} options * @return {Promise<QuestionUserListOfTimestampResponse>} */ getQuestionUserListOfTimestamp(options?: GetQuestionUserListOfTimestampOptions): Promise<QuestionUserListOfTimestampResponse>; /** 获取提问列表(助教使用) */ getQuestionListOfUserId(options?: GetQuestionListOfUserIdOptions): Promise<QuestionListApiResponse>; } } declare module '@polyv/chat-sdk/controller/discussion' { import { Message } from '@polyv/chat-sdk/message'; import { ChatConfig } from '@polyv/chat-sdk/types/config'; import { ChatImgContent } from '@polyv/chat-sdk/types/message'; import { DiscussionEvents, DiscussionMessageSource, DiscussionMessageStatus, DiscussionMessageType } from '@polyv/chat-sdk/controller/discussion/enum'; import { ClientController } from '@polyv/chat-sdk/controller/discussion/services/client-controller'; import { SalesController } from '@polyv/chat-sdk/controller/discussion/services/sales-controller'; import { DiscussionMsgFilter } from '@polyv/chat-sdk/controller/discussion/msg-filter/msg-filter'; import { DiscussionSendSystemMessageOptions } from '@polyv/chat-sdk/controller/discussion/types'; export class DiscussionController extends Message { DiscussionMessageStatus: typeof DiscussionMessageStatus; DiscussionMessageType: typeof DiscussionMessageType; DiscussionMessageSource: typeof DiscussionMessageSource; DiscussionEvents: typeof DiscussionEvents; /** 销售端 */ sales: SalesController; /** 客户端 */ client: ClientController; /** 消息过滤器 */ protected __msgFilter: DiscussionMsgFilter; msgHandlers: { onSliceID: (data: unknown) => void; }; discussionConfig: ChatConfig; constructor(config: ChatConfig); setup(): Promise<void>; /** * 当前是否为销售身份 */ currentIsSales(): boolean; __setUnReadCount(count?: number): void; __addUnReadCount(): void; __clearUnReadCount(): void; /** 发送洽谈室 socket 信息 */ _sendDiscussionSocket(socketData: Record<string, unknown>): Promise<unknown>; /** * 发送本地系统消息 * @api */ sendSystemMessage(options: DiscussionSendSystemMessageOptions): void; /** 发送图片消息 */ emitImgMsg(content: ChatImgContent): void; } } declare module '@polyv/chat-sdk/controller/discussion/enum' { /** * 洽谈室事件 */ export enum DiscussionEvents { /** * 聊天消息 */ ChatMessage = "ChatMessage", /** * 客户端未读消息 * number */ ClientUnreadCount = "ClientUnreadCount", /** * 客户读取文档 * { id, clientId } */ ClientReadFile = "ClientReadFile", /** * 客户提交表单 * { id, clientId } */ ClientSubmitForm = "ClientSubmitForm", /** * 客户已读消息 * { clientId } */ ClientReadMessage = "ClientReadMessage", /** * 客户的跟进人变更 * { followerId, nick, pic, actor } */ ClientUpdateFollower = "ClientUpdateFollower", /** * 销售推送文档 * { id, name, url, timestamp, clientId, isReaded, status } */ SalesPushFile = "SalesPushFile", /** * 销售推送文档 * { id, name, timestamp, clientId, isSubmited, status } */ SalesPushForm = "SalesPushForm", /** * 销售已读某个客户消息 * { clientId } */ SalesReadClientMessage = "SalesReadClientMessage", /** * 销售收到某个客户表单提交 * { clientId } */ SalesReceiveSubmitForm = "SalesReceiveSubmitForm", /** * 销售中某个客户的跟进人变更 * { clientId, nick, pic, status } */ SalesUpdateClient = "SalesUpdateClient", /** * 销售添加客户 * { DiscussionClientInfo } */ SalesAddClient = "SalesAddClient", /** * 销售置顶客户 */ SalesTopClient = "SalesTopClient" } /** * 洽谈室消息状态 */ export enum DiscussionMessageStatus { /** 未推送,仅销售端素材库中存在 */ NotPush = "N", /** 未读 */ UnRead = "U", /** 已读 */ Readed = "R", /** 已提交 */ Submited = "S" } /** * 洽谈室消息类型(聊天室 node 中的类型) */ export enum DiscussionMessageType { /** 发言 */ Speak = "speak", /** 表单 */ Form = "form", /** 文件 */ File = "file", /** 卡片 */ Card = "card" } /** * 洽谈室消息来源(区分后的类型) */ export enum DiscussionMessageSource { /** 发言 */ Speak = "speak", /** 推送表单 */ PushForm = "push-form", /** 提交表单 */ SubmitForm = "submit-form", /** 推送文档 */ PushFile = "push-file", /** 已读文档 */ ReadFile = "read-file", /** 更换跟进人 */ UpdateClient = "update-client", /** 系统消息 */ System = "system" } /** * 洽谈室 socket 事件 */ export enum DiscussionSocketEvent { /** 发言 */ Speak = "SPEAK", /** 销售推送文件 */ PushFile = "PUSH_FILE", /** 文件消息 */ File = "FILE", /** 已读消息 */ Read = "READ", /** 表单消息 */ Form = "FORM", /** 销售 推送表单 */ PushForm = "PUSH_FORM", /** 客户端 提交表单 */ SubmitForm = "SUBMIT_FORM", /** 添加客户 */ AddClient = "ADD_CLIENT", /** 变更客户 */ UpdateClient = "UPDATE_CLIENT", /** 变更跟进人 */ UpdateFollower = "UPDATE_FOLLOWER", /** 更新跟进人信息 */ UpdateFollowerMessage = "UPDATE_FOLLOWER_MESSAGE", /** 置顶客户 */ ClientTop = "CLIENT_TOP" } } declare module '@polyv/chat-sdk/types/message-receive' { /** * 定义接收到的消息接口 * @packageDocumentation */ import { SocketMessage, MessageUser, SystemMessageUser, ChatImgContent } from '@polyv/chat-sdk/types/message'; import { msgTypes } from '@polyv/chat-sdk/constants/msg-types'; import { Events } from '@polyv/chat-sdk/constants/events'; /** 登录用户接口 */ export interface LoginUser { /** 头衔,如讲师 */ actor: string; banned: boolean; /** 频道号 */ channelId: string; /** 用户ip */ clientIp: string; /** 用户昵称 */ nick: string; /** 用户头像 */ pic: string; /** 房间号 */ roomId: string; status: string; uid: string; /** 用户id */ userId: string; /** 用户类型 */ userType: string; } /** 用户登录消息 */ export interface ReceiveLoginMsg extends SocketMessage { /** 事件名,LOGIN */ EVENT: string; /** 在线人数 */ onlineUserNumber?: number; /** 时间戳 */ timeStamp: number; /** 登录用户信息 */ user: LoginUser; } /** 登录消息回调 */ export type LoginAck = [number, unknown]; /** 用户登出事件 */ export interface ReceiveLogoutMsg { /** 事件名 */ EVENT: string; /** 频道号 */ channelId: string; /** 在线人数 */ onlineUserNumber?: number; /** 事件时间戳 */ timeStamp: number; /** 用户 socketid */ uid: string; /** 用户id */ userId: string; } /** 关闭聊天室 value 字段 */ export interface CloseRoomMsgValue { /** 是否已关闭 */ closed: boolean; } /** 关闭聊天室消息体 */ export interface ReceiveCloseRoomMsg extends SocketMessage { value: CloseRoomMsgValue; } /** 收到的 speak 消息 */ export interface ReceiveSpeakMsg extends SocketMessage { /** 消息id */ id: string; /** 房间号,场次聊天消息才有 */ roomId?: string; /** 区分消息来源,extend(管理员聊天)、其他(公聊) */ source?: string; /** 发言审核回调消息,指示状态,censor、error(含有违规词) */ status?: string; /** 发言用户信息 */ user: MessageUser; /** 消息内容 */ values?: string[]; /** 消息内容(封装, 代替原来的values数组) */ content: string; image?: ChatImgContent; /** 公屏回复,引用源消息 */ quote?: MsgQuote; /** 指示消息类型 */ msgType: msgTypes; /** 发送的内容是否过长 */ overLen?: boolean; } /** 图片消息 */ export interface ReceiveChatImgMsg extends SocketMessage { /** 图片发送状态 */ result: boolean; /** 消息发送者 */ user: MessageUser; /** 消息内容 */ values: ChatImgContent[]; /** 图片内容 */ content: ChatImgContent; } /** 图片消息 */ export interface LocalChatImgMsg extends SocketMessage { /** 图片发送状态 */ result: boolean; /** 消息发送者 */ user: MessageUser; /** 图片内容 */ content: ChatImgContent; /** 图片本地 blob 地址 */ imgBlobSrc?: string; } /** 禁言枚举类型 */ export enum BanType { /** 根据 ip 禁言 */ ip = "ip", /** 根据 userId 禁言 */ userId = "userId" } /** 发送禁言事件 */ export interface SendShieldMsg<E extends Events.REMOVE_SHIELD | Events.SHIELD> { EVENT: E; /** 频道号 */ channelId: string; /** 房间号 */ roomId: string; /** 禁言类型 */ type: BanType; /** 禁言目标,userId 或 ip */ value: string; /** 房间号签名 */ sign: string; } /** 禁言 data 字段 */ export interface ShieldMsgData { /** 禁言类型 */ banType: BanType; /** 用户id */ userId?: string; /** 用户ip */ ip?: string; } /** 取消禁言消息 */ export interface ReceiveShieldMsg extends SocketMessage { data: ShieldMsgData; /** 用户id或用户ip */ value: string; } /** 发送踢出参数类型 */ export interface SendKickedMsg { EVENT: Events.KICK; /** 房间号 */ roomId: string; /** 频道号 */ channelId: string; /** 签名 */ sign: string; /** 踢出的 userId */ userId: string; type: 'userId'; } /** 红包消息 */ export interface RedPackMsg extends SocketMessage { content: RedPackMsgContent; } /** 红包被人领取消息 */ export interface RedpackResultMsg { /** 事件名,RED_PAPER_RESULT */ EVENT: string; /** 红包是否领取完,Y:是,N:否 */ isOver: string; /** 领取用户昵称 */ nick: string; /** 红包id */ redpackId: string; /** 房间号 */ roomId: string; /** 红包类型,rain:红包雨,normal:普通红包 */ type: string; /** 是否抢红包成功,1:成功,0:失败 */ status: string; } /** 公屏回复红包消息, content 字段 */ export interface RedPackMsgContent { /** 祝福语 */ content: string; /** 红包总金额 */ totalAmount: number; /** 红包个数 */ number: number; /** 用于调用领取红包接口 */ redCacheId: string; /** 红包id,用于调用领取红包接口 */ redpackId: string; /** 红包类型(normal: 普通红包, rain: 红包雨) */ type: string; /** 消息类型: redpaper */ msgSource: string; } /** 公屏回复,引用源消息 */ export interface MsgQuote { /** 图片内容,引用图片消息时存在 */ image?: ChatImgContent; /** 普通消息文字或红包消息内容键值对 */ content?: string | RedPackMsgContent; /** 引用源消息不具有详细的 user 字段,只有昵称 nick */ nick: string; /** 引用源消息所在分房间号 */ quoteRoomId?: string; msgType: string; } /** 自定义消息体 */ export interface CustomerMessage { /** 事件名 */ EVENT: string; /** 消息id */ id: string; /** 消息内容 */ content: string; /** 房间号 */ roomId: string; /** 消息用户 */ user: SystemMessageUser; } /** 移除消息 */ export interface RemoveContentMsg { /** 事件名,REMOVE_CONTENT */ EVENT: string; /** 消息id */ id: string; /** 房间号 */ roomId: string; } /** 打赏消息 */ export interface RewardMsg { /** 事件名,REWARD */ EVENT: string; /** 房间号 */ roomId: string; /** 打赏礼物信息 */ content: RewardMsgContent; } /** 打赏消息 content 字段 */ export interface RewardMsgContent { /** 打赏礼物图片 */ gimg: string; /** 打赏礼物个数 */ goodNum: number; /** 打赏礼物名称 */ rewardContent: string; /** 打赏用户信息 */ rewardUser: RewardMsgUser; /** 打赏用户昵称 */ unick: string; } /** 打赏用户信息 */ export interface RewardMsgUser { /** 用户id */ userId: string; } /** 打赏用户信息 */ export interface RewardMsgUser { /** 用户id */ userId: string; } /** 系统消息(封装) */ export interface SysMsg { /** 消息id,本地生成 */ id: string; /** 插入时间 */ time: number; /** 消息内容 */ content: string; user: SystemMessageUser; /** 消息类型(封装) */ msgType: msgTypes; } /** 发送评论上墙参数类型 */ export interface SendSpeakTopMsg { EVENT: Events.SPEAK_TO_TOP | Events.SPEAK_CANCEL_TOP; /** 消息id */ id: string; } } declare module '@polyv/chat-sdk/constants/special-user-types' { /** * 特殊用户角色 */ export enum SpecialUserTypes { /** 讲师 */ TEACHER = "teacher", /** 管理员 */ MANAGER = "manager", /** 嘉宾 */ GUEST = "guest", /** 助教 */ ASSISTANT = "assistant", /** 参会者 */ ATTENDEE = "attendee" } } declare module '@polyv/chat-sdk/controller/ask/types' { import { Events } from '@polyv/chat-sdk/constants/events'; import { msgTypes } from '@polyv/chat-sdk/constants/msg-types'; import { ChatImgContent, MessageUser, SocketMessage } from '@polyv/chat-sdk/types/message'; /** * 获取提问列表参数 */ export interface GetAskListOptions { /** 房间号 */ roomId?: string; /** 开始位置,默认:0 */ start?: number; /** 结束位置,默认:9 */ end?: number; } /** * 通过 socket 接收到的提问消息 */ export interface AskSocketMsg extends SocketMessage { EVENT: Events.T_ANSWER | Events.S_QUESTION; /** 内容 */ content: string; /** 消息类型,undefined 表示文本消息 */ msgType?: 'image'; /** 房间号 */ roomId: string; /** 回答的用户 id,空值代表提问的消息 */ s_userId?: string; /** 用户信息 */ user: MessageUser; /** 消息状态 */ status?: 'error'; /** 异常时的消息 */ message?: string; } export interface AskApiMsgImageContent { /** id */ id: string; /** 图片地址 */ url: string; width?: number; height?: number; msgSource?: string; } /** * 提问消息公用接口 */ export interface CommonAskMsg { /** 消息 id */ id: string; /** 消息发送时间 */ time: number; /** 回答的用户 id,空值代表提问的消息 */ s_userId?: string; /** 发送者信息 */ user: MessageUser; } /** * 通过 api 接口获取回来的提问消息 */ export interface AskMsgByApi extends CommonAskMsg { /** 消息内容 */ content: string; /** 消息类型 */ msgType: '' | 'image'; } /** * 提问文本消息 */ export interface NormalAskMsg extends CommonAskMsg { /** 消息内容 */ content: string; /** 消息类型 */ msgType: msgTypes.NORMAL; } /** * 提问图片消息 */ export interface ImageAskMsg extends CommonAskMsg { /** 图片消息内容 */ content: ChatImgContent; /** 消息类型 */ msgType: msgTypes.CHAT_IMG; } /** * api 接口里的提问消息 */ export type AskMsg = NormalAskMsg | ImageAskMsg; /** * 提问异常 */ export interface AskError { message: string; } export interface SendAskQuestionData { /** 内容 */ content: string; /** 消息类型,undefined 表示文本消息 */ msgType?: 'image'; /** 房间号 */ roomId?: string; } /** * 发送提问图片消息 */ export interface SendAskImageOptions { /** 图片 id */ imageId: string; /** 图片地址 */ imageUrl: string; /** 图片尺寸 */ size?: { width: number; height: number; }; } export interface SendAskAnswerData extends SendAskQuestionData { s_userId: string; } export interface GetQuestionListOptions { /** 房间号 */ roomId?: string; /** 用户ID */ userId?: string; /** 页码 */ page?: number; /** 每页大小 */ size?: number; } export interface QuestionListApiResponse { list: string[]; page: number; size: number; totalCount: number; totalPage: number; } export interface GetQuestionUserListOfTimestampOptions { /** 房间号 */ roomId?: string; /** 用户id */ userId?: string; /** 时间戳 */ timestamp?: string; /** 该 timestamp 的用户列表中存在多少个,首次可以不传 */ index?: number; /** 长度 */ size?: number; /** 排序 */ order?: string; } /** 提问用户列表返回结构 */ export interface QuestionUserListOfTimestampResponse { list: Array<{ userId: string; pic: string; nick: string; actor: string; }>; } export interface GetQuestionListOfUserIdOptions extends GetQuestionListOptions { /** 获取的目标用户id */ objectUserId?: string; } } declare module '@polyv/chat-sdk/types/message' { /** * 聊天室消息基本接口 * @packageDocumentation */ import { ImageStatus } from '@polyv/chat-image-upload-sdk'; import { Events } from '@polyv/chat-sdk/constants/events'; import { msgTypes } from '@polyv/chat-sdk/constants/msg-types'; /** 消息基础接口 */ export interface SocketMessage { EVENT: string; [key: string]: unknown; /** 发送消息用户信息 */ user: MessageUser; } export interface SocketBaseMessage { EVENT: string; [key: string]: unknown; } /** 消息发送者 */ export interface MessageUser { /** 发送者 id */ userId: string; /** 发送者昵称 */ nick: string; /** 发送者头像 */ pic?: string; /** 发送者身份 */ userType: string; /** socketId */ uid?: string; /** 用户头衔 */ actor?: string; } /** 系统发出消息时的用户字段,如自定义消息 CUSTOMER_MESSAGE */ export interface SystemMessageUser { /** 系统用户名,默认"系统" */ nick: string; /** 系统用户头像 */ pic: string; /** 用户发出消息所在房间 */ roomId: string; uid: string; } /** 表情 socket 消息 */ export interface EmotionSocketMessage { /** 表情 id */ id: string; /** 消息 id */ messageId: string; /** 用户信息 */ user: MessageUser; } /** 表情事件类型 */ export interface EmotionMessage { EVENT: Events.EMOTION; /** 消息 id */ id: string; /** 表情 id */ emotionId: string; /** 表情标题 */ title: string; /** 表情图片地址 */ content: string; /** 指示消息类型 */ msgType: msgTypes.EMOTION; /** 用户信息 */ user: MessageUser; } /** 清空聊天室事件类型 */ export interface RemoveHistoryMessage { EVENT: Events.REMOVE_HISTORY; roomId: string; /** 签名,仅发送时存在 */ sign?: string; } export interface OnSliceIDMessage extends SocketBaseMessage { EVENT: Events.ON_SLICE_ID; data: { /** 洽谈室未读消息 */ unReadCountFromDiscussion?: number; speakTop?: ChatSpeakTopContent; }; } /** * sliceId 评论上墙已上墙的数据 */ export interface ChatSpeakTopContent { content: string; id: number; nick: string; pic: string; topActor: string; } export interface ChatSpeakTopMessage extends SocketBaseMessage, ChatSpeakTopContent { EVENT: Events.SPEAK_TO_TOP; } /** 图片上传封装事件 */ export interface ChatImgUploadProgressMsg extends SocketMessage { /** 图片发送状态 */ result: boolean; /** 消息发送者 */ user: MessageUser; /** 图片内容 */ content: ChatImgContent; } /** 图片上传过程事件字段 */ interface UploadImgSize { /** 宽度 */ width: number; /** 高度 */ height: number; } /** 图片消息 content 字段 */ export interface ChatImgContent { /** 图片id(上传 SDK 内部定义id) */ id: string; /** 图片上传状态 */ status: ImageStatus; /** 预览图片地址(本地地址) */ imgSrc?: string; /** 事件提示 */ msg?: string; /** 上传成功后,对象存储地址 */ uploadImgUrl: string; /** 上传成功后,对象存储地址(场次聊天消息特有字段) */ url?: string; /** 图片类型 */ type: string; /** 图片宽高信息 */ size: UploadImgSize; /** 消息来源, chatImg */ msgSource: string; } export interface SendFileContent { /** 文件地址 */ url: string; /** 文件名称 */ name: string; /** extend表示发给特殊身份 */ source?: string; /** 特殊身份是否需要审核 */ specialToCensored?: boolean; /** 是否跳过审核, Y表示跳过,N表示不跳过 */ freeReview?: 'Y' | 'N'; /** 回复消息的id */ quoteId?: string; } export {}; } declare module '@polyv/chat-sdk/message' { import EventEmitter from 'events'; import { ImageStatus } from '@polyv/chat-image-upload-sdk'; import { SocketIOEvents, CustomSocketIOEvents, Events, WsListener, EventType } from '@polyv/chat-sdk/constants/events'; import { msgTypes } from '@polyv/chat-sdk/constants/msg-types'; import { MessageConfig, MsgHandlers, DomainInfo, UserInfo, ChannelInfo, PlvSocketConfig } from '@polyv/chat-sdk/types/config'; import { SpeakOptions } from '@polyv/chat-sdk/types/index'; import { SocketMessage, ChatImgContent } from '@polyv/chat-sdk/types/message'; import APIQuery from '@polyv/chat-sdk/utils/ajax'; import UploadImage from '@polyv/chat-sdk/utils/upload-image'; import { ImageUploadOptions } from '@polyv/chat-sdk/message/types'; export abstract class Message extends EventEmitter { /** * 事件列表 */ static EVENTS: Readonly<{ BEFORE_SETUP: Events.BEFORE_SETUP; BEFORE_CONNECT: Events.BEFORE_CONNECT; DESTROYED: Events.DESTROYED; LOGIN: Events.LOGIN; RELOGIN: Events.RELOGIN; LOGIN_CB: Events.LOGIN_CB; LOGIN_SUCCESS: Events.LOGIN_SUCCESS; LOGOUT: Events.LOGOUT; TOKEN_EXPIRED: Events.TOKEN_EXPIRED; OVERTIMECONNECT: Events.OVERTIMECONNECT; CLOSEROOM: Events.CLOSEROOM; OPENROOM: Events.OPENROOM; SHIELD: Events.SHIELD; ADD_SHIELD: Events.ADD_SHIELD; CENSOR_CHANGE: Events.CENSOR_CHANGE; ADD_CENSORER: Events.ADD_CENSORER; REMOVE_SHIELD: Events.REMOVE_SHIELD; KICK: Events.KICK; UNKICK: Events.UNKICK; SPEAK: Events.SPEAK; SEND_MESSAGE: Events.SEND_MESSAGE; SPEAK_ERROR: Events.SPEAK_ERROR; CENSOR: Events.CENSOR; SELF_SPEAK: Events.SELF_SPEAK; CHAT_IMG: Events.CHAT_IMG; ON_SLICE_ID: Events.ON_SLICE_ID; EMOTION: Events.EMOTION; CUSTOMER_MESSAGE: Events.CUSTOMER_MESSAGE; REWARD: Events.REWARD; REDPAPER: Events.REDPAPER; RED_PAPER_RESULT: Events.RED_PAPER_RESULT; SYS_MSG: Events.SYS_MSG; REMOVE_HISTORY: Events.REMOVE_HISTORY; REMOVE_CONTENT: Events.REMOVE_CONTENT; CHAT_IMG_UPLOAD_PROGRESS: Events.CHAT_IMG_UPLOAD_PROGRESS; SELF_CHAT_IMG: Events.SELF_CHAT_IMG; SELF_CHAT_IMG_RESULT: Events.SELF_CHAT_IMG_RESULT; S_QUESTION: Events.S_QUESTION; T_ANSWER: Events.T_ANSWER; T_ANSWER_ERROR: Events.T_ANSWER_ERROR; AskQuestionError: Events.AskQuestionError; SET_NICK: Events.SET_NICK; GET_FULL_MESSAGE: Events.GET_FULL_MESSAGE; SEND_FILE: Events.SEND_FILE; LIKES: Events.LIKES; UPDATE_SESSION_ID: Events.UPDATE_SESSION_ID; FLOWERS: Events.FLOWERS; MAX_VIEWER_LOGIN: Events.MAX_VIEWER_LOGIN; MotivationLikes: Events.MotivationLikes; SPEAK_TO_TOP: Events.SPEAK_TO_TOP; SPEAK_CANCEL_TOP: Events.SPEAK_CANCEL_TOP; REFRESH_PRODUCT_LIST: Events.REFRESH_PRODUCT_LIST; MESSAGE: CustomSocketIOEvents.MESSAGE; CONNECT: SocketIOEvents.CONNECT; DISCONNECT: SocketIOEvents.DISCONNECT; RECONNECT: SocketIOEvents.RECONNECT; RECONNECT_ATTEMPT: SocketIOEvents.RECONNECT_ATTEMPT; ERROR: SocketIOEvents.ERROR; CONNECT_ERROR: SocketIOEvents.CONNECT_ERROR; CONNECT_TIMEOUT: SocketIOEvents.CONNECT_TIMEOUT; RECONNECTING: SocketIOEvents.RECONNECTING; }>; /** 当前页面访问协议 */ static PROTOCOL: string; /** 上传图片工具 */ protected _uploader: UploadImage; /** 用户ip */ protected _ip: string; /** 域名 */ protected _domainInfo: DomainInfo; /** 是否被禁言 */ protected _isBlocked: boolean; /** 直播 api 实例 */ readonly _liveApi: APIQuery; /** 聊天室 api 实例 */ readonly _chatApi: APIQuery; /** 聊天室配置 */ readonly _config: MessageConfig; /** TODO:子房间号 */ subRooms: string[]; /** socket实例 */ get socket(): undefined | SocketIOClient.Socket; /** socketID */ get socketID(): string; get events(): typeof Message.EVENTS; /** 消息类型常量 */ get msgTypes(): typeof msgTypes; /** 上传图片状态类型常量 */ get uploadImgStatus(): typeof ImageStatus; get userInfo(): UserInfo; get channelInfo(): ChannelInfo; get token(): string | undefined; protected msgHandlers: MsgHandlers; constructor(c