import { ref } from 'vue'; import { getCurrentCityConfig } from '@/utils/appConfig'; import { getNowDateTime } from '@/utils/constants'; import { ElMessage } from 'element-plus'; import { dutyOff } from '@/api/public/wex'; /** * @description 呼叫中心配置 方法 * @return * cityName: 'name', // 中文名称 * cityCode: 'code', // 6位区号 * cityAbbr: 'abbr', // 简写 * recordNumber: 'recordNumber', // 备案号 * locationCenter: [lat,lng], // 地图中心点 * loginBg: 'loginBg', // 登录背景 * isShowLogo: true, // 是否显示左上角logo */ export const callCenterWs = ref(null); // 全局变量 当前呼叫中心链接 export const callCenterIsSignIn = ref(false); // 当前呼叫中心是否登录 export const callCenterIsOnThePhone = ref(false); // 当前呼叫中心是否正在通话中 export const currentTel = ref({ telNo: '', // 分机号 jobNum: '', //工号 telGroup: '', // 技能组ID }); // 当前分机号 const { cityName } = getCurrentCityConfig(); // 发送消息 const e_TelSendMsg = (strObj: Object) => { // 客户端当前时间 const nowTime = getNowDateTime(); const strMsg = JSON.stringify(strObj); console.log(nowTime + ' 发送消息:' + strMsg, callCenterWs.value?.status); if (callCenterWs.value?.ws?.readyState === 1) { // 已经链接并且可以通讯,则发放文本消息 callCenterWs.value?.send(strMsg); } else { ElMessage.error('请先签入'); } }; /* * 外呼 * ReqMakeCall - 方法名 * Extension:分机号 * Called:被叫 * CustomerId:客户ID */ const callout = (strCallNumber: number | string) => { if (!strCallNumber) { ElMessage.error('电话号码不能为空'); return; } const obkMsg = { Action: 'ReqMakeCall', Param: { Extension: currentTel.value.telNo, Called: strCallNumber, CustomerId: '', }, }; // 发送请求 e_TelSendMsg(obkMsg); }; /* * 签出 * ReqAgentLogout - 签出方法名称 * Extension - 分机号码 */ const signOutFn = () => { const objMsg = { Action: 'ReqAgentLogout', Param: { Extension: currentTel.value.telNo, }, }; // 发送请求 e_TelSendMsg(objMsg); }; // 外呼统一调用外呼方法 兼容不同的呼叫中心 export function callCenterOutbound(phoneNumber: number | string) { if (!callCenterWs.value) { ElMessage.warning('请先签入'); return; } switch (cityName) { case '宜宾市': callCenterWs.value?.dial(phoneNumber); break; case '自贡市': callout(phoneNumber); break; default: } } // 统一调用退出登录并关闭链接方法 兼容不同的呼叫中心 export function callCenterLogout() { if (!callCenterWs.value) { ElMessage.warning('请先签入'); return; } switch (cityName) { case '宜宾市': callCenterWs.value?.logout(); callCenterWs.value?.close(); dutyOff(); // 呼叫中心签出 break; case '自贡市': signOutFn(); break; default: } }