当前位置:   article > 正文

聊天机器人(Ajax实现聊天机器人接口的调用)_php+ajax+jquery聊天机器人

php+ajax+jquery聊天机器人

文章目录
前言
一、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’,服务器接口有时候不起作用注意

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

闽ICP备14008679号