|
@@ -596,7 +596,7 @@ const removeTimer = () => {
|
|
|
// 开始签入时长
|
|
|
const onDutyTime = ref<any>(0); // 签入时长
|
|
|
const onDutyTimer = ref<any>(null); // 签入时长定时器
|
|
|
-const startTimeOnDuty = (startTime?: any) => {
|
|
|
+const startDutyTimer = (startTime?: any) => {
|
|
|
if (startTime) {
|
|
|
// 从后台获取签入时长
|
|
|
// 使用当前时间减去后台返回的签入时间
|
|
@@ -771,7 +771,7 @@ const onDutyFn = async () => {
|
|
|
currentTel.value.queue = res.result.queueId;
|
|
|
// 不需要选择分机号和密码 直接签入 传入默认分机号
|
|
|
websocket_connect(); //开启消息监听
|
|
|
- startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
|
|
|
+ startDutyTimer(res.result.startTime); // 开启计时 签入时长
|
|
|
state.loading = false;
|
|
|
})
|
|
|
.catch(() => {})
|
|
@@ -790,80 +790,58 @@ const clickOnDuty = (formEl: FormInstance | undefined) => {
|
|
|
formEl.validate((valid: boolean) => {
|
|
|
if (!valid) return;
|
|
|
state.loading = true;
|
|
|
+ let request = {};
|
|
|
if (AppConfigInfo.value.isNeedTelNo && AppConfigInfo.value.isTelNeedVerify) {
|
|
|
// 需要分机和密码
|
|
|
- const request = {
|
|
|
+ request = {
|
|
|
telNo: state.dutyForm.telNo,
|
|
|
telPwd: state.dutyForm.password,
|
|
|
};
|
|
|
- dutyOn(request)
|
|
|
- .then((res: any) => {
|
|
|
- currentTel.value.password = state.dutyForm.password;
|
|
|
- currentTel.value.telNo = state.dutyForm.telNo;
|
|
|
- currentTel.value.queue = res.result.queueId;
|
|
|
- websocket_connect(); //开启消息监听
|
|
|
- startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- dutyOff();
|
|
|
- // 重置所有状态
|
|
|
- useTelStatusStore.resetState();
|
|
|
- console.log('呼叫中心:签入错误111');
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- });
|
|
|
} else if (AppConfigInfo.value.isNeedTelNo) {
|
|
|
//需要分机号
|
|
|
- const request = {
|
|
|
+ request = {
|
|
|
telNo: state.dutyForm.telNo,
|
|
|
};
|
|
|
- dutyOn(request)
|
|
|
- .then((res: any) => {
|
|
|
+ } else if (AppConfigInfo.value.isTelNeedVerify) {
|
|
|
+ // 需要密码
|
|
|
+ request = {
|
|
|
+ telNo: state.dutyForm.telNo,
|
|
|
+ telPwd: userInfos.value.defaultTelNo,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ dutyOn(request)
|
|
|
+ .then((res: any) => {
|
|
|
+ if (AppConfigInfo.value.isNeedTelNo && AppConfigInfo.value.isTelNeedVerify) {
|
|
|
+ // 需要分机和密码
|
|
|
+ currentTel.value.password = state.dutyForm.password;
|
|
|
+ currentTel.value.telNo = state.dutyForm.telNo;
|
|
|
+ currentTel.value.queue = res.result.queueId;
|
|
|
+ } else if (AppConfigInfo.value.isNeedTelNo) {
|
|
|
+ //需要分机号
|
|
|
currentTel.value.password = res.result.telPwd;
|
|
|
currentTel.value.telNo = res.result.telNo;
|
|
|
currentTel.value.queue = res.result.queueId;
|
|
|
- websocket_connect(); //开启消息监听
|
|
|
- startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- dutyOff();
|
|
|
- // 重置所有状态
|
|
|
- useTelStatusStore.resetState();
|
|
|
- console.log('呼叫中心:签入错误222');
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- });
|
|
|
- } else if (AppConfigInfo.value.isTelNeedVerify) {
|
|
|
- // 需要密码
|
|
|
- dutyOn({ telPwd: state.dutyForm.password, telNo: userInfos.value.defaultTelNo })
|
|
|
- .then((res: any) => {
|
|
|
+ } else if (AppConfigInfo.value.isTelNeedVerify) {
|
|
|
+ // 需要密码
|
|
|
currentTel.value.password = state.dutyForm.password;
|
|
|
currentTel.value.telNo = res.result.telNo;
|
|
|
currentTel.value.queue = res.result.queueId;
|
|
|
- websocket_connect(); //开启消息监听
|
|
|
- startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- dutyOff();
|
|
|
- // 重置所有状态
|
|
|
- useTelStatusStore.resetState();
|
|
|
- console.log('呼叫中心:签入错误333');
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- state.loading = false;
|
|
|
- state.dutyDialogVisible = false;
|
|
|
- });
|
|
|
- }
|
|
|
+ }
|
|
|
+ websocket_connect(); //开启消息监听
|
|
|
+ startDutyTimer(res.result.startTime); // 开启计时 签入时长
|
|
|
+ state.loading = false;
|
|
|
+ state.dutyDialogVisible = false;
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ dutyOff();
|
|
|
+ // 重置所有状态
|
|
|
+ useTelStatusStore.resetState();
|
|
|
+ console.log('呼叫中心:签入错误111');
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ state.loading = false;
|
|
|
+ state.dutyDialogVisible = false;
|
|
|
+ });
|
|
|
});
|
|
|
};
|
|
|
|
|
@@ -893,7 +871,7 @@ const onConnect = () => {
|
|
|
array_ola_queue[i] = array[i];
|
|
|
}
|
|
|
ola.login(array_ola_queue, currentTel.value.telNo, { type: 'onhook' });
|
|
|
- seatAssistOn(currentTel.value.telNo); // 坐席助手开启
|
|
|
+ connectVoiceAssistant(currentTel.value.telNo); // 坐席助手开启
|
|
|
}
|
|
|
};
|
|
|
const router = useRouter();
|
|
@@ -1478,40 +1456,26 @@ const clickOnOutbound = (formEl: FormInstance | undefined) => {
|
|
|
// 坐席辅链接
|
|
|
const socket = ref<any>(null);
|
|
|
// 打开websocket链接
|
|
|
-const seatAssistOn = (telNo: string) => {
|
|
|
- if (!telNo) return;
|
|
|
- if (socket.value?.socket?.ws) {
|
|
|
- // 如果已经有连接了 先关闭
|
|
|
- socket.value.close();
|
|
|
+const connectVoiceAssistant = async (telNo: string) => {
|
|
|
+ if (!telNo || socket.value?.socket?.ws) {
|
|
|
+ socket.value?.close();
|
|
|
socket.value = null;
|
|
|
}
|
|
|
- axios
|
|
|
- .get(`${import.meta.env.VITE_VOICE_ASSISTANT_API_URL}/users/getUserByAgentId/${telNo}`)
|
|
|
- .then((res) => {
|
|
|
- const { data } = res;
|
|
|
- const { result } = data;
|
|
|
- const uid = `8#User-${result.uid}`;
|
|
|
- const subscribe = `/trans/${result.orgCode}/${result.groupUid}/${uid}`;
|
|
|
- socket.value = useSocket(import.meta.env.VITE_VOICE_ASSISTANT_SOCKET_URL, { uid, subscribe });
|
|
|
- socket.value.on('open', () => {
|
|
|
- console.log('坐席辅助:已开启');
|
|
|
- socket.value.send({
|
|
|
- // 调用登录
|
|
|
- id: '',
|
|
|
- type: 1,
|
|
|
- from: uid,
|
|
|
- to: 'sys',
|
|
|
- timestamps: new Date().getTime(),
|
|
|
- body: result.userName,
|
|
|
- });
|
|
|
- });
|
|
|
- socket.value.on('message', wsReceive); // 接收消息
|
|
|
- /* socket.value.on('error', onError); // 错误
|
|
|
- socket.value.on('close', onClose); // 关闭*/
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.log(err, '坐席辅助:获取到的坐席辅助用户信息失败');
|
|
|
+ try {
|
|
|
+ const { data } = await axios.get(`${import.meta.env.VITE_VOICE_ASSISTANT_API_URL}/users/getUserByAgentId/${telNo}`);
|
|
|
+ const { result } = data;
|
|
|
+ const uid = `8#User-${result.uid}`;
|
|
|
+ const subscribe = `/trans/${result.orgCode}/${result.groupUid}/${uid}`;
|
|
|
+
|
|
|
+ socket.value = useSocket(import.meta.env.VITE_VOICE_ASSISTANT_SOCKET_URL, { uid, subscribe });
|
|
|
+ socket.value.on('open', () => {
|
|
|
+ socket.value.send({ id: '', type: 1, from: uid, to: 'sys', timestamps: new Date().getTime(), body: result.userName });
|
|
|
+ console.log('坐席辅助:连接成功');
|
|
|
});
|
|
|
+ socket.value.on('message', wsReceive);
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err, 'Failed to get voice assistant user information');
|
|
|
+ }
|
|
|
};
|
|
|
// 坐席辅助关闭
|
|
|
const seatAssistOff = () => {
|
|
@@ -1534,33 +1498,35 @@ const wsReceive = (message: any) => {
|
|
|
return;
|
|
|
}
|
|
|
};
|
|
|
-onMounted(async () => {
|
|
|
- clearTimeout(talkDealTimer.value); // 清除话后整理定时器
|
|
|
- signalRStart(); //开启消息监听
|
|
|
- removeTimerOnDuty(); // 移除定时器
|
|
|
- await getTelsLists(); // 查询所有分机
|
|
|
+// 刷新页面呼叫中心链接
|
|
|
+const callCenterConnect = async () => {
|
|
|
if (telStatusInfo.value.telsNo) {
|
|
|
- dutyOn({ telNo: telStatusInfo.value.telsNo })
|
|
|
- .then((res: any) => {
|
|
|
- currentTel.value.password = res.result.telPwd;
|
|
|
- currentTel.value.telNo = res.result.telNo;
|
|
|
- currentTel.value.queue = res.result.queueId;
|
|
|
- websocket_connect(); //开启消息监听
|
|
|
- startTimeOnDuty(res.result.startTime); // 开启计时 签入时长
|
|
|
- state.loading = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- dutyOff();
|
|
|
- // 重置所有状态
|
|
|
- useTelStatusStore.resetState();
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- state.loading = false;
|
|
|
- });
|
|
|
+ try {
|
|
|
+ const { result } = await dutyOn({ telNo: telStatusInfo.value.telsNo });
|
|
|
+ currentTel.value.password = result.telPwd;
|
|
|
+ currentTel.value.telNo = result.telNo;
|
|
|
+ currentTel.value.queue = result.queueId;
|
|
|
+ websocket_connect(); //开启消息监听
|
|
|
+ startDutyTimer(result.startTime); // 开启计时 签入时长
|
|
|
+ state.loading = false;
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ await dutyOff();
|
|
|
+ // 重置所有状态
|
|
|
+ useTelStatusStore.resetState();
|
|
|
+ state.loading = false;
|
|
|
+ }
|
|
|
} else {
|
|
|
// 重置所有状态
|
|
|
useTelStatusStore.resetState();
|
|
|
}
|
|
|
+};
|
|
|
+onMounted(async () => {
|
|
|
+ clearTimeout(talkDealTimer.value); // 清除话后整理定时器
|
|
|
+ signalRStart(); //开启消息监听
|
|
|
+ removeTimerOnDuty(); // 移除定时器
|
|
|
+ await getTelsLists(); // 查询所有分机
|
|
|
+ await callCenterConnect(); // 呼叫中心链接
|
|
|
});
|
|
|
</script>
|
|
|
|