• 聊天机器人(Ajax实现聊天机器人接口的调用)


    文章目录
    前言
    一、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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    二、用户内容渲染到聊天窗口

    为发送按钮绑定点击事件,当点击后,用户消息渲染到聊天框中,也就是在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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    三、获取聊天机器人消息

    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)
                    
                    }
                }
        })
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    四、将机器人的聊天内容转化为语音播放

    将机器人回复的消息传参到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地址
                    }
                }
        })
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    五、使用回车发送消息

    添加回车键发送消息,提高便捷性。通过对输入框绑定keyup事件,当按键的编码为13,调用发送按钮的click函数。

    // 为文本框响应回车事件后,提交消息
        $('#ipt').on('keyup', function (e) {
            // e.keyCode可以获取当前按钮的编码
        // console.log(e.keyCode);
            if (e.keyCode === 13) {
                // 调用按钮元素的click函数,可以通过编程的形式触发按钮的点击事件
                $('#btnSend').click()
            }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    总结

    本文介绍了如何使用ajax调用聊天机器人接口,实现聊天交互效果,并将聊天机器人的消息语音播放出来。
    聊天机器人url: ‘http://www.liulongbin.top:3006/api/robot’
    聊天机器人语音url: ‘http://www.liulongbin.top:3006/api/synthesize’,服务器接口有时候不起作用注意

  • 相关阅读:
    计算机网络:运输层 - TCP 流量控制 & 拥塞控制
    Redis类型(Type)与编码(Encoding)
    二叉树(Java版)
    Java IO流(详解)
    esp32 nvs set_blob
    快速上手kettle(三)壶中可以放些啥?
    mysql根据.frm和.ibd文件恢复数据表
    第三方在线地图源有哪些?
    【Proteus仿真】L297驱动步进电机
    C语言基础语法复习06-c语言关键字
  • 原文地址:https://blog.csdn.net/weixin_52065872/article/details/125432536