文章目录
前言
一、UI布局
二、用户内容渲染到聊天窗口
三、获取聊天机器人消息
1.jquery中的ajax
2.调用机器人接口
四、将机器人的聊天内容转化为语音播放
五、使用回车发送消息
总结
————————————————————————————————————————————————
前言
本文介绍如何用ajax调用聊天机器人接口,将信息显示到聊天框中,语音播放机器人消息。

一、UI布局
聊天框分为头部Header、中间聊天区域、底部Footer消息编辑三大部分。在聊天区域,每条信息都放到每个li中,机器人消息左浮动,用户消息右浮动。
在这里插入图片描述
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/main.css" />
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.js"></script>
<title>聊天机器人</title>
</head>
<body>
<div class="wrap">
<!-- 头部 Header 区域 -->
<div class="header">
<h3>憨憨宝贝</h3>
<img src="img/person01.png" alt="icon" />
</div>
<!-- 中间 聊天内容区域 -->
<div class="main">
<ul class="talk_list" style="top: 0px;" id="talk_list">
<li class="left_word">
<img src="img/person01.png" /> <span>嗨,最近想我了没?</span>
</li>
<!-- <li class="right_word">
<img src="img/person02.png" /> <span>你好哦</span>
</li> -->
</ul>
<div class="drag_bar" style="display: none;">
<div class="drager ui-draggable ui-draggable-handle" style="display: none; height: 412.628px;"></div>
</div>
</div>
<!-- 底部 消息编辑区域 -->
<div class="footer">
<img src="img/person02.png" alt="icon" />
<input type="text" placeholder="说的什么吧..." class="input_txt" id="ipt" />
<input type="button" value="发 送" class="input_sub" id="btnSend" />
</div>
</div>
<!-- 注意:只要为audio指定了新的src属性,而且指定了autoplay,那么语音会自动播放 -->
<audio src="" id="voice" autoplay style="display: none;"></audio>
<script type="text/javascript" src="js/scroll.js"></script>
<script src="./js/chat.js"></script>
</body>
</html>
二、用户内容渲染到聊天窗口
为发送按钮绑定点击事件,当点击后,用户消息渲染到聊天框中,也就是在ul中添加一个li标签。
$(function () {
// 初始化右侧滚动条
// 这个方法定义在scroll.js中
resetui()
// 为发送按钮绑定鼠标点击事件
$('#btnSend').on('click', function () {
// 获取输入内容
var text = $('#ipt').val().trim()
if (text.length <= 0) {
return $('#ipt').val('')
}
// 如果用户输入聊天内容,则追加到页面显示
$('#talk_list').append('<li class="right_word"><img src="img/person02.png" /> <span>' + text + '</span></li>')
$('#ipt').val('')
// 重置滚动条的位置
resetui()
// 发起请求获取聊天内容
getMsg(text)
})
三、获取聊天机器人消息
1.jquery中的ajax
在调用聊天机器人接口前,先介绍一下$.ajax()。
$.ajax()是jquery对XMLHttpRequest对象的封装函数,它可以实现请求服务器上的数据资源。语法如下:
$.ajax({
method:’ ‘,//请求方式
url:’ ',//接口url地址
data:{…},//要传输给服务器的数据
success:function(res){…}// 请求成功时的回调函数
})
2.调用机器人接口
// 获取聊天机器人发送回来的信息
function getMsg(text) {
$.ajax({
method: 'GET',
url: 'http://www.liulongbin.top:3006/api/robot',
data: {
spoken:text
},
success: function (res) {
console.log(res);
if (res.message === 'success') {
// 接受聊天信息
var msg = res.data.info.text
$('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>' + msg + '</span></li>')
// 重置滚动条的位置
resetui()
// 调用getVoice函数,把文本转化为语音
getVoice(msg)
}
}
})
}
四、将机器人的聊天内容转化为语音播放
将机器人回复的消息传参到getVoice()函数,调用语音播放接口,获得一个voiceUrl音频链接。将链接赋值给audio标签的src属性,即可实现语音的播放。
// 把文字转化为语言进行播放
function getVoice(text) {
$.ajax({
method: 'GET',
url: 'http://www.liulongbin.top:3006/api/synthesize',
data: {
text:text
},
success: function (res) {
// console.log(res);
if (res.status === 200) {
// 播放语音
$('#voice').attr('src', res.voicUrl);//voicUrl是服务器返回音频的URL地址
}
}
})
}
五、使用回车发送消息
添加回车键发送消息,提高便捷性。通过对输入框绑定keyup事件,当按键的编码为13,调用发送按钮的click函数。
// 为文本框响应回车事件后,提交消息
$('#ipt').on('keyup', function (e) {
// e.keyCode可以获取当前按钮的编码
// console.log(e.keyCode);
if (e.keyCode === 13) {
// 调用按钮元素的click函数,可以通过编程的形式触发按钮的点击事件
$('#btnSend').click()
}
})
总结
本文介绍了如何使用ajax调用聊天机器人接口,实现聊天交互效果,并将聊天机器人的消息语音播放出来。
聊天机器人url: ‘http://www.liulongbin.top:3006/api/robot’
聊天机器人语音url: ‘http://www.liulongbin.top:3006/api/synthesize’,服务器接口有时候不起作用注意
204

被折叠的 条评论
为什么被折叠?



