赞
踩
文章目录
前言
一、UI布局
二、用户内容渲染到聊天窗口
三、获取聊天机器人消息
1.jquery中的ajax
2.调用机器人接口
四、将机器人的聊天内容转化为语音播放
五、使用回车发送消息
总结
————————————————————————————————————————————————
前言
本文介绍如何用ajax调用聊天机器人接口,将信息显示到聊天框中,语音播放机器人消息。
聊天框分为头部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’,服务器接口有时候不起作用注意
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。