手把手创建一个聊天机器人(代码片段)

author author     2022-11-23     638

关键词:

今天来写一个属于自己的聊天机器人。

思路:当用户点击发送后,需要根据用户输入的内容,提交到服务器,然后由服务器根据你输入的内容,返回对应的结果,我们拿到结果展示到界面上当做机器人的回答即可。

这里使用的接口是图灵机器人,网址:http://www.tuling123.com

1. 搭建界面

界面主要是一个div,div里是一个ul,ul就是聊天面板,每条消息(不管是机器人的还是用户的)都是一个li标签。

CSS和HTML代码如下:

 1 <div class="chatBox">
 2 
 3      <!-- 聊天记录区域 -->
 4      <ul class="container">
 5          <li class="robot">
 6                  <span class="chat-icon"></span>
 7                  <p class="text">我是您的机器人,快来聊天吧!</p>
 8          </li>
 9 
10 
11          <!-- <li class="user">
12              <p>你好!</p>
13          </li> -->
14      </ul>
15 
16 
17      <!-- 输入文字区域 -->
18      <div class="sendBox">
19          <input type="text" id="msg">
20          <a href="javascript:;" id="send">发送</a>
21      </div>
22 
23  </div>
  1      .chatBox
  2              position: relative;
  3          width: 346px;
  4          height: 618px;
  5          margin: 50px auto;
  6          background: url(img/phoneBg.png) no-repeat;
  7      
  8 
  9 
 10      .container
 11              position: absolute;
 12          width: 316px;
 13          height: 430px;
 14          padding: 0;
 15          top: 55px;
 16          left: 15px;
 17          list-style: none;
 18          overflow: auto;
 19          /*display: none;*/
 20      
 21         .container::-webkit-scrollbar 
 22            display: none;
 23         
 24 
 25      .sendBox
 26              /*display: none;*/
 27              position: absolute;
 28              top: 508px;
 29              left: 14px;
 30          width: 318px;
 31          text-align: center;
 32          padding: 5px 0;
 33          background-color: #eeeeeeb5;
 34          border-top: 1px solid #ccc;
 35      
 36 
 37 
 38      .robot
 39          margin-top: 15px;
 40          text-align: left;
 41      
 42 
 43 
 44      .chat-icon,.user-icon
 45          width: 40px;
 46          height: 40px;
 47          display:inline-block;
 48          border-radius: 20px;
 49      
 50 
 51 
 52      .robot .text
 53          border-radius: 8px;
 54          background-color: #f4f7f9;
 55          margin-left: 10px;
 56          max-width: 210px;
 57          line-height: 20px;
 58          word-break: break-all;
 59          word-wrap: break-word;
 60          display: inline-block;
 61          padding: 5px 0px 5px 5px;
 62      
 63 
 64 
 65      .chat-icon
 66          background: url(\'./img/haha.jpg\') 0% 0% / 100% 100% no-repeat;
 67      
 68 
 69      .user-icon
 70          background: url(\'./img/hehe.jpg\') 0% 0%/100% 100% no-repeat;
 71      
 72      .user
 73          margin-top: 15px;
 74          text-align: right;
 75      
 76      .user p
 77          border-radius: 8px;
 78          background-color: #f4f7f9;
 79          margin-right: 10px;
 80          max-width: 210px;
 81          line-height: 20px;
 82          word-break: break-all;
 83          word-wrap: break-word;
 84          display: inline-block;
 85          padding: 5px;
 86          background-color:yellowgreen; 
 87      
 88      #msg
 89          width: 220px;
 90          height: 25px;
 91          border-radius: 5px;
 92          outline: none;
 93          border: 1px solid #ccc;
 94          padding-left: 5px;
 95      
 96      #send
 97              display: inline-block;
 98              text-decoration: none;
 99          width: 60px;
100          height: 28px;
101          line-height: 26px;
102          background-color: yellowgreen;
103          color: #fff;
104          font-size: 14px;
105          border-radius: 5px;
106          outline: none;
107      

2. 准备机器人

2.1 注册账号

进入http://www.tuling123.com/,点击界面右上方注册

 

进入注册页面填写相关信息注册

2.2 创建机器人

登录后,会看到如下界面,点击创建机器人

 

 

然后按下图填写

 

点创建后,会在机器人管理里看到下图

 

2.3 设置机器人

我们可以对机器人继续一些个性化设置,机器人管理界面点设置

我们可以看到终端设置下有个 apikey ,这个key在写代码时要复制好,因为我们如果要用机器人功能,必须用这个key

 

然后点人物设置可以给机器人做一些个性设置

3. 实现代码

找到聊天面板(为了后面给它加聊天记录),以及给发送按钮添加点击事件

1 //找到聊天面板
2 var container=document.getElementsByClassName(\'container\')[0];
3 //找到发送按钮
4 var send=document.getElementById(\'send\');
5 //给发送按钮添加点击事件
6 send.onclick=function()

3.1 把用户输入的内容显示到界面上

在上面的点击事件里面,取到用户输入的内容,并把它当聊天内容展示到界面上,代码如下

// 1. 找到输入的文本框
 var msgTxt = document.getElementById(\'msg\');
 // 2. 获取文本框中的内容
 var userMsg = msgTxt.value;
 // 3. 清空文本框内容
 msgTxt.value = "";
 // 4. 创建自己的li标签
 var myLi = document.createElement(\'li\');
 // 5. 设置类名
 myLi.className = "user";
 // 6. 设置内容
 myLi.innerHTML = "<p>"+ userMsg +"</p>";

 // 7. 把自己这部分聊天加到面板
 container.appendChild(myLi);

到此,实现了用户输入什么,界面就显示什么

3.2 根据用户输入内容发请求到服务器,拿到机器人回答

核心步骤:

  • 创建异步请求对象(xhr)

  • 设置请求行(请求到接口地址,用post请求)

  • 设置请求头(POST请求要设置)

  • 发送请求主体(请求体里要包含刚刚我们获取的 apikey 以及用户输入的内容)

  • 监听响应完成,拿到服务器返回的内容,显示到界面上

 代码如下:

// 1.创建请求对象
var xhr = new XMLHttpRequest();
// 2.设置请求行(get请求数据写在url后面)
xhr.open(\'POST\',\'http://www.tuling123.com/openapi/api\');
// 3.设置请求头(post请求要加)
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

// 4.请求主体发送 包含apikey和用户发送的聊天内容
xhr.send(\'key=a2b18016f0e44d12abc672c6e1f0c4d6&userid=123&info=\'+userMsg);
//5.监听响应完成
xhr.onload = function()
    
    //5.1 得到返回结果
    var data = JSON.parse(xhr.responseText);
    
    //5.2 创建机器人的聊天框
    var robotLi = document.createElement(\'li\');
    //5.3 设置类
    robotLi.className = "robot";
    //5.4 设置内容
    robotLi.innerHTML = \'<span class="chat-icon"></span><p class="text">\' + data.text + \'</p>\';
    //5.6 添加到页面上
    container.appendChild(robotLi);

3.3 发送内容后自动滚到聊天框最下

此时完成了机器人应答,但是如果内容一多,没有自动滚动到最后,因此,我们需要写代码,让聊天面板滚动到最下,看最新消息,代码如下:

// 计算container内容总高度
var height = 0;
for(var i = 0; i < container.children.length;i++)
    height += container.children[i].offsetHeight + 15;


// 聊天面板滚到最下
container.scrollTop = height;

这样就完成创建了一个自己专属的聊天机器人

效果图如下:

 

完整代码有所改动,已上传至GitHub,有需要下载:https://github.com/KimKangin/robot/tree/master

代码演示:https://kimkangin.github.io/robot

 

手把手教你注册和使用chatgpt(代码片段)

一,何为ChatGPTChatGPT是一个基于GPT-3模型的对话系统,它主要用于处理自然语言对话。通过训练模型来模拟人类的语言行为,ChatGPT可以通过文本交流与用户互动。它可以用于各种场景,包括聊天机器人、智能客服系统等。基于GPT-... 查看详情

使用socket.io搭建一个实时聊天机器人(代码片段)

一、安装socket.ionpmisocket.io--save二、使用第一种:服务端使用原生node//创建http服务器consthttp=require('http')varfs=require('fs')constapp=http.createServer()app.on('request',(req,r 查看详情

我的serverless实战—8行代码手把手教你搭建智能机器人平台(代码片段)

本文正在参与“100%有奖|我的Serverless实战”征稿活动活动链接:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f文章目录1准备工作1.1部分参考链接2基于飞书开放平台创建机器人应用2.1飞书开放平台账号注册2.2创建机器人应用2... 查看详情

python使用图灵机器人实现微信聊天功能(代码片段)

  首先需要去图灵官网创建一个属于自己的机器人然后得到apikey。一、自动与指定好友聊天#-*-coding:utf-8-*-"""Createdat2019-3-2611:50:49"""fromwxpyimportBot,Tuling,embed,ensure_onebot=Bot()my_friend=ensure_one(bot.search(‘张三‘))#想和机器人聊天的好... 查看详情

手把手教你用鸿蒙harmonyos实现微信聊天界面(代码片段)

简介        本系列文章记录作者大三开学第一个月中学习HarmonyOS移动应用开发学习经历,此篇为《微信聊天界面》项目,实现功能有1、聊天信息功能,包括图片、文字2、发送定位功能3、选择发送本机图片功能4... 查看详情

前端笔记二javascript实例(代码片段)

...逻辑三、js代码1.获取输入的消息2.发送输入的消息3.获取机器人的消息4.完成聊天机器人5.最终结果以创建一个自动回复的聊天机器人为例一、界面准备先搭一个界面<header><h2>聊天机器人</h2></header><ulclass=... 查看详情

手把手教你用python几行代码打造人工智能对话机器人,还说说话!(代码片段)

文章目录介绍无脑模块安装第一步交互式对话第二步让机器人说话总结介绍这里介绍一个简单的交互式人工智能机器人对话。之前大家可能看过我的文章,是一款qq机器人(可点击传送机器人专栏)项目介绍,那... 查看详情

手把手教你实现一个微信自动回复机器人

原文链接:https://yq.aliyun.com/articles/682466RebateBot返利机器人项目地址项目描述关键词:返利微信阿里妈妈机器人跨平台返利机器人,基于微信建立机器人通道与用户通过聊天快速生成返利链接利用闲置微信和极小的电脑性能开启24... 查看详情

手把手教你用python和flask创建restapi(代码片段)

本文是​为了在实际工作中,可能存在要求数据挖掘工程师或算法工程师将你的机器学习模型封装,并提供API供其他软件工程师调用。今天我就和大家一起学习如何使用更好的RESTAPI创建FlaskAPI。这个方法是技术群的一个... 查看详情

基于小程序制作一个chatgpt聊天机器人(代码片段)

...将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础。一、前言1.1、什么是ChatGPT1.2、什么是文本完成二、API2.1、ChatGPT官网申请API所需要的key2.2、搭建API2.3、创建控制器及动作方法三、... 查看详情

python黑科技:python大佬用20行代码带你打造一个微信聊天机器人,真神了~(代码片段)

...ython环境2.安装python的itchat库3.安装itchat库4.Linux5.申请图灵机器人API和key6.编写python程序7.执行程序运行8.大致原理简介今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主... 查看详情

基于string的对象创建(代码片段)

假设我正在为聊天写一个机器人(不和,电报,等等)。机器人可以处理聊天命令(例如!join告诉它加入服务器上的语音通道)。所以我的代码中的某个地方我必须解析命令,我会有类似的东西StringuserMessage=getTheMessageTextSomehow()... 查看详情

用go语言实现一个简单的聊天机器人(代码片段)

一、介绍目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识。软件环境:Go1.9,Goland2018.1.5。 二、回顾Go语言基本构成要素:标识符、关键字、字面量、分隔符、操作符。它们可以组成各种表达式... 查看详情

nlp开发python实现聊天机器人(微软azure机器人服务)(代码片段)

1、简介什么是BotFrameworkSDK?MicrosoftBotFramework和Azure机器人服务是库、工具和服务的集合,可用于生成、测试、部署和管理智能机器人。BotFramework包括一个模块化且可扩展的SDK,用于生成机器人并连接到AI服务。借助此框架,开发... 查看详情

如何用java写一个聊天机器人(代码片段)

...tis的映射文件Mybatis的mapper层mybatis的增删改查pojo层工具类机器人的Talk( 查看详情

树莓派---制作一个聊天机器人(代码片段)

目录1.初步实现---用文本聊天找了一个免费的聊天机器人---青云客,只要编辑一下请求url就行虽然,有些功能还没上线官网地址chatWithRobot.py importrequestsfromurllibimportparsedefqingyunke(msg):#parse.quote方法是用来对中文编码的,... 查看详情

如何在一个网页中创建显示由web-chat收集的数据的侧窗口或iframe?(代码片段)

我正在通过Microsoftbot框架构建一个聊天机器人,最近在网页上将其部署为网络聊天。在我的网页中,我必须有一个侧边框,其中显示从机器人收集和计算的数据。任何人都可以帮我创建这个吗?现在,我不知道如何创建这个窗口... 查看详情

使用python实现一个简单的智能聊天机器人(代码片段)

...明最近两天需要做一个python的小程序,就是实现人与智能机器人(智能对话接口)的对话功能,目前刚刚测试了一下可以实现,就是能够实现个人与机器的智能对话(语音交流)。总体的思路大家可以设想一下,如果要... 查看详情