From e8c62bd430b9697d3f954125b7ec9f61f18347a2 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期一, 20 十月 2025 11:19:34 +0800
Subject: [PATCH] 测试完成
---
src/components/CallButton/index.vue | 107 +++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 94 insertions(+), 13 deletions(-)
diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue
index b52d1f9..bc17eea 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);
} 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