 
        Greasy Fork is available in English.
一个在电信领域的智能助手
当前为 
// ==UserScript==
// @name         智能话席助手
// @description   一个在电信领域的智能助手
// @namespace    http://tampermonkey.net/
// @license      GPL-3.0-only
// @version      0.27
// @description  智能话席助手
// @author       xiaoliang
// @match        https://123.147.219.22:9114/*
// @match        http://10.238.1.245/*
// @match        http://127.0.0.1:5500/512lmock_liangtong_page.html
// @resource customCSS1 https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css
// @grant        GM_addStyle
// @grant        GM_getResourceText
// @require      http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @require      https://code.jquery.com/ui/1.13.2/jquery-ui.js
// ==/UserScript==
(function () {
	'use strict';
	// Your code here...
	if (!$) {
		var s = document.createElement("script");
		s.src = "http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js";
		s.async = false;
		document.documentElement.appendChild(s);
	}
	const LOGO_CLOSE_SRC = 'https://cq.infowell.cn/image/close-logo.png'
	const LOGO_INACTIVE_SRC = 'https://cq.infowell.cn/image/in-intelligent-assistant.png'
	const LOGO_ACTIVE_SRC = 'https://cq.infowell.cn/image/intelligent-assistant.png'
    //开发环境
	const DEV_SERVER_URL = 'http://192.168.10.47:81'
    //生产环境
    const PROD_SERVER_URL = 'https://cq.infowell.cn'
    //语音助手ws
	const WS_SERVER_URL = 'ws://127.0.0.1:7789/ws'
    //登录窗口
    let loginMainDom = ''
    //业务窗口
    let serviceMainDom = ''
    //外呼窗口
    let callMainDom = ''
    //话务员
    let userNameDom = ''
   //通话状态:无效 通话 整理
    let callStatusDom = ''
   //客户号码
    let consumerPhoneDom = ''
   //产品名
    let produceNameDom = ''
     //iframe原始高度
		 let iframeOriginHeight = 220
		 //iframe完整高度
		 let iframeFullHeight = 825
    //iframe原始宽度
     let iframeOriginWidth = 230
    //iframe完整宽度
     let iframeFullWidth = 1100
	let openFlag = 1
	let socket = null
	let pre_status = ''
	let cur_status = ''
	let pre_phone = ''
	let cur_phone = ''
	let Phone = ''
	let ProductName = ''
	let StatusChangeMsg = {}
	let InitParameterMsg = {
		EventId: "InitParameter",
		Data: {
			ProjectId: 16,
			ProjectName: '5G升级包外呼营销',
			AgentName: ''
		}
	}
	//加载在线样式
	const css1 = GM_getResourceText("customCSS1");
	GM_addStyle(css1)
	//构造文档
	function createHTML() {
        //.center 生产环境
        //.appContent 开发环境
		let logo = document.querySelector('.center')
		let example = document.createElement("div")
		example.classList.add("div-box")
		example.innerHTML = `
     <div id="draggable" class="table-member-container">
    </div>`
        console.log('logo=====>>>>>>>>>>.',logo)
		logo ? logo.appendChild(example) : ''
	}
	//渲染样式
	function addStyle() {
		let css = `
           .table-member-container {
            position: fixed;
            z-index: 99999999;
            bottom: 0;
            right: 0;
	        display: inline-block;
            width:auto;
            height:625px;
        }
           .iframe{
            border:none;
        }`
		GM_addStyle(css)
	}
	//发送消息
	function sendMessage(msg) {
		console.log('正在向websocket发送消息,消息如下:')
		console.log(msg)
		socket.send(msg);
	}
	//连接webocket
	function openSocket() {
		const socketUrl = WS_SERVER_URL;
		console.log(socketUrl);
		if (socket != null) {
			socket.close();
			socket = null;
		}
		socket = new WebSocket(socketUrl);
		console.log('socket对象:');
		console.log(socket);
		//打开事件
		socket.onopen = function () {
			console.log("websocket已打开");
		};
		//获得消息事件
		socket.onmessage = function (msg) {
			// alert("收到消息:" + msg.data);
			console.log(msg.data);
			//发现消息进入,开始处理前端触发逻辑
		};
		//关闭事件
		socket.onclose = function () {
			console.log("websocket已关闭");
		};
		//发生了错误事件
		socket.onerror = function () {
			console.log("websocket发生了错误");
		}
	}
	//文档加载完毕后执行
	$(document).ready(function () {
		console.log('文档已加载完毕,坐席脚本正在启动...')
		createHTML()
		addStyle()
		openSocket()
		$("#draggable").draggable();
		setInterval(() => {
             //登录窗口
            loginMainDom = document.querySelector('.loginbox')
            //业务窗口
            serviceMainDom = document.querySelector('#containerCenter')
            //话务员
            userNameDom = document.querySelector('#empName')
            //通话状态:无效 通话 整理
            callStatusDom = document.querySelector('.text') //#status
            //客户号码
            consumerPhoneDom = document.querySelector('#callee')
            //产品名
            produceNameDom = document.querySelector('#taskTitile')
            if(loginMainDom){
                $('.iframe') ?  $('.iframe').hide() : ''
            }
            if(serviceMainDom){
                $('.iframe') ? $('.iframe').show() : ''
            }
			// 通话状态:无效 通话 整理
			if (callStatusDom) {
				cur_status = callStatusDom.innerHTML == '通话' ? '通话中' : callStatusDom.innerHTML
			}
			// 号码
			if (consumerPhoneDom && consumerPhoneDom.innerHTML) {
				Phone = consumerPhoneDom.innerHTML
				cur_phone = consumerPhoneDom.innerHTML
			}
			if (userNameDom && userNameDom.innerHTML) {
                InitParameterMsg.Data.AgentName = userNameDom.innerHTML
			}
			if (produceNameDom && produceNameDom.innerHTML) {
				ProductName = produceNameDom.innerHTML
			}
            // 初始化信息
            //sendMessage(JSON.stringify(InitParameterMsg))
			if (cur_phone != pre_phone && cur_status == '通话中') {
				pre_phone = cur_phone
				pre_status = cur_status
				//如果ws断开,则重连并发送消息
				if (socket.readyState == 3) {
					console.log('socket已断开...')
					openSocket()
					console.log('socket已断开重连...')
					//数据初始化
					sendMessage(JSON.stringify(InitParameterMsg))
					StatusChangeMsg = {
						EventId: "StateChange",
						Data: {
							PreState: pre_status,
							NowState: cur_status,
							Phone: Phone,
							ProductName: ProductName
						}
					}
					sendMessage(JSON.stringify(StatusChangeMsg))
				}
				//否则发送消息
				else {
					console.log('socket已连接...')
					sendMessage(JSON.stringify(InitParameterMsg))
					StatusChangeMsg = {
						EventId: "StateChange",
						Data: {
							PreState: pre_status,
							NowState: cur_status,
							Phone: Phone,
							ProductName: ProductName
						}
					}
					sendMessage(JSON.stringify(StatusChangeMsg))
				}
			}
			// 只允许在状态改变的时候发消息
			if (cur_status != pre_status && cur_status != '通话中') {
				//把当前号码赋值给上一通号码,当当前号码与上一通号码不一样时再发送消息
				pre_phone = cur_phone
				pre_status = cur_status
				//如果ws断开,则重连并发送消息
				if (socket.readyState == 3) {
					console.log('socket已断开...')
					openSocket()
					console.log('socket已断开重连...')
					//数据初始化
					sendMessage(JSON.stringify(InitParameterMsg))
					StatusChangeMsg = {
						EventId: "StateChange",
						Data: {
							PreState: pre_status,
							NowState: cur_status,
							Phone: Phone,
							ProductName: ProductName
						}
					}
					sendMessage(JSON.stringify(StatusChangeMsg))
				}
				//否则发送消息
				else {
					console.log('socket已连接...')
					sendMessage(JSON.stringify(InitParameterMsg))
					StatusChangeMsg = {
						EventId: "StateChange",
						Data: {
							PreState: pre_status,
							NowState: cur_status,
							Phone: Phone,
							ProductName: ProductName
						}
					}
					sendMessage(JSON.stringify(StatusChangeMsg))
				}
			}
		}, 200)
		// 异步加载iframe,连接上websocket并接受消息
		setTimeout(() => {
			let scriptContent = document.querySelector(".table-member-container")
			let iframeElement = document.createElement("iframe")
			iframeElement.src = PROD_SERVER_URL
            iframeElement.classList.add('iframe')
			iframeElement.width = `${iframeOriginWidth}px`//1100px
			iframeElement.height = '625px'
			iframeElement.frameborder = '0'
			iframeElement.scrolling = 'no'
			iframeElement.marginheight = '4'
			iframeElement.marginwidth = '8'
			scriptContent ? scriptContent.appendChild(iframeElement) : ''
		}, 500)
		$(document).tooltip()
        //监听iframe页面的消息
        window.addEventListener('message', function(event) {
            console.log('监听event:', event);
            // 确保消息来自指定的iframe
            if (event.origin == PROD_SERVER_URL) {
                //1放大 2缩小
                event.data == '1' ? $('.iframe').attr('width',iframeFullWidth) : $('.iframe').attr('width',iframeOriginWidth)
            }
});
	});
})();