热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax(二,案例聊天机器人)

案例–聊天机器人1演示案例要完成的效果实现步骤:①梳理案例的代码结构②将用户输入的内容渲染到聊天窗口③发起请求获取聊天消息④将机器人的聊天内容转为语音⑤通过播放语音

案例 – 聊天机器人


1 演示案例要完成的效果

在这里插入图片描述

实现步骤:

① 梳理案例的代码结构
② 将用户输入的内容渲染到聊天窗口
③ 发起请求获取聊天消息
④ 将机器人的聊天内容转为语音
⑤ 通过 播放语音
⑥ 使用回车键发送消息


2 梳理案例的代码结构


① 梳理页面的 UI 布局
② 将业务代码抽离到 chat.js 中
③ 了解 resetui() 函数的作用


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

// 为发送按钮绑定点击事件处理函数
$('#btnSend').on('click', function () {
var text = $('#ipt').val().trim() // 获取用户输入的内容
if (text.length <&#61; 0) { // 判断用户输入的内容是否为空
return $(&#39;#ipt&#39;).val(&#39;&#39;)
}
// 将用户输入的内容显示到聊天窗口中
$(&#39;#talk_list&#39;).append(&#39;<li class&#61;"right_word">
&#39; &#43; text &#43; &#39;</li>&#39;)
resetui() // 重置滚动条的位置
$(‘#ipt’).val(&#39;&#39;) // 清空输入框的内容
// TODO: 发起请求&#xff0c;获取聊天消息
})

4 发起请求获取聊天消息

function getMsg(text) {
$.ajax({
method: &#39;GET&#39;,
url: &#39;http://ajax.frontend.itheima.net:3006/api/robot&#39;,
data: {
spoken: text
},
success: function (res) {
if (res.message &#61;&#61;&#61; &#39;success&#39;) {
var msg &#61; res.data.info.text
$(&#39;#talk_list&#39;).append(&#39;<li class&#61;"left_word">
&#39; &#43; msg &#43; &#39;</li>&#39;)
resetui()
// TODO: 发起请求&#xff0c;将机器人的聊天消息转为语音格式
}
}
})
}

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

function getVoice(text) {
$.ajax({
method: &#39;GET&#39;,
url: &#39;http://ajax.frontend.itheima.net:3006/api/synthesize&#39;,
data: {
text: text
},
success: function (res) {
// 如果请求成功&#xff0c;则 res.voiceUrl 是服务器返回的音频 URL 地址
if (res.status &#61;&#61;&#61; 200) {
$(&#39;#voice&#39;).attr(&#39;src&#39;, res.voiceUrl)
}
}
})
}

6 通过 播放语音


7 使用回车发送消息

// 让文本输入框响应回车事件后&#xff0c;提交消息
$(&#39;#ipt&#39;).on(&#39;keyup&#39;, function (e) {
// e.keyCode 可以获取到当前按键的编码
if (e.keyCode &#61;&#61;&#61; 13) {
// 调用按钮元素的 click 函数&#xff0c;可以通过编程的形式触发按钮的点击事件
$(&#39;#btnSend&#39;).click()
}
})


推荐阅读
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 本文将介绍如何利用Python爬虫技术抓取国内主流在线学习平台的数据,并以51CTO学院为例,进行详细的技术解析和实践操作。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
author-avatar
mobiledu2502912907
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有