搜索

模拟智能在线客服系统

原创 2019-03-17 19:54:22 918
摘要:基本思路:1.首先设置点击事件,通过if条件判断语句判断文本框内是否输入文本,未输入文字时会有弹窗提示。if (text.value.length === 0) {     alert('您好,请输入内容哦~');     return false; &

基本思路:

1.首先设置点击事件,通过if条件判断语句判断文本框内是否输入文本,未输入文字时会有弹窗提示。

if (text.value.length === 0) {
    alert('您好,请输入内容哦~');
    return false;
    }

2.将文本框储存在变量中,创建一个新的li标签,以显示输入文本的内容,将此内容和用户头像连接起来,使其显示与一行内。

let userComment = text.value;
    let li = document.createElement('li');
    li.innerHTML = userComment;  
    let userPic = '<img src="inc/boy.jpeg" width="30" style="border-radius:50%">'; 
    li.innerHTML = userPic + ' ' + userComment; 
    list.appendChild(li);
    sum += 1;

3.创立客服在线回复的部分,首先创立一个数组,内容是客服回答的一些语句,将其存放在变量中,通过创立随机数的方式在此数组随机获得相关的语句。将随机获得的一段字符串语句存放于相应的变量之中,使其能和一个有客服头像的语句存在于一行,作为客服的智能回复。

setTimeout(function(){
let info = [
    '请问您还想了解什么吗?我们很乐意为您提供!',
    '请不要着急,我已安排了,很快就给您办好。',
    '请稍等,我查一下再答复您。',
    '对不起,我们一定会努力改进的!',
    '您好,请问还有什么需求吗?',
    '对不起,我再帮您想别的办法。',
        '这是我们应该做的!'
];
let temp = info[Math.floor(Math.random()*6+1)];
let reply = document.createElement('li');
let kefuPic = '<img src="inc/gyy.jpg" width="30" style="border-radius:50%;">';
reply.innerHTML = kefuPic + ' ' + '<span style="color:red">'+temp+'</span>';
list.appendChild(reply);
sum += 1;
},500);

将客服回答的部分放于一个计数器函数中,让客服在每0.5秒后能智能回复。将自己每次输入的内容和客服回答的内容看成一次回答,完成后添加到计数器中,通过if条件判断语句判断,如果计数器大于10,则自动刷新页面。

if (sum > 10) {
	list.innerHTML = '';
	sum = 0;
}

注意事项:

  1. 在数组中获得相关的字符部分时,这部分可以在后期学习了数据库后再在数据库中调取相关数据;

  2. 获取随机数时,通过使用Math.floor(Math.random()*(B-A)+A)的方法可以获取A到B之间的随机数;

  3. 在敲代码时需要特别细心,像一个‘.’没打这样的问题可能就会使整个功能无法实现。

完整代码:

<!DOCTYPE html>
<html>
<head>
	<title>模拟智能在线客服系统</title>
	<meta charset="utf-8">
	<style type="text/css">
		*{margin: 0px;padding: 0px}
		div:nth-child(1) {
			width: 450px;
			height: 650px;
			background-color: #acf;
			margin: 30px auto;
			color: #333
			box-shadow: 2px 2px 2px #808080;
		}

		h2{
			text-align: center;
			margin-bottom: -10px;
			font-weight: 400;
			font-family: 华文琥珀;
		}

		div:nth-child(2) {
			width: 400px;
			height: 500px;
			border: 5px double #ff6700;
			background-color: #efefef;
			margin: 20px auto 10px;
		}

		ul {
			list-style: none;
			line-height: 2em;
			overflow: hidden;
			padding: 15px;
		}

		table {
			width: 90%;
			height: 80px;
			margin: auto;
		}

		textarea {
			border: none;
			resize: none;
			background-color: lightyellow;
		}

		button {
			width: 60px;
			height: 40px;
			background-color: #F1AD7C;
			color: #000;
			border: none;
			font-family: 幼圆;
			font-weight: bold;
		}

		button:hover {
			cursor: pointer;
			background-color: ;
			color: #fff;
		}
	</style>
</head>
<body>
	<div>
		<h2>在线客服</h2>
		<div contenteditable="true">
			<ul>
				<li></li>
			</ul>
		</div>
		<table>
			<tr>
				<td align="right"><textarea cols="50" rows="4" name="text"></textarea></td>
				<td align="left"><button type="button">发送</button></td>
			</tr>
		</table>
	</div>

	<script type="text/javascript">
		let btn = document.getElementsByTagName('button')[0];
		let text = document.getElementsByName('text')[0];
		let list = document.getElementsByTagName('ul')[0];
		let sum = 0;

		btn.onclick = function () {
			if (text.value.length === 0) {
				alert('您好,请输入内容哦~');
				return false;
			}
			let userComment = text.value;

			text.value = '';

			let li = document.createElement('li');
			li.innerHTML = userComment;  
			let userPic = '<img src="inc/boy.jpeg" width="30" style="border-radius:50%">'; 
			li.innerHTML = userPic + ' ' + userComment; 
			list.appendChild(li);
			sum += 1;

			setTimeout(function(){
			let info = [
			    '请问您还想了解什么吗?我们很乐意为您提供!',
				'请不要着急,我已安排了,很快就给您办好。',
				'请稍等,我查一下再答复您。',
				'对不起,我们一定会努力改进的!',
				'您好,请问还有什么需求吗?',
				'对不起,我再帮您想别的办法。',
				'这是我们应该做的!'

			];
			let temp = info[Math.floor(Math.random()*6+1)];
			let reply = document.createElement('li');
			let kefuPic = '<img src="inc/gyy.jpg" width="30" style="border-radius:50%;">';
			reply.innerHTML = kefuPic + ' ' + '<span style="color:red">'+temp+'</span>';
			list.appendChild(reply);
			sum += 1;
			},500);
			
			if (sum > 10) {
				list.innerHTML = '';
				sum = 0;
			}
		}
	</script>
	
</body>
</html>


批改老师:查无此人批改时间:2019-03-18 09:47:59
老师总结:完成的不错,思路很清晰。 数据之后可以用php请求数据库,有更多的语句进行自动回复。

发布手记

热门词条