当前位置:   article > 正文

Ajax--初识Ajax--案例 - 聊天机器人(黑马俩个新接口)_黑马ajax接口

黑马ajax接口

演示案例要完成的效果

实现步骤:

梳理案例的代码结构

将用户输入的内容渲染到聊天窗口

发起请求获取聊天消息

将机器人的聊天内容转为语音

通过 <audio> 播放语音

使用回车键发送消息

梳理案例的代码结构

梳理页面的 UI 布局

将业务代码抽离到 chat.js

了解 resetui() 函数的作用

resetui()的作用是输入文字,会返回页面底部

将用户输入的内容渲染到聊天窗口

  1. // 为发送按钮绑定点击事件处理函数
  2. $('#btnSend').on('click'function () {
  3.     var text = $('#ipt').val().trim() // 获取用户输入的内容
  4.     if (text.length <= 0) { // 判断用户输入的内容是否为空
  5.        return $('#ipt').val('')
  6.     }
  7.     // 将用户输入的内容显示到聊天窗口中
  8.     $('#talk_list').append('<li class="right_word"><img src="img/person02.png" /> <span>' + text + '</span></li>')
  9.     resetui() // 重置滚动条的位置
  10.     $(‘#ipt’).val('') // 清空输入框的内容
  11. // TODO: 发起请求,获取聊天消息
  12. })

  发起请求获取聊天消息

  1. function getMsg(text) {
  2.     $.ajax({
  3.       method'GET',
  4.       url: 'http://ajax.frontend.itheima.net:3006/api/robot',
  5.       data: {
  6.         spoken: text
  7.       },
  8.       success: function (res) {
  9.         if (res.message === 'success') {
  10.            var msg = res.data.info.text
  11.            $('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>' + msg + '</span></li>')
  12.            resetui()
  13.            // TODO: 发起请求,将机器人的聊天消息转为语音格式
  14.         }
  15.       }
  16.     })
  17. }

 这里注意的是接口换成新的了

 http://www.liulongbin.top:3006/api/robot

  1. function getMsg(text){
  2. $.ajax({
  3. method: "get",
  4. url: "http://www.liulongbin.top:3006/api/robot",
  5. data: {
  6. spoken:text
  7. },
  8. success: function (res) {
  9. console.log(res);
  10. if(res.message==='success'){
  11. var msg=res.data.info.text;
  12. // 接收回来的聊天消息
  13. $('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>'+msg+'</span></span></li>')
  14. resetui()
  15. }
  16. }
  17. });
  18. }

将机器人的聊天内容转为语音

  1.   function getVoice(text) {
  2.     $.ajax({
  3.       method'GET',
  4.       url: 'http://ajax.frontend.itheima.net:3006/api/synthesize',
  5.       data: {
  6.         text: text
  7.       },
  8.       success: function (res) {
  9. // 如果请求成功,则 res.voiceUrl 是服务器返回的音频 URL 地址
  10.         if (res.status === 200) {
  11.            $('#voice').attr('src', res.voiceUrl)
  12.         }
  13.       }
  14.     })
  15.   }

通过 <audio> 播放语音

  1. <!-- 音频播放语音内容 -->
  2. <audio src="" id="voice" autoplay style="display: none;"></audio>

这里注意的是也要用新接口

 http://www.liulongbin.top:3006/api/synthesize

  1. function getVoice(text){
  2. $.ajax({
  3. type:"get",
  4. url:'http://www.liulongbin.top:3006/api/synthesize',
  5. data:{
  6. text:text
  7. },
  8. success:function(res){
  9. console.log(res);
  10. if(res.status===200){
  11. // 播放语音
  12. $("#voics").attr('src',res.voiceUrl)
  13. }
  14. // console.log(res);
  15. }
  16. })
  17. }

 使用回车键发送消息

  1. $('#ipt').on('keyup',function(e){
  2. console.log(e.keyCode);
  3. if(e.keyCode==13){
  4. // 调用按钮的click函数,可以通过编程的方式触发按钮的点击事件
  5. $("#btnSend").click()
  6. }
  7. })
  8. })

这里又要注意keyCode的C是大写

完整代码

  1. $(function(){
  2. // 初始化右侧滚动条
  3. // 这个方法定义在scroll.js中
  4. resetui()
  5. // 为发送按钮绑定鼠标点击事件
  6. $("#btnSend").on('click',function(){
  7. var text=$("#ipt").val().trim()
  8. if(text.length<=0){
  9. return $("#ipt").val("")
  10. }
  11. // 如果用户输入的聊天内容,则将聊天内容追加到页面显示
  12. $('#talk_list').append('<li class="right_word"><img src="img/person02.png" /> <span>'+text+'</span></li>')
  13. $("#ipt").val("")
  14. // 重叠滚动条
  15. resetui()
  16. // 发起请求,获取聊天内容
  17. getMsg(text)
  18. })
  19. // 获取聊天机器人发送回来的信息
  20. function getMsg(text){
  21. $.ajax({
  22. type: "get",
  23. url: "http://www.liulongbin.top:3006/api/robot",
  24. data: {
  25. spoken:text
  26. },
  27. success: function (res) {
  28. // console.log(res);
  29. if(res.message==='success'){
  30. var msg=res.data.info.text;
  31. // 接收回来的聊天消息
  32. $('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>'+msg+'</span></span></li>')
  33. resetui()
  34. // 调用getVoice()函数,把语音转换为文本
  35. getVoice(msg)
  36. }
  37. }
  38. });
  39. }
  40. // 把文字转换为语音
  41. function getVoice(text){
  42. $.ajax({
  43. type:"get",
  44. url:'http://www.liulongbin.top:3006/api/synthesize',
  45. data:{
  46. text:text
  47. },
  48. success:function(res){
  49. console.log(res);
  50. if(res.status===200){
  51. // 播放语音
  52. $("#voics").attr('src',res.voiceUrl)
  53. }
  54. // console.log(res);
  55. }
  56. })
  57. }
  58. // 让文本输入框响应回车事件后,提交消息
  59. $('#ipt').on('keyup',function(e){
  60. console.log(e.keyCode);
  61. if(e.keyCode==13){
  62. // 调用按钮的click函数,可以通过编程的方式触发按钮的点击事件
  63. $("#btnSend").click()
  64. }
  65. })
  66. })
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <link rel="stylesheet" href="css/reset.css" />
  8. <link rel="stylesheet" href="css/main.css" />
  9. <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
  10. <script type="text/javascript" src="js/jquery-ui.min.js"></script>
  11. <script type="text/javascript" src="js/jquery.mousewheel.js"></script>
  12. <title>聊天机器人</title>
  13. </head>
  14. <body>
  15. <div class="wrap">
  16. <!-- 头部 Header 区域 -->
  17. <div class="header">
  18. <h3>小思同学</h3>
  19. <img src="img/person01.png" alt="icon" />
  20. </div>
  21. <!-- 中间 聊天内容区域 -->
  22. <div class="main">
  23. <ul class="talk_list" style="top: 0px;" id="talk_list">
  24. <li class="left_word">
  25. <img src="img/person01.png" /> <span>嗨,你最新有想我吗</span>
  26. </li>
  27. </ul>
  28. <div class="drag_bar" style="display: none;">
  29. <div
  30. class="drager ui-draggable ui-draggable-handle"
  31. style="display: none; height: 412.628px;"
  32. ></div>
  33. </div>
  34. </div>
  35. <!-- 底部 消息编辑区域 -->
  36. <div class="footer">
  37. <img src="img/person02.png" alt="icon" />
  38. <input type="text" placeholder="说的什么吧..." class="input_txt" id="ipt" />
  39. <input type="button" value="发 送" class="input_sub" id="btnSend"/>
  40. </div>
  41. </div>
  42. <!-- 注意 只要为audio指定了新的src属性 而且绑定了 autoplay style="display: none;" 语音会自动播放 并且隐藏起来 -->
  43. <audio src="" id="voics" autoplay style="display: none;"></audio>
  44. <script type="text/javascript" src="js/scroll.js"></script>
  45. <script src="js/chart.js"></script>
  46. </body>
  47. </html>

效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/100678
推荐阅读
相关标签
  

闽ICP备14008679号