vue + element UI 制作问答机器人

这篇具有很好参考价值的文章主要介绍了vue + element UI 制作问答机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 
<template>
        <div class="box">
          <div class="title">
            <img src="" alt class="logo" />
            <span class="title-hn">人工客服</span>
          </div>
          <div id="content" class="content">
            <div v-for="(item,index) in info" :key="index">
              <div class="info_r info_default" v-if="item.type == 'leftinfo'">
                <span class="circle circle_r"></span>
                <div class="con_r con_text">
                  <div>{{item.content}}</div>
                  <div v-for="(item2,index) in item.question" :key="index">
                    <div class="con_que" @click="clickRobot(item2.content,item2.id)">
                      <div class="czkj-question-msg">
                        {{item2.index}}
                        {{item2.content}}
                      </div>
                    </div>
                  </div>
                </div>
                <div class="time_r">{{item.time}}</div>
              </div>
              <div class="info_l" v-if="item.type == 'rightinfo'">
                <div class="con_r con_text">
                  <span class="con_l">{{item.content}}</span>
                  <span class="circle circle_l">
                    <img src class="pic_l" />
                  </span>
                </div>
                <div class="time_l">{{item.time}}</div>
              </div>
            </div>
          </div>
          <div class="setproblem">
            <textarea
              placeholder="请输入您的问题..."
              style="height: 68px;width: 100%;resize:none;padding-right:80px;outline: none;border-color:#ccc;border-radius:5px;"
              id="text"
              v-model="customerText"
              @keyup.enter="sentMsg()"
            ></textarea>
            <el-button @click="sentMsg()" class="buttonsend">
              <span style="vertical-align: 4px;">发送</span>
            </el-button>
          </div>
        </div>
  </template>
  <script>
    export default {
      data() {
        return {
          customerText: "",
          info: [
            {
              type: 'leftinfo',
              time: this.getTodayTime(),
              name: "robot",
              content:"您好,欢迎使用!",
              question: [
            { id: 1, content: "客户资料完善后是由谁来审批", index: 1 },
            { id: 2, content: "客户资料审批一直不通过", index: 2 },
            { id: 3, content: "客户资料审批需要多长时间", index: 3 },
            {id: 4,content: "注册网站时需要一次填写完所有的客户资料吗",index: 4 },
            { id: 5, content: "注册时使用的手机号变更怎么办", index: 5 }
        ]
            }
          ],
          timer: null,
          robotQuestion: [
            { id: 1, content: "客户资料完善后是由谁来审批", index: 1 },
            { id: 2, content: "客户资料审批一直不通过", index: 2 },
            { id: 3, content: "客户资料审批需要多长时间", index: 3 },
            { d: 4, content: "注册网站时需要一次填写完所有的客户资料吗", index: 4 },
            { id: 5, content: "注册时使用的手机号变更怎么办", index: 5 },
          ],
          robotAnswer: [
            { id: 1,content:"答案客户资料完善后是由谁来审批,答案客户资料完善后是由谁来审批,答案客户资料完善后是由谁来审批",index: 1},
            { id: 2, content: "测试", index: 2 },
            { id: 3, content: "测试", index: 3 },
            { id: 4,content: "3333333",index: 4 },
            { id: 5, content: "44444444", index: 5 },
          ]
        }
      },
      created() {
        this.showTimer();
      },
      methods: {
        // 用户发送消息
        sentMsg() {
          clearTimeout(this.timer)
          this.showTimer()
          let text = this.customerText.trim()
          if (text != '') {
            var obj = {
              type: 'rightinfo',
              time: this.getTodayTime(),
              content: text,
            }
            this.info.push(obj)
            this.appendRobotMsg(this.customerText)
            this.customerText = ''
            this.$nextTick(() => {
              var contentHeight = document.getElementById('content')
              contentHeight.scrollTop = contentHeight.scrollHeight
            })
          }
        },
        // 机器人回答消息
        appendRobotMsg(text) {
          clearTimeout(this.timer)
          this.showTimer()
          text = text.trim()
          let answerText = ''
          let flag;
          for (let i = 0; i < this.robotAnswer.length; i++) {
            if (this.robotAnswer[i].content.indexOf(text) != -1) {
              flag = true
              answerText = this.robotAnswer[i].content
              break
            }
          }
          if (flag) {
            let obj = {
              type: "leftinfo",
              time: this.getTodayTime(),
              name: "robot",
              content: answerText,
              question: [],
            }
            this.info.push(obj)
          } else {
            answerText = "您可能想问:"
            let obj = {
              type: 'leftinfo',
              time: this.getTodayTime(),
              name: "robot",
              content: answerText,
              question: this.robotQuestion,
            }
            this.info.push(obj)
          }
          this.$nextTick(() => {
            var contentHeight = document.getElementById('content')
            contentHeight.scrollTop = contentHeight.scrollHeight
          })
        },
        sentMsgById(val, id) {
          clearTimeout(this.timer)
          this.showTimer()
          let robotById = this.robotAnswer.filter((item) => {
            return item.id == id;
          })
          let obj_l = {
            type: 'leftinfo',
            time: this.getTodayTime(),
            name: 'robot',
            content: robotById[0].content,
            question: [],
          };
          let obj_r = {
            type: 'rightinfo',
            time: this.getTodayTime(),
            name: 'robot',
            content: val,
            question: [],
          };
          this.info.push(obj_r)
          this.info.push(obj_l)
          this.$nextTick(() => {
            var contentHeight = document.getElementById('content')
            contentHeight.scrollTop = contentHeight.scrollHeight
          })
        },
        // 点击机器人的单个问题
        clickRobot(val, id) {
          this.sentMsgById(val, id)
        },
        // 结束语
        endMsg() {
          let happyEnding = {
            type: 'leftinfo',
            time: this.getTodayTime(),
            content: "退出",
            question: [],
          };
          this.info.push(happyEnding)
          this.$nextTick(() => {
            var contentHeight = document.getElementById('content')
            contentHeight.scrollTop = contentHeight.scrollHeight
          })
        },
        showTimer() {
          this.timer = setTimeout(this.endMsg, 1000*60)
        },
        getTodayTime() {
          // 获取当前时间
          var day = new Date()
          let seconds = day.getSeconds()
          if (seconds < 10) {
            seconds = "0" + seconds
          } else {
            seconds = seconds
          }
          let minutes = day.getMinutes()
          if (minutes < 10) {
            minutes = "0" + minutes
          } else {
            minutes = minutes
          }
          let time =
            day.getFullYear() +
            "-" +
            (day.getMonth() + 1) +
            "-" +
            day.getDate() +
            " " +
            day.getHours() +
            ":" +
            minutes +
            ":" +
            seconds
          return time
        }
      }
    }
  </script>
  <style scoped>
      .box {
        width: 100%;
        height: 500px;
        background-color: #fafafa;
        position: relative;
        padding: 20px;
      }
        #content {
          height: 340px;
          overflow-y: scroll;
          font-size: 14px;
          width: 100%;
        }
          .circle {
            display: inline-block;
            width: 34px;
            height: 34px;
            border-radius: 50%;
            background-color: #eff1f3;
          }
          .con_text {
            color: #333;
            margin-bottom: 5px;
          }
          .con_que {
            color: #1c88ff;
            height: 30px;
            line-height: 30px;
            cursor: pointer;
          }
          .info_r {
            position: relative;
          }
            .circle_r {
              position: absolute;
              left: 0%;
            }
            .pic_r {
              width: 17px;
              height: 17px;
              margin: 8px;
            }
            .con_r {
              display: inline-block;
              width: 55%;
              min-height: 55px;
              background-color: #e2e2e2;
              border-radius: 6px;
              padding: 10px;
              margin-left: 40px;
            }
            .time_r {
              margin-left: 45px;
              color: #999999;
              font-size: 12px;
            }
          .info_l {
            text-align: right;
            color: #ffffff;
            color: #3163C5;
            margin-top: 10px;
          }
            .pic_l {
              width: 13px;
              height: 17px;
              margin: 8px 10px;
            }
            .time_l {
              margin-right: 45px;
              color: #999999;
              font-size: 12px;
              margin-top: 5px;
            }
            .con_l {
              display: inline-block;
              width: 220px;
              min-height: 51px;
              background-color: #3163C5;
              border-radius: 6px;
              padding: 10px;
              text-align: left;
              color: #fff;
              margin-right: 5px;
            }
          #question {
            cursor: pointer;
          }
    .setproblem {
      width: 90%;
      height: 68px;
      background-color: #ffffff;
      position: relative;
      margin-top: 20px;
      padding-bottom: 20px;
    }
    .setproblem textarea {
      margin-bottom: 10px;
      color: #999999;
      padding: 10px;
      box-sizing: border-box;
    }
    .buttonsend {
      background: #3163C5;
      opacity: 1;
      border-radius: 4px;
      font-size: 10px;
      color: #ffffff;
      position: absolute;
      right: -10%;
      top: 30%;
      cursor: pointer;
      border: none;
    }
   
    .czkj-item-title {
      line-height: 25px;
      border-bottom: 1px solid #ccc;
      padding-bottom: 5px;
      margin-bottom: 5px;
    }
   
    .czkj-item-question {
      cursor: pointer;
      display: block;
      padding: 8px;
      position: relative;
      border-bottom: 1px dashed #ccc;
      line-height: 20px;
      min-height: 20px;
      overflow: hidden;
    }
   
    .czkj-question-msg {
      float: left;
      font-size: 14px;
      color: #3163C5;
    }
  </style>
vue + element UI 制作问答机器人,javascript,前端,vue.js,Powered by 金山文档

文章来源地址https://www.toymoban.com/news/detail-677492.html

到了这里,关于vue + element UI 制作问答机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 飞书ChatGPT机器人 – 打造智能问答助手

    在飞书中创建chatGPT机器人并且对话,在下面操作步骤中,使用到了Git克隆项目,需提前安装好Git,克隆的项目是Go语言项目,所以需提前安装Go语言环境。 Git Go1.20 首次注册飞书,我们可以创建个人账号 进入后 我们创建一个飞书 企业自建项目 然后设置机器人名称和描述,下面

    2024年02月16日
    浏览(109)
  • 用 ChatGPT 采用自有数据集训练问答机器人

    最近 LLM 模型很火,chatGPT 涵盖的知识范围之广,令人叹为观止。然而码农肯定不能满足于现有的知识库,要扩展自有数据才能发挥其更大的实用价值。 一般来说,深度学习模型大多采用 finetune 的方式来增加训练数据,但 LLM 模型太大了,训练成本过高。无论是离线或是在线

    2024年02月04日
    浏览(82)
  • GPT2训练自己的对话问答机器人

    这里我搭建了虚拟的3.6环境 基于GPT2的中文闲聊机器人,模型实现基于HuggingFace的transformers ,精读GPT2-Chinese的论文和代码,获益匪浅。 data/train.txt:默认的原始训练集文件,存放闲聊语料;data/train.pkl:对原始训练语料进行tokenize之后的文件,存储一个list对象,list的每条数据表示一个

    2024年02月12日
    浏览(67)
  • 免费的chartGPT 人工智能机器人问答展示

      无意中发现一个特别好用的AI工具,试着问了几个最近一直困扰我的小孩子的幼小衔接的问题,发现比度娘好用。给出的答案更加智能,还可以免费试用。 对于日常的一些问题,回答更具针对性    日常写代码也能轻松搞定  人工智能是一种让计算机系统具备智能的技术和

    2024年02月07日
    浏览(63)
  • 使用LangChain构建问答聊天机器人案例实战(三)

    使用LangChain构建问答聊天机器人案例实战 LangChain开发全流程剖析 接下来,我们再回到“get_prompt()”方法。在这个方法中,有系统提示词(system prompts)和用户提示词(user prompts),这是从相应的文件中读取的,从“system.prompt”文件中读取系统提示词(system_template),从“u

    2024年02月14日
    浏览(53)
  • 竞赛项目 深度学习的智能中文对话问答机器人

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文对话问答机器人 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 整个项目分为 数据清洗 和 建立模型两个部分。 (1)主要定义了seq2seq这样

    2024年02月13日
    浏览(56)
  • 使用LangChain构建问答聊天机器人案例实战(一)

    使用LangChain构建问答聊天机器人案例实战 现场演示GPT-4代码生成 本节我们会通过一个综合案例,跟大家讲解LangChain,这个案例产生的代码会直接在浏览器中运行,并且会输出结果,如图14-1所示,用户问:“What was the highest close price of IBM?”(“IBM的最高收盘价是多少?”)

    2024年02月15日
    浏览(72)
  • 实现一个微信公众号智能问答机器人

            实现一个微信公众号智能问答机器人。(注:该项目开发并不复杂,但是需要的前提条件较多,需要有一定经验的开发人员才能吃透这篇文章) 注册一个微信公众号(如果没有可以用微信官方测试的公众号,进行调试开发)          (1)注册微信公众号,点击下

    2024年02月11日
    浏览(48)
  • LangChain入门(四)-构建本地知识库问答机器人

    在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数据库chromadb和tiktoken    其中h

    2024年02月05日
    浏览(60)
  • 竞赛选题 题目:基于深度学习的中文对话问答机器人

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文对话问答机器人 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 整个项目分为 数据清洗 和 建立模型两个部分。 (1)主要定义了seq2seq这样

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包