From 2977b13162d90304d972d4b04be8c4adc1250b93 Mon Sep 17 00:00:00 2001 From: WXL (wul) <wl_5969728@163.com> Date: 星期三, 17 九月 2025 16:18:26 +0800 Subject: [PATCH] 同步 --- src/components/CallButton/index.vue | 109 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 95 insertions(+), 14 deletions(-) diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue index b52d1f9..9894b01 100644 --- a/src/components/CallButton/index.vue +++ b/src/components/CallButton/index.vue @@ -28,6 +28,7 @@ <script> import sipService from "@/utils/sipService"; +import { CallsetState, CallgetList } from "@/api/AiCentre/index"; export default { props: { @@ -37,17 +38,20 @@ }, }, data() { - const randomNum = Math.floor(Math.random() * 20) + 1000; // 鍐呴儴瀹氫箟 + const randomNum = Math.floor(Math.random() * 20) + 1000; // 瀹氫箟闅忔満鍒嗘満鍙� return { isCalling: false, + randomNum: randomNum, + randomID: null, callStatus: "idle", // idle, calling, connected, ended sipStatus: "鏈繛鎺�", sipStatusClass: "status-disconnected", sipConfig: { - wsUrl: "wss://192.169.129.198:7443", - sipUri: `${randomNum}` + "@192.169.129.198", - password: "heskj@1234", + wsUrl: "wss://192.168.10.124:7443", + sipUri: "", + password: "Smartor@2023", displayName: "Web 灏忛緳", + // realm: "9.208.5.18:8090", }, }; }, @@ -77,13 +81,22 @@ return this.isCalling ? "閫氳瘽涓�..." : "涓�閿懠鍙�"; }, }, - mounted() { - console.log('褰撳墠鍒嗘満鍙�',this.sipConfig); + created() { + // CallgetList(); + }, + async mounted() { + await this.CallgetList(); sipService.init(this.sipConfig); + // 璁剧疆鐘舵�佸洖璋� sipService.onStatusChange = (status) => { this.sipStatus = status.text; this.sipStatusClass = `status-${status.type}`; + + // 澶勭悊娉ㄥ唽澶辫触鍜屾柇寮�杩炴帴鎯呭喌 + if (status.type === "failed" || status.type === "disconnected") { + this.overCallsetState(); // 閲婃斁鍒嗘満鍙� + } }; // 鐩戝惉閫氳瘽鐘舵�佸彉鍖� @@ -106,27 +119,95 @@ // 鍏堟鏌ユ槸鍚﹀彲浠ュ懠鍙� const { canCall, reason } = sipService.canMakeCall(); if (!canCall) { - this.$message.warning(reason); - return; + const { canCall, reason } = sipService.canMakeCall(); + //this.$message.warning(reason); + //return; } this.callStatus = "calling"; this.isCalling = true; - console.log('寮�濮嬪懠鍙細',sipService); + console.log("寮�濮嬪懠鍙細", sipService); - await sipService.makeCall(this.phoneNumber); + await sipService.makeCall("0" + this.phoneNumber); } catch (error) { - console.error("鍛煎彨澶辫触:", error); - this.callStatus = "ended"; - this.isCalling = false; - this.$message.error(`鍛煎彨澶辫触: ${error.message}`); + let registrationTime = Date.now(); // 璁板綍娉ㄩ攢鎴愬姛鏃堕棿 + console.log(registrationTime, "鍛煎彨澶辫触鏃堕棿"); + console.error("鍛煎彨澶辫触1:", error); + // this.callStatus = "ended"; + // this.isCalling = false; + //this.$message.error(`鍛煎彨澶辫触: ${error.message}`); + try { + // 鍏堟鏌ユ槸鍚﹀彲浠ュ懠鍙� + const { canCall, reason } = sipService.canMakeCall(); + if (!canCall) { + const { canCall, reason } = sipService.canMakeCall(); + } + this.callStatus = "calling"; + this.isCalling = true; + console.log("寮�濮嬪懠鍙細", sipService); + + await sipService.makeCall("0" + this.phoneNumber); + } catch (error) { + this.callStatus = "ended"; + this.isCalling = false; + } + } + }, + // 鏌ヨ鍙敤鍒嗘満鍙� + async CallgetList() { + try { + const res = await CallgetList(); + this.randomNum = res.data[0].tel; + this.randomID = res.data[0].id; + // 姝g‘璁剧疆 sipUri + this.sipConfig.sipUri = `${this.randomNum}@192.168.10.124`; + this.startCallsetState(); + } catch (error) { + console.error("鑾峰彇鍒嗘満鍙峰け璐�:", error); + this.updateStatus("failed", "鑾峰彇鍒嗘満鍙峰け璐�"); + } + }, + async startCallsetState() { + try { + await CallsetState({ id: this.randomID, state: 1 }); + console.log("鍒嗘満鍙风姸鎬佹洿鏂颁负浣跨敤涓�"); + } catch (error) { + console.error("鏇存柊鍒嗘満鍙风姸鎬佸け璐�:", error); } }, + async overCallsetState() { + try { + if (this.randomID) { + await CallsetState({ id: this.randomID, state: 0 }); + console.log("鍒嗘満鍙风姸鎬佹洿鏂颁负鍙敤"); + } + } catch (error) { + console.error("閲婃斁鍒嗘満鍙峰け璐�:", error); + } + }, endCall() { sipService.endCall(); this.callStatus = "ended"; this.isCalling = false; }, + cleanupResources() { + // 缁撴潫閫氳瘽 + if (this.isCalling) { + sipService.endCall(); + } + + // 閲婃斁鍒嗘満鍙� + this.overCallsetState(); + + // 鏂紑 SIP 杩炴帴 + if (sipService.ua) { + sipService.ua.stop(); + } + }, + }, + beforeUnmount() { + // 缁勪欢閿�姣佹椂纭繚閲婃斁璧勬簮 + this.cleanupResources(); }, }; </script> -- Gitblit v1.9.3