手把手创建一个聊天机器人

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

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

这里使用的接口是图灵机器人,网址: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

原文地址:https://www.cnblogs.com/linqb/p/9646375.html

时间: 2024-11-10 19:25:20

手把手创建一个聊天机器人的相关文章

应接不暇,应酬不断,不妨给自己的微信接一个聊天机器人

我是一名程序猿,我很忙,忙到我经常无法及时回复媳妇的微信,时常惹媳妇不开心.我既想跟媳妇开心地侃天侃地,又不敢贻误工作,进而影响公司产品的研发进度.难. 我是一名程序猿,产品经理经常在微信里提变态需求.心有不爽,我就会与他互怼.面对巧舌如簧的产品经理,我经常是词穷.我既无法说服他,又不敢与他大打出手.难. 我是一名程序猿,我不懂拒绝.地铁上,商场里,时常有人让我扫码加微信.于是,我加了许多莫名其妙的人,进了许多莫名其妙的群,看了许多莫名其妙的文章.每每陌生人跟我聊天,我既不想尴尬冷场,又无心思与

基于Perfect用Swift语言编写Slack聊天机器人

基于Perfect用Swift语言编写Slack聊天机器人 本项目是专门为Slack聊天机器人定制的模板服务器. 完整的源代码下载在Github https://github.com/PerfectServers/SlackBot 在本项目模板中,一个聊天机器人可以加入授权频道,读取频道内所有用户发送的"曲奇"并记录在案,而且可以直接答复用户的有关曲奇饼干的问题. 预备知识 在您决定编译.测试或者部署您自己的基于Perfect软件框架体系的聊天机器人之前,以下基础知识??不可或缺??:

Tensorflow打造聊天机器人

Tensorflow聊天机器人 聊天机器人也叫做对话系统,是一个热门领域.微软.facebook.苹果.google.微信.slack都在上面做了大的投入,这是一波新的试图改变人和服务交流的创业浪潮.例如operator x.ai,chatfuel,以及一些库例如botkit,微软的bot开发库. 许多公司都希望机器人可以自然对话,和人类没有区别.并且许多对外声明说用了NLP和深度学习技术来实现这个目标.但围绕AI这些天花乱坠的宣传有时候也很难区别现实和虚化的差别. 我要在这个系列文章里将一些构

聊天机器人(chatbot)终极指南:自然语言处理(NLP)和深度机器学习(Deep Machine Learning)

在过去的几个月中,我一直在收集自然语言处理(NLP)以及如何将NLP和深度学习(Deep Learning)应用到聊天机器人(Chatbots)方面的最好的资料. 时不时地我会发现一个出色的资源,因此我很快就开始把这些资源编制成列表. 不久,我就发现自己开始与bot开发人员和bot社区的其他人共享这份清单以及一些非常有用的文章了. 在这个过程中,我的名单变成了一个指南,经过一些好友的敦促和鼓励,我决定和大家分享这个指南,或许是一个精简的版本 - 由于长度的原因. 这个指南主要基于Denny Br

用机器学习打造聊天机器人(七) 总结篇

本文是用机器学习打造聊天机器人系列的最后一篇啦,请耐心看完吧. 本系列文章展示了一个聊天机器人的打造过程,现阶段更高级的聊天机器人会加入更多语料,更多意图模式,用更好的算法,以及其他更多的小技巧,比如: 我们可以结合上一个系列<手把手教你做命名实体识别>中介绍的bert模型,来代替这里的词向量模型,让句向量更好的表示出原句子中各词汇之间的相关性,比如"我喜欢苹果"和"我喜欢苹果笔记本",对于采用word2vec的方式来构建向量特征来说,对"苹果

用c#快速实现的智能聊天机器人

这是一个聊天机器人,很方便,直接调用图灵机器人api即可,对话方式一问一答!图灵机器人官网上只有php和java的示例,于是自己写了个Windows的. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Wind

需求驱动还是技术驱动,大跃进的聊天机器人在开着一辆往历史倒退的车

Facebook每年一度的F8大会刚过去,相信相关的产品报道大家也早有所耳闻.其中值得玩味的是可以连接商家服务和用户的聊天机器人.表面上看来,这只是Facebook为了展示自己的雄心壮志,将本就非常成功的Facebook带到一个新的高度而作出的产品宣言.人们随之而来的对聊天机器人的热情可谓是高企不下,但如果我们仔细品味的话,其中却有不少值得玩味的地方. 这里Facebook所描述的无非就是以下这几个趋势: - 消息平台成为新的app载体:更多这方面详尽的描述,请到我的公众号techgogogo输

把去世的亲友做成聊天机器人,就能让生者慰藉、死者安息吗? - 看了 寻梦历险记,我的回答是 :是的,他/她永远活在我们心里 www.iremember.com.cn

AppU 如今的我们,之所以离不开手机和互联网,是因为它们确实可以带来信息和方便,让我们轻松记录并分享自己的生活体验,留下了充满回忆的各种文字.语音,各种图片.视频…… 但你有没有想过,当我们逝世时,对于如此之多的数字足迹和虚拟遗产,你有没有认真考虑过如何去处理它们?是就此沉寂在大公司冰冷的数据中心?还是愿意把这样的记忆保存下来,甚至做成机器人,永远陪伴在亲友身边? 其实在英剧<黑镜>第二季的一开头,就已经探讨过一个这样的故事.让 Geek 君没想到的是,一位俄罗斯的创业者真的把她逝去的好友,

NLP实践 TensorFlow打造聊天机器人

第1章 课程导学 对课程章节.知识点.课程安排.适用人群.前提条件以及学习完成后达到的程度进行了介绍,让同学们对本课程有基本的认识. 第2章 基础知识 介绍tensorflow的基础知识和原理,介绍tensorflow的基本训练方法和训练的注意点,介绍什么是Android系统及Android系统的四大基本组件,以及如何开发Android APP,开发工具用什么,环境如何搭建. 第3章 NLP基础 介绍什么是RNN和LSTM,并介绍他们在NLP处理中如何去使用,介绍什么是NLP语言模型,以及常用的