| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- import {
- callFunction,
- } from "../../utils/common.js";
- import permision from "@/js_sdk/wa-permission/permission.js";
- export default {
- namespaced: true,
- state: {
- dragOption: {
- x: uni.getSystemInfoSync().windowWidth,
- y: 200
- },
- currentVersion: "1.0.0",
- lastVersion: "1.0.0",
- callAccount: null,
- callSystem: null,
- currentPhone: "",
- recordId: undefined,
- signInState: false, // 是否签入成功
- redisStatus: false, // redis中的状态
- registerInfo: null, // 分机的注册信息
- dialing: false, // 拨号中
- incomingCallPhone: "",
- incomingCallId: null,
- lineList: [],
-
- phoneStatus : {
- isRing: false, // 外呼振铃
- isBusy: false, // 通话(来电外呼通用)
- isIncoming: false, // 来电振铃
- isEnd: false, // 挂断
- isLeisure: true // 空闲
- },
- isNotificationEnabled : false,
- isAlwaysAsk : false,
- },
- mutations: {
- SET_CALL_ACCOUNT(state, data) {
- state.callAccount = data;
- },
- SET_DRAGOPTION_Y(state, data) {
- state.dragOption.y = data;
- },
- SET_CURRENTVERSION(state, data) {
- state.currentVersion = data;
- },
- SET_LASTVERSION(state, data) {
- state.lastVersion = data;
- },
- SET_CALLSYSTEM(state, data) {
- state.callSystem = data;
- },
- SET_RECORDID(state, data) {
- state.recordId = data;
- },
- SET_CURRENTPHONE(state, data) {
- state.currentPhone = data;
- },
- SET_SIGNINSTATE(state, data) {
- state.signInState = data;
- },
- SET_DIALING(state, data) {
- state.phoneStatus = data;
- state.dialing = !data.isLeisure;
- },
- SET_INCOMINGCALLPHONE(state, data) {
- state.incomingCallPhone = data;
- },
- SET_INCOMINGCALLID(state, data) {
- state.incomingCallId = data;
- },
- SET_LINE_LIST(state, data) {
- state.lineList = data;
- },
- SET_REDIS_INFO(state, data) {
- state.redisStatus = data != null
- state.registerInfo = data;
- },
- },
- actions: {
- // 创建Wv的实例
- createWv({
- commit,
- state,
- rootState
- }) {
- if(state.callSystem != null){
- state.callSystem.close();
- }
- const wv = plus.webview.create("", "custom-webview", {
- 'uni-app': 'none'
- });
- const data = state.callAccount;
- const {
- ip,
- port,
- folder,
- webRtcIp,
- webRtcPort
- } = rootState.user.netConfig;
- const baseURL = ip + ":" + port + folder; /* 根域名 */
-
- wv.loadURL("/static/call/index.html?extension=" + data.extenNum + "&password=" + data.pwd +
- "&user_agent=app_" + data.userId + "&baseURL=" + baseURL + "&ip=" + webRtcIp + ":" + webRtcPort);
-
- // wv.loadURL("/static/call/index.html?extension=" + "yxx" + "&password=" + "1234" +
- // "&user_agent=app_" + data.userId + "&baseURL=" + baseURL + "&ip=" + webRtcIp + ":" + webRtcPort);
-
- // wv.loadURL("/static/call/index.html?extension=" + data.extenNum + "&password=" + data.pwd +
- // "&user_agent=app_" + data.userId + "&baseURL=" + "http://10.0.100.230:9500" + "&ip=" + "10.0.100.230" + ":9504");
- // wv.loadURL("/static/call/index.html?extension=" + data.extenNum + "&password=" + data.pwd +
- // "&user_agent=app_" + data.userId + "&baseURL=" + "http://59.42.9.166:9520/wfhl28gz_getwfxt0817" + "&ip=" + "59.42.9.166" + ":7564");
-
- // console.log("/static/call/index.html?extension=" + data.extenNum + "&password=" + data.pwd +
- // "&user_agent=app_" + data.userId + "&baseURL=" + baseURL + "&ip=" + ip.split("//")[1])
-
- // wv.loadURL("/static/call/index.html?extension=cyid1&password=1234&user_agent=app_1&baseURL=http://10.0.23.253:9500");
- // 设置线路
- wv.evalJS(`setLineList(${ JSON.stringify(state.lineList) })`);
- commit("SET_CALLSYSTEM", wv);
- },
- register({ state , dispatch , rootState}){
- if(rootState.user.userInfo.userId && rootState.user.netConfig.isCallOff === '1'){
- // 重新签出注册
- if(state.callSystem != null && state.phoneStatus.isLeisure){
- callFunction("unReg");
- }
- if(state.callSystem === null){
- dispatch("getExtensionByUserId", {
- userId: rootState.user.userInfo.userId
- }).then((res) => {
- Promise.all([permision.requestAndroidPermission("android.permission.RECORD_AUDIO"),permision.requestAndroidPermission('android.permission.MODIFY_AUDIO_SETTINGS')]).then(result=>{
- const flag = result.every(v=>v == 1);
- if(flag){
- dispatch("createWv");
- }
- })
- });
- }
- }
- },
- getExtensionByUserId({
- commit,
- dispatch
- }, params) {
- return new Promise((resolve, reject) => {
- uni.$u.api.getExtensionByUserId(params).then(({
- data
- }) => {
- if (data && data.length > 0) {
- commit("SET_CALL_ACCOUNT", data[0]);
- dispatch("getLineByIds", {
- extenId: data[0].id
- }).then(() => {
- resolve(data[0]);
- })
- } else {
- uni.$u.toast("检测到您未配置分机号");
- reject();
- }
- })
- })
- },
- getLineByIds({
- commit,
- state
- }, params) {
- return new Promise((resolve, reject) => {
- uni.$u.api.getLineByIds(params).then((lineRes) => {
- if (lineRes.data && lineRes.data.length === 0) {
- uni.$u.toast('检测到' + state.callAccount.extenNum + '没有配置线路');
- reject();
- } else {
- commit('SET_LINE_LIST', lineRes.data);
- resolve();
- }
- })
- })
- },
- call({ state, commit, rootState, dispatch }, { lineData, phoneId, caseId, caseDetail }){
- return new Promise(async (resolve,reject)=>{
- const { dialStr: dialer, phone: linePhone, type, callPhone } = lineData;
-
- if (!callPhone) {
- uni.$u.toast('没有外显号码,请前往呼叫中心补充')
- return
- }
-
- let flag = false
- if (type !== 'ip') {
- flag = true
- } else {
- const { code } = await uni.$u.api.setEffectiveCallerIdNumber({ extension: state.callAccount.extenNum, phone: linePhone });
- flag = code === 200
- }
-
- if (flag) {
- const { data } = await uni.$u.api.getJsSipExtra({ caller : linePhone, phoneId , callPhone , caseId , type : "2" });
- const { callee: x_callee, caller: x_caller, orgId, recordingId, base64P, callPhone: x_callPhone } = data;
-
- const afterPhone = new Buffer(base64P, 'base64').toString('utf8');
-
- const phone = afterPhone.replace('-', '').trim();
-
- const callParams = {
- replacedContact : dialer.replace('${destination_number}',phone),
- bankCode : caseDetail.bankCode ,
- bankBatchCode : caseDetail.bankBatchCode,
- userId : rootState.user.userInfo.userId,
- nickName : rootState.user.userInfo.nickName,
- deptId: rootState.user.userInfo.deptId,
- recordingId : recordingId,
- x_callee : x_callee,
- x_caller : x_caller,
- orgId : orgId,
- systemCode : rootState.user.system.value,
- extension : state.callAccount.extenNum,
- x_callPhone : x_callPhone,
- callPhone : callPhone,
- phone : phone,
- caseId : caseId
- }
- callFunction("handleCall",callParams);
- }
- })
- },
- saveUnionAppCall({
- commit
- }, params) {
- return new Promise((resolve, reject) => {
- uni.$u.api.saveUnionAppCall(params, {
- custom: {
- loading: false
- }
- }).then(({
- data
- }) => {
- if (params.action === "outbound") {
- commit("SET_RECORDID", data);
- commit("SET_CURRENTPHONE", params.phone);
- }else if (params.action === "incoming"){
- commit("SET_INCOMINGCALLPHONE",params.phone);
- commit("SET_INCOMINGCALLID",data)
- }
- resolve(data);
- }).catch(() => {
- reject();
- })
- })
- },
- logoutCloseData(store) {
- store.state.callAccount = null;
- store.commit("SET_CURRENTPHONE", "");
- store.commit("SET_RECORDID", undefined);
- store.state.dialing = false; // 拨号中
- store.state.incomingCallPhone = "";
- store.state.incomingCallId = null;
- store.rootState.user.userInfo = {};
- store.state.signInState = false;
- if(store.state.callSystem){
- store.state.callSystem.close();
- store.commit("SET_CALLSYSTEM", null);
- }
- },
- getIsUseCallSystem(store, action) {
- return new Promise((resolve, reject) => {
- const {
- signInState,
- callSystem,
- callAccount
- } = store.state;
- Promise.all([permision.requestAndroidPermission("android.permission.RECORD_AUDIO"), permision
- .requestAndroidPermission('android.permission.MODIFY_AUDIO_SETTINGS')
- ]).then(result => {
- const flag = result.every(v => v == 1);
- if (flag) {
- if (!callAccount) {
- uni.$u.toast("检测到您的账号未配置分机号");
- store.commit("SET_DIALING", false);
- reject()
- } else if (!callSystem) {
- uni.$u.toast("检测到呼叫系统被销毁,将为您重新创建,请稍等几秒后操作");
- store.dispatch("createWv");
- store.commit("SET_DIALING", false);
- reject();
- } else if (callSystem) {
- resolve();
- }
- } else {
- store.commit("SET_DIALING", false);
- uni.$u.toast("请提供录音权限");
- reject();
- }
- })
- })
- }
- },
- }
|