123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- import TUICore, { TUIConstants, TUILogin } from '@tencentcloud/tui-core';
- import { TUIGlobal } from '@tencentcloud/universal-api';
- export default class CallkitPluginServer {
- constructor() {
- // Listen for successful login
- TUICore.registerEvent(TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED, TUIConstants.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS, this);
- // Native plugin callkit registers call service
- TUICore.registerService(TUIConstants.TUICalling.SERVICE.NAME, this);
- // Native plugin callkit registration extension
- TUICore.registerExtension(TUIConstants.TUIChat.EXTENSION.INPUT_MORE.EXT_ID, this);
- }
- /**
- * Listen for the successful notification of TUILogin.login and then log in with callkit
- */
- public onNotifyEvent(eventName: string, subKey: string) {
- if (eventName === TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED) {
- let SDKAppID, userID, userSig, context;
- switch (subKey) {
- case TUIConstants.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS:
- context = TUILogin.getContext();
- SDKAppID = context.SDKAppID;
- userID = context.userID;
- userSig = context.userSig;
- TUIGlobal.$TUICallKit && TUIGlobal.$TUICallKit.login({
- SDKAppID,
- userID,
- userSig,
- }, (res: any) => {
- if (res.code === 0) {
- console.log('TUICallkit login success!');
- // Floating window function
- TUIGlobal.$TUICallKit.enableFloatWindow(true);
- } else {
- console.error(`TUICallkit login failed,${res.msg}`);
- }
- });
- break;
- }
- }
- }
- /**
- * Native plugin callkit implements onGetExtension method
- */
- public onGetExtension(extensionID: string, params: Record<string, any>) {
- if (!TUIGlobal.$TUICallKit) {
- console.warn('请检查原生插件 TencentCloud-TUICallKit 是否已集成');
- return [];
- }
- if (extensionID === TUIConstants.TUIChat.EXTENSION.INPUT_MORE.EXT_ID) {
- const list = [];
- const voiceCallExtension = {
- weight: 1000,
- text: '语音通话',
- icon: 'https://web.sdk.qcloud.com/component/TUIKit/assets/call.png',
- data: {
- name: 'voiceCall',
- },
- listener: {
- onClicked: (options: any) => {
- this.setCallExtension(options);
- },
- },
- };
- const videoCallExtension = {
- weight: 900,
- text: '视频通话',
- icon: 'https://web.sdk.qcloud.com/component/TUIKit/assets/call-video-reverse.svg',
- data: {
- name: 'videoCall',
- },
- listener: {
- onClicked: (options: any) => {
- this.setCallExtension(options);
- },
- },
- };
- if (!(params as any)?.filterVoice) {
- list.push(voiceCallExtension);
- }
- if (!(params as any)?.filterVideo) {
- list.push(videoCallExtension);
- }
- return list;
- }
- }
- /**
- * Native plugin callkit implements onCall method
- */
- public onCall(method: string, params: any) {
- if (!TUIGlobal.$TUICallKit) {
- console.warn('请检查原生插件 TencentCloud-TUICallKit 是否已集成');
- return;
- }
- if (method === TUIConstants.TUICalling.SERVICE.METHOD.START_CALL) {
- const { groupID = undefined, userIDList = [], type, callParams } = params;
- if (groupID) {
- TUIGlobal.$TUICallKit.groupCall({
- groupID,
- userIDList,
- callMediaType: type,
- callParams,
- }, (res: any) => {
- if (res.code === 0) {
- console.log('TUICallkit groupCall success');
- } else {
- console.error(`TUICallkit groupCall failed,${res.msg}`);
- }
- });
- } else if (userIDList.length === 1) {
- TUIGlobal.$TUICallKit.call(
- {
- userID: userIDList[0],
- callMediaType: type,
- callParams,
- },
- (res: any) => {
- if (res.code === 0) {
- console.log('TUICallkit call success');
- } else {
- console.log(`TUICallkit call failed,${res.msg}`);
- }
- });
- }
- }
- }
- public setCallExtension(options: any) {
- const { groupID = undefined, userIDList = [], type, callParams } = options;
- try {
- if (groupID) {
- // group call
- TUIGlobal.$TUICallKit.groupCall({
- groupID,
- userIDList,
- callMediaType: type,
- callParams,
- }, (res: any) => {
- if (res.code === 0) {
- console.log('TUICallkit groupCall success');
- } else {
- console.log(`TUICallkit groupCall failed,${res.msg}`);
- }
- });
- } else if (userIDList.length === 1) {
- // 1v1 call
- TUIGlobal.$TUICallKit.call(
- {
- userID: userIDList[0],
- callMediaType: type,
- callParams,
- },
- (res: any) => {
- if (res.code === 0) {
- console.log('TUICallkit call success');
- } else {
- console.log(`TUICallkit call failed,${res.msg}`);
- }
- },
- );
- }
- } catch (error: any) {
- TUIGlobal.showToast({
- title: '拨打失败!',
- icon: 'error',
- });
- }
- }
- }
|