阿里ChatSDK使用,开箱即用聊天框

news2024/11/14 13:39:12

介绍:

效果:智能助理

ChatSDK,是在ChatUI的基础上,结合阿里云智能客服的最佳实践,沉淀和总结出来的一个开箱即用的,可快速搭建智能对话机器人的框架。它简单易上手,通过简单的配置就能搭建出对话机器人;同时它强大易扩展,通过丰富的接口和自定义卡片满足各种定制化需求。

注意:

 npm包仅限阿里集团内部使用

外部客户可以使用cdn方式引入ChatSDK,然后配置externals @ali/chatui-sdk为ChatSDK,

详细怎么引入可以看:viteExternalsPlugin 插件管理外部依赖-CSDN博客

 具体参数请参考官方文档:

        智能客服

demo:

import React, { useEffect, useRef } from "react";
import { nodeApi } from "@/api/runbayunapi/index.jsx";
import ChatSDK from "@ali/chatui-sdk";
import "./home.css";

let time = 0;
export default function App() {
  const wrapper = useRef();
  let botInstance = useRef();

  const options = {
    config: {
      navbar: {
        // logo: "http://www.runbayun.com/storge/enterprise/Public/beforehome2/images/logo.png",
        title: "智能客服",
      },
      wideBreakpoint: "600",
      avatarWhiteList: ["all"],
      loadMoreText: "点击加载更多",
      toolbar: [
        {
          type: "emoji",
          title: "表情",
          icon: "smile",
        },
        {
          type: "image",
          title: "图片",
          icon: "image",
        },
      ],
      quickReplies: [
        {
          icon: "message",
          name: "召唤在线客服",
          type: "cmd",
          content: { code: "agent_join" },
          // isHighlight: true,
        },
        {
          name: "发送文本",
          isHighlight: true,
        },
        {
          name: "可见文本",
          type: "text",
          text: "实际发送的文本",
          isNew: true,
        },
        {
          name: "点击跳转",
          type: "url",
          url: "https://www.taobao.com/",
        },
        {
          name: "唤起卡片",
          type: "card",
          card: {
            code: "knowledge",
            data: {
              text: "这是一个富文本卡片",
            },
          },
        },
        {
          name: "执行指令",
          type: "cmd",
          cmd: { code: "agent_join" },
        },
      ],
      showTyping: true,
      elderMode: false,
      robot: {
        avatar:
          "/public/5a7716d445264e2d9adc54219ebc1be0.png~tplv-a9rns2rl98-downsize.png",
        name: "小润",
      },
      messages: [
        {
          code: "system",
          data: {
            text: "智能助理进入对话,为您服务",
          },
        },
        {
          code: "text",
          data: {
            text: "智能助理为您服务,请问有什么可以帮您?",
          },
        },
        {
          code: "list-v2",
          data: {
            title: "猜你想问",
            list: [
              {
                action: "sendText",
                text: "购买后如何查看信息?",
                content: "购买后如何查看信息?",
                params: {
                  key1: "test",
                },
                context: {
                  a: "test",
                },
              },
              {
                action: "sendText",
                text: "【夜间】自动发货",
                content: "【夜间】自动发货",
              },
              {
                action: "openWindow",
                text: "【安装包】问题汇总",
                url: "https://docs.qq.com/doc/DRVZCeWNGRGVhclhJ",
              },
              {
                action: "sendText",
                text: "谷歌辅助邮箱怎么用?",
                content: "谷歌辅助邮箱怎么用?",
              },
              {
                action: "openWindow",
                text: "【脸书】双重验证教程",
                url: "https://docs.qq.com/doc/DRVhySEtIT3hXQUVm",
              },
              {
                action: "openWindow",
                text: "【推特】确认码教程",
                url: "https://docs.qq.com/doc/DRVhkSU9nZXR6Z1pz",
              },
              {
                action: "openWindow",
                text: "【推特】双重验证教程",
                url: "https://docs.qq.com/doc/DRWR2b0NMZnhTZG9H",
              },
              {
                action: "openWindow",
                text: "【Ins】双重验证教程",
                url: "https://docs.qq.com/doc/DRU5ocXFGb0pzRFR1",
              },
            ],
          },
        },
      ],
      client: "",
      beebotconfig: {
        showAIGC: true,
      },
    },
    requests: {
      send(msg) {
        console.log("msg:", msg);
        // Simulate bot typing indicator
        setTimeout(() => {
          botInstance.current.appendMessage({
            code: "text",
            data: { text: "这是模拟的回复消息" },
          });
        }, 1000);
      },
      makeSocket() {
        console.log("进入人工");
        botInstance.current.appendMessage({
          code: "system",
          data: { text: "进入人工服务" },
        });
        return {};
      },
      history: function () {
        time += 1;
        return Promise.resolve({
          list: [{ code: "text", data: { text: `历史消息${time}` } }],
          noMore: time > 3,
        });
      },
    },
    handlers: {
      onToolbarClick(item, ctx) {
        if (item.type === "image") {
          ctx.util.chooseImage({
            success(e) {
              if (e.files) {
                const file = e.files[0];
                ctx.appendMessage({
                  code: "image",
                  data: {
                    picUrl: URL.createObjectURL(file),
                  },
                  position: "right",
                });

                requestOcr({ file }).then((res) => {
                  ctx.postMessage({
                    code: "text",
                    data: {
                      text: res.text,
                    },
                    quiet: true,
                  });
                });
              } else if (e.images) {
                // Handle app uploaded images
              }
            },
          });
        }
      },
    },
  };

  const getdata = async () => {
    let data = await nodeApi().getnodes({});
    console.log(data, "hahahahhahah");
  };

  useEffect(() => {
    getdata();
    botInstance.current = new ChatSDK({
      root: wrapper.current,
      ...options,
    });
    botInstance.current.run();
  }, []);

  return <div style={{ height: "100%" }} ref={wrapper} />;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux网络】数据链路层【下】{MAC/MTU/ARP/ICMP/NAT/PING/代理服务器原理}

文章目录 1.逐步深入数据链路层1.1MAC帧1.2由集线器到交换机1.3认识MTU 2.ARP 地址解析协议/RARP逆地址解析协议3.DNS(Domain Name System)域名从输入url后到能看到网页 发生了什么【典中典】 4.ICMP协议&#xff1a;一个网络层协议有了TCP&#xff0c;为什么还要用ICMPICMP协议…

关于电脑的硬盘,你知道那些?

硬盘是一种主要用于存储数据的非易失性存储设备。它通过磁性存储技术在旋转的磁盘上读取和写入数据。硬盘通常安装在计算机内部&#xff0c;但也有外置硬盘供外部使用。 磁盘是什么&#xff1f;与硬盘有什么区别&#xff1f; 磁盘是一个更泛化的术语&#xff0c;可以指代任何使…

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

DWG文件发布至IIS后无法下载和预览解决办法

问题描述 DWG文件发布至IIS后无法下载和预览 原因分析&#xff1a; iis里面需要添加扩展 解决方案&#xff1a; 在服务器端IS属性的HTTP头下的MIME内容中添加扩展名“.dwg” MIME类型填入application/acad

分布式锁理解

介绍分布式锁&#xff0c;我觉得从项目的背景入手把 在伙伴匹配系统中&#xff0c;我创建了一个定时任务&#xff0c;做为缓存预热的手段 这个具体原因在Redis-CSDN博客 接下来切入正题&#xff1a; 想象每个服务器都有一个定时任务&#xff0c;都要对数据库或者缓存进行操…

C语言作业5(学生管理系统C语言)

成学生管理系统 1> 使用菜单完成 2> 有学生的信息录入功能&#xff1a;输入学生个数&#xff0c;并将学生的姓名、分数录入 3> 查看学生信息&#xff1a;输出所有学生姓名以及对应的分数 4> 求出学习最好的学生信息&#xff1a;求最大值 5> 按姓名将所有学…

Hyper-V 性能监控工具

虚拟化是任何组织网络管理战略不可或缺的一部分&#xff0c;对于帮助提高网络效率和资源可用性至关重要。采用虚拟基础架构具有多种好处&#xff0c;例如最大限度地减少停机时间、降低运营成本和提高生产力。 在所有虚拟服务器中&#xff0c;Microsoft Hyper-V因其多功能性和可…

亚马逊测评如何实现不同账户拥有独立运行环境,提高成功率

测评之所以被认为是最快速有效的推广方式&#xff0c;是因为它能够迅速影响多个关键因素。通过测评&#xff0c;您能够快速提升关键词的转化率&#xff0c;从而获得更好的搜索排名。优质的评价有助于增加产品的权重和转化率&#xff0c;进一步提升排名。同时&#xff0c;增加的…

在Windows环境下安装pycharm

Python环境搭建 第一步下载安装python 等待安装完成 验证python是否安装成功 Python开发工具安装部署 JetBrains: Essential tools for software developers and teams PyCharm: the Python IDE for data science and web development 下载社区版本的PyCharm 双击打开下载好的…

花几千上万学习Java,真没必要!(一)

1、主流的操作系统&#xff1a; 目前主流的PC端操作系统包括Windows、Mac OS和Linux。其中Windows是由微软公司开发的操作系统&#xff0c;Mac OS是由苹果公司开发的操作系统&#xff0c;而Linux则是开放源代码的操作系统&#xff0c;它有很多的发行版&#xff1a;比如&#xf…

PostgreSQL(二十二)缓冲区管理器

目录 一、缓冲区概述 1、缓冲区结构 2、buffer_tag结构 3、Backend进程读取操作 4、写脏块 二、缓冲区管理器结构 1、第一层&#xff1a;Buffer Table layer&#xff08;缓冲区表层&#xff09; 2、第二层&#xff1a;Buffer Descriptor Layer&#xff08;缓冲区描述层…

Vue2-动画

1.transition过渡 | 用transition CSS做动画 Vue-transition文档&#xff1a;进入/离开 & 列表过渡 — Vue.js [用transition做CSS动画]Enter状态&#xff1a;JS Bin - Collaborative JavaScript Debugging Leave状态&#xff1a;JS Bin - Collaborative JavaScript Debug…

经验分享:征信查询多了会不会影响大数据综合评分?

很多人在申请贷款的时候&#xff0c;会有一个疑问&#xff0c;就是自己的征信没逾期&#xff0c;就是查询偏多一点&#xff0c;但能达到申贷要求&#xff0c;为什么还会被拒贷?其实就是大数据花了的原因&#xff0c;那征信查询多了会不会影响大数据综合评分呢?接下来本文就为…

【C++】继承最全解析(什么是继承?继承有什么用?)

目录 一、前言 二、什么是继承 ? &#x1f4a2;继承的概念&#x1f4a2; &#x1f4a2;继承的定义&#x1f4a2; &#x1f95d;定义格式 &#x1f347;继承权限 三、基类与派生类对象的赋值转换 四、继承的作用域 五、派生类中的默认成员函数 &#x1f4a2…

[leetcode]minimum-cost-to-reach-destination-in-time 规定时间内到达终点的最小费用

. - 力扣&#xff08;LeetCode&#xff09; class Solution { private:// 极大值static constexpr int INFTY INT_MAX / 2;public:int minCost(int maxTime, vector<vector<int>>& edges, vector<int>& passingFees) {int n passingFees.size();ve…

windows节点加入一个Linux集群组成的kubernetes集群

windows节点加入一个Linux集群组成的kubernetes集群 背景描述一.准备环境搭建二.Windows上docker安装三.配置Windows server2019方法一&#xff1a;自动配置安装方法二&#xff1a;手动配置安装失败处理过程 四.Windows的node加入Linux的kubernetes集群五.配置Linux的master 背…

在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)

文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…

初学SpringMVC之过滤器解决乱码

写个 login.jsp 页面 提交的 method 一般为 post&#xff08;写 get 不安全&#xff0c;地址栏上会显示&#xff09; action 表示提交后跳转的地址 &#xff08;不直接写控制器里的路径是因为配置 Tomcat 时设置了前缀路径&#xff0c;默认走 http://localhost:8080&#xf…

Linux ---gcc

c语言的链接类型&#xff1a; 动态链接&#xff1a; ll /lib64/libc-2.17.so 静态链接&#xff1a; ll /lib64/libc.a glibc-static安装-CSDN博客https://blog.csdn.net/itas109/article/details/104226783在Linux中下载c语言的静态库。 gcc test.c -o test.s -static 以…

代码随想录二刷7.22|977.有序数组的平方

暴力解法&#xff1a; ——如果想暴力解决这个问题的话&#xff0c;可以像题目那样&#xff0c;先将每一个元素平方&#xff0c;然后再排序 双指针&#xff1a; ——从题目中找到的信息&#xff1a;这是一个非递减顺序的整数数组&#xff0c;从例子中&#xff0c;可以容易看…