聊天机器人(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>

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

为发送按钮绑定点击事件,当点击后,用户消息渲染到聊天框中,也就是在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’,服务器接口有时候不起作用注意

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值