| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import { requestClient } from '#/api/request'; |
| | | |
| | | export namespace ImRtcApi { |
| | | /** å建æ°éè¯è¯·æ± VO */ |
| | | export interface RtcCallCreateReqVO { |
| | | conversationType: number; |
| | | mediaType: number; |
| | | groupId?: number; |
| | | inviteeIds: number[]; // 被é请çç¨æ·ç¼å·éåï¼ç§èå¿
ä¼ 1 个对端ï¼ç¾¤èå¿
ä¼ è³å° 1 人 |
| | | } |
| | | |
| | | /** éè¯ä¸è¿½å éè¯·è¯·æ± VOï¼ä»
群éè¯å¯ç¨ */ |
| | | export interface RtcCallInviteReqVO { |
| | | room: string; |
| | | inviteeIds: number[]; |
| | | } |
| | | |
| | | /** éè¯ä¼è¯ VOï¼create / join / accept / refreshToken å
±ç¨ */ |
| | | export interface RtcCallRespVO { |
| | | room: string; // ä¸å¡éè¯ç¼å·ï¼åæ¶ä½ä¸º LiveKit æ¿é´åï¼ |
| | | livekitUrl: string; |
| | | token?: string; // ENDED ç¶ææ¶ä¸º nullï¼æ é connect LiveKitï¼ |
| | | conversationType: number; |
| | | mediaType: number; |
| | | status: number; |
| | | endReason?: number; // ç»æåå ï¼ä»
status=ENDED æ¶æå¼ |
| | | inviterId: number; |
| | | groupId?: number; |
| | | inviteeIds?: number[]; |
| | | joinedUserIds?: number[]; |
| | | } |
| | | |
| | | /** 群活è·éè¯æ¥è¯¢ååºï¼ä¸å« token */ |
| | | export interface RtcGroupCallRespVO { |
| | | room: string; |
| | | groupId: number; |
| | | mediaType: number; |
| | | inviterId: number; |
| | | joinedUserIds?: number[]; |
| | | inviteeIds?: number[]; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** å建æ°éè¯ï¼ç§èæç¾¤èæ ¹æ® conversationType åºå */ |
| | | export function createCall(data: ImRtcApi.RtcCallCreateReqVO) { |
| | | return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/create', data); |
| | | } |
| | | |
| | | /** éè¯ä¸è¿½å é请ï¼ä»
群éè¯å¯ç¨ */ |
| | | export function inviteCall(data: ImRtcApi.RtcCallInviteReqVO) { |
| | | return requestClient.post<boolean>('/im/rtc/invite', data); |
| | | } |
| | | |
| | | /** å å
¥å·²æç¾¤éè¯ï¼ç¨äºè¶åæ¡ãå å
¥ãæé® */ |
| | | export function joinCall(room: string) { |
| | | return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/join', undefined, { |
| | | params: { room }, |
| | | }); |
| | | } |
| | | |
| | | /** æ¥å¬éè¯ */ |
| | | export function acceptCall(room: string) { |
| | | return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/accept', undefined, { |
| | | params: { room }, |
| | | }); |
| | | } |
| | | |
| | | /** æç»éè¯ */ |
| | | export function rejectCall(room: string) { |
| | | return requestClient.post<boolean>('/im/rtc/reject', undefined, { |
| | | params: { room }, |
| | | }); |
| | | } |
| | | |
| | | /** åæ¶é请ï¼ä¸»å«æ¥éåè°ç¨ */ |
| | | export function cancelCall(room: string) { |
| | | return requestClient.post<boolean>('/im/rtc/cancel', undefined, { |
| | | params: { room }, |
| | | }); |
| | | } |
| | | |
| | | /** 离å¼éè¯ï¼æ¥éåè°ç¨ */ |
| | | export function leaveCall(room: string) { |
| | | return requestClient.post<boolean>('/im/rtc/leave', undefined, { |
| | | params: { room }, |
| | | }); |
| | | } |
| | | |
| | | /** æ¯éè¶
æ¶æ£æ¥ï¼RUNNING 端 timer å
åºï¼è§¦åå端ç«å³æ«æè¯¥ room çè¶
æ¶ INVITINGï¼æ¥å£éé»ï¼ */ |
| | | export function noAnswerCallCheck(room: string) { |
| | | return requestClient.post<boolean>( |
| | | '/im/rtc/no-answer-call-check', |
| | | undefined, |
| | | { params: { room } }, |
| | | ); |
| | | } |
| | | |
| | | /** æ¥è¯¢å½åè¿è¡ä¸çéè¯ï¼ç®åä»
群èåºæ¯ï¼è¶åæ¡ï¼ï¼è¿å null è¡¨ç¤ºæ æ´»è·éè¯ */ |
| | | export function getActiveCall(groupId: number) { |
| | | return requestClient.get<ImRtcApi.RtcGroupCallRespVO | null>( |
| | | '/im/rtc/get-active-call', |
| | | { params: { groupId } }, |
| | | ); |
| | | } |