UNPKG

@tencentcloud/ai-desk-customer-uniapp

Version:

uni-app Vue2/Vue3 UIKit for AI Desk

982 lines (741 loc) 27.6 kB
## 介绍 智能客服用户端 uni-app UIKit。使用此 UIKit,您可以在一天内将智能客服的能力集成到您的 H5、小程序、App 项目。极简接入,一套代码多端运行且体验一致,用智能客服为您的产品增收提效,提升用户满意度和付费转化。 ## 效果展示 ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/5aaa61a1571c11f09fd0525400bf7822.png) ## 开发环境要求 - HBuilderX 升级到最新版本 - TypeScript / JavaScript (UIKit 使用 ts 语言开发,支持在 js 或者 ts 项目中集成) - Vue2 / Vue3 - sass(sass-loader 版本 ≤ 10.1.1) - node(12.13.0 ≤ node 版本 ≤ 17.0.0, 推荐使用 Node.js 官方 LTS 版本 16.17.0) - npm(版本请与 node 版本匹配) ## UIKit 源码集成 ### 步骤1:创建项目(已有项目可忽略) 打开 HbuilderX,在菜单栏中选择 “文件-新建-项目”,创建一个名为 `ai-desk-example` 的 uni-app 项目。Vue 版本选择推荐 3。 ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/6fe7e0eaf42211efbda7525400454e06.png) ### 步骤2:下载 UIKit - HBuilderX 创建项目时默认不会创建 `package.json` 文件,请在项目根目录下执行以下命令创建 `package.json` 文件: ``` bash npm init -y ``` - 通过 NPM 方式下载 UIKit。 ``` bash npm i @tencentcloud/ai-desk-customer-uniapp@latest unplugin-vue2-script-setup ``` - 为了方便您对 UI 进行扩展,请在项目的根目录下执行以下命令,将 UIKit 源码复制到项目中。 【macOS 端】 ``` bash mkdir -p ./pages-ai-desk/ai-desk-customer-uniapp && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/ai-desk-customer-uniapp/ ./pages-ai-desk/ai-desk-customer-uniapp/ ``` 【Windows 端】 ``` bash xcopy .\node_modules\@tencentcloud\ai-desk-customer-uniapp .\pages-ai-desk\ai-desk-customer-uniapp /i /e /exclude:.\node_modules\@tencentcloud\ai-desk-customer-uniapp\excluded-list.txt ``` ### 步骤3:引入 UIKit #### 1. 工程配置 【manifest.json 文件】 在 `manifest.json`文件的源码视图中开启小程序分包` subPackages` 和关闭 H5 `treeShaking` 选项。 ``` json // weixin miniProgram "mp-weixin" : { "appid" : "", "optimization" : { "subPackages" : true } }, // H5: close treeshaking to solve the problem of uni[methond]() is not a function "h5" : { "optimization" : { "treeShaking" : { "enable" : false } } }, ``` > **注意:** > > 小程序默认使用分包集成,打包小程序时 `manifest.json` 不要配置 lazyCodeLoading 选项。 > 【vue.config.js(Vue2 项目请修改;Vue3 项目无需修改)】 **Vue2 项目**必须在根目录下创建或修改 vue.config.js 。 ``` javascript const ScriptSetup = require('unplugin-vue2-script-setup/webpack').default; module.exports = { parallel: false, configureWebpack: { plugins: [ ScriptSetup({ /* options */ }), ], }, chainWebpack(config) { // disable type check and let `vue-tsc` handles it config.plugins.delete('fork-ts-checker'); }, }; ``` #### 2. 分包集成 UIKit 为了规避小程序主包体积超限问题,我们建议您**将客服 UIKit 放入分包**。假设您的主包页面是 `pages/index/index.vue`,分包页面是 `pages-ai-desk/index/index.vue`,主包页面有一个咨询客服的入口,用户点击后跳转至分包的智能客服页面。项目的目录结构如下所示: ``` bash ----YOUR-UNI-APP-PROJECT ----pages --------index ------------index.vue ----pages-ai-desk --------ai-desk-customer-uniapp --------index ------------index.vue ----App.vue ----manifest.json ----pages.json ``` 请将以下内容复制到项目对应的文件中。 【App.vue 文件】 ``` javascript <script> export default { onLaunch: function() { console.log('App Launch') }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } </script> <style> uni-page-body, html, body, page { width: 100% !important; height: 100% !important; overflow: hidden; } #app { height: 100% !important; } </style> ``` 【pages.json 文件】 ``` json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "uni-app" } } ], "subPackages": [{ "root": "pages-ai-desk", "pages": [{ "path": "index/index", "style": { "navigationBarTitleText": "智能客服", "navigationStyle": "default" } }] }], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" }, "uniIdRouter": {}, "condition": { //模式配置,仅开发期间生效 "current": 0, //当前激活的模式(list 的索引项) "list": [{ "name": "", //模式名称 "path": "", //启动页面,必选 "query": "" //启动参数,在页面的onLoad函数里面得到 }] } } ``` 【main.js(Vue2 项目请修改;Vue3 项目无需修改)】 如果您是 Vue2 项目,请在 **main.js 中引入组合式API**,防止环境变量 `isPC` 等无法使用。 ``` javascript // #ifndef VUE3 import VueCompositionAPI from '@vue/composition-api'; Vue.use(VueCompositionAPI); // #endif ``` #### 3. 在项目中配置智能客服聊天的入口 【主包 pages/index/index.vue】 ``` javascript <template> <div class="chat"> <button @click="getSupport">咨询客服</button> </div> </template> <script> export default { methods: { getSupport() { uni.navigateTo({ url: "/pages-ai-desk/index/index" }) } } } </script> <style lang="scss" scoped> .chat { height: 100%; overflow: hidden; display: flex; align-items: center; justify-content: center; } </style> ``` 【分包 pages-ai-desk/index/index.vue】 ``` javascript <template> <CustomerServiceChat style="height: 100%;" /> </template> <script> import TUICustomerServer from '../ai-desk-customer-uniapp'; import CustomerServiceChat from '../ai-desk-customer-uniapp/components/CustomerServiceChat/index-uniapp.vue'; export default { components: { CustomerServiceChat }, data() { }, onLoad() { this.$nextTick(() => { // SDKAppID/userID/userSig 的获取请参考步骤4 const SDKAppID = 0; // Your SDKAppID,即开通了智能客服 Desk 的应用 ID const userID = ''; // Your userID,可复用您 app 的账号体系,或随机生成 const userSig = ''; // Your userSig,接入阶段可控制台生成,生产阶段请务必由服务端生成 // 带昵称和头像登录 TUICustomerServer.initWithProfile({ SDKAppID, userID, userSig, nickName: '张三 1852010****', avatar: 'https://im.sdk.qcloud.com/download/tuikit-resource/avatar/avatar_3.png' }); }); } } </script> <style scoped lang="scss"> </style> ``` ### 步骤4:获取 SDKAppID 、userID 、 userSig 设置`pages-ai-desk/index/index.vue`中的 `SDKAppID`、`userID`、`userSig` 。 - SDKAppID 信息:在 [即时通信 IM 控制台](https://console.cloud.tencent.com/im) 单击**应用管理** > **创建新应用**,并选择**智能客服 Desk**, [开通智能客服](https://console.cloud.tencent.com/im/ai-desk) 后获取。 ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/1bc4a29b533211f0abce52540099c741.png) ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/e2113d0d572911f0922d5254007c27c5.png) - userID 信息,可本地生成一个随机的字符串,例如 test-1234。 - userSig 信息,可单击 [即时通信 IM 控制台 > UserSig生成校验](https://console.cloud.tencent.com/im/tool-usersig),填写创建的 userID,即可生成 userSig。 ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100031390357/245028f80ae511f0ae6a525400454e06.png) ### 步骤5:启动项目,并发起您的第一条客服咨询 1. 使用 HBuilderX 启动该项目,单击运行,可选择运行到浏览器,或者手机,或者小程序模拟器。 2. 如果您选择了运行到微信开发者工具,但 HBuilderX 没有自动拉起微信开发者工具,请使用微信开发者工具手动打开编译后的项目,目录地址:`unpackage/dist/dev/mp-weixin`**。** 3. 小程序开发环境,请选择 **详情** > **本地设置 **中勾选 **不校验合法域名、web-view(业务域名)、TLS版本以及 HTTPS 证书**。上线前请在微信公众平台 > 开发 > 开发管理 > 开发设置 > 服务器域名中进行域名配置,域名配置详见:[小程序合法域名](https://cloud.tencent.com/document/product/269/75285#56e2dceb-d703-43ea-bf8d-c772318b4eb2)。 ## 高级特性 ### 国际化界面语言 UIKit 支持以下界面语言: <table> <tr> <td rowspan="1" colSpan="1" >语言代码(userLang)</td> <td rowspan="1" colSpan="1" >语言</td> </tr> <tr> <td rowspan="1" colSpan="1" >zh_cn</td> <td rowspan="1" colSpan="1" >简体中文</td> </tr> <tr> <td rowspan="1" colSpan="1" >en</td> <td rowspan="1" colSpan="1" >英文</td> </tr> <tr> <td rowspan="1" colSpan="1" >zh_tw</td> <td rowspan="1" colSpan="1" >繁体中文</td> </tr> <tr> <td rowspan="1" colSpan="1" >ja</td> <td rowspan="1" colSpan="1" >日语</td> </tr> <tr> <td rowspan="1" colSpan="1" >id</td> <td rowspan="1" colSpan="1" >印尼语</td> </tr> <tr> <td rowspan="1" colSpan="1" >ms</td> <td rowspan="1" colSpan="1" >马来语</td> </tr> <tr> <td rowspan="1" colSpan="1" >vi</td> <td rowspan="1" colSpan="1" >越南语</td> </tr> <tr> <td rowspan="1" colSpan="1" >th</td> <td rowspan="1" colSpan="1" >泰语</td> </tr> <tr> <td rowspan="1" colSpan="1" >fil</td> <td rowspan="1" colSpan="1" >菲律宾语</td> </tr> <tr> <td rowspan="1" colSpan="1" >ru</td> <td rowspan="1" colSpan="1" >俄语</td> </tr> </table> 如果您的业务需要出海,且用户语言以英语为主,可在引入智能客服时设置`userLang="en"`。如果您不指定`userLang`, UIKit 会使用浏览器或 App 设置的语言。 ``` javascript <template> <CustomerServiceChat style="height: 100%;" userLang="en" /> </template> ``` 如果您需要支持动态切换用户语言,可使用`TUICustomerServer.changeLanguage`接口,并通过切换 页面/组件 key 的方式,实现语言动态修改与展示。 ``` javascript <template> <CustomerServiceChat style="height: 100%;" :key="locale" :userLang="locale" /> </template> <script> import TUICustomerServer from '../ai-desk-customer-uniapp'; import CustomerServiceChat from '../ai-desk-customer-uniapp/components/CustomerServiceChat/index-uniapp.vue'; export default { components: { CustomerServiceChat, }, data() { let locale = 'en'; return { locale } }, methods: { changeLanguage(language) { TUICustomerServer.changeLanguage(language).then(() => { this.locale = language; }); } } } </script> <style scoped lang="scss"> </style> ``` ### 用户端带昵称和头像登录 如果您希望人工客服在工作台接待用户咨询时,能看到用户的昵称、头像等信息以提升沟通效率,效果如下所示: ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/85ceab99571c11f0b3f05254001c06ec.png) 请使用`initWithProfile`接口初始化,传入昵称和头像即可。 ``` javascript TUICustomerServer.initWithProfile({ SDKAppID, userID, userSig, nickName: '张三 1852010****', avatar: 'https://im.sdk.qcloud.com/download/tuikit-resource/avatar/avatar_3.png' }) ``` ### 工具栏快捷按钮 如果您想实现输入框上方增加快捷按钮,方便用户使用,例如增加“人工客服”,“发送订单消息”等,可在引入智能客服时设置 `toolbarButtonList`。效果如下所示: ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/374180be19d011f09bd7525400e889b2.png) `toolbarButtonList` 是一个包含了一个或多个配置的数组,配置的描述如下: <table> <tr> <td rowspan="1" colSpan="1" >参数</td> <td rowspan="1" colSpan="1" >类型</td> <td rowspan="1" colSpan="1" >是否必填</td> <td rowspan="1" colSpan="1" >说明</td> </tr> <tr> <td rowspan="1" colSpan="1" >title</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >button 标题。</td> </tr> <tr> <td rowspan="1" colSpan="1" >icon</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >No</td> <td rowspan="1" colSpan="1" >button 图标 url。</td> </tr> <tr> <td rowspan="1" colSpan="1" >isPreset</td> <td rowspan="1" colSpan="1" >Number</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >- 1:客服组件内置功能。<br>- 0:非内置功能。</td> </tr> <tr> <td rowspan="1" colSpan="1" >presetId</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >No</td> <td rowspan="1" colSpan="1" >当 isPreset 为 1 时,可选值如下:<br>- humanService:人工服务。<br>- serviceRating:服务评价。<br>- endHumanService:结束对话。</td> </tr> <tr> <td rowspan="1" colSpan="1" >isEnabled</td> <td rowspan="1" colSpan="1" >Number</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >- 1:渲染。<br>- 0:不渲染。</td> </tr> <tr> <td rowspan="1" colSpan="1" >content</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >No</td> <td rowspan="1" colSpan="1" >当 isPreset 为 0 时,填入文本内容或者 url。</td> </tr> <tr> <td rowspan="1" colSpan="1" >type</td> <td rowspan="1" colSpan="1" >Number</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >- 1:点击 button 后客服组件发送 content 对应的文本。<br>- 2:点击 button 后客服组件打开 content 对应的 url(小程序打开 url 可能会受限,请提前参考相关文档解决)。</td> </tr> </table> ``` javascript <template> <CustomerServiceChat style="height: 100%;" :toolbarButtonList="toolbarButtonList" /> </template> <script> import TUICustomerServer from '../ai-desk-customer-uniapp'; import CustomerServiceChat from '../ai-desk-customer-uniapp/components/CustomerServiceChat/index-uniapp.vue'; export default { components: { CustomerServiceChat, }, data() { const toolbarButtonList = [ {"title":"人工服务","icon":"https://tccc-im-agent-avatar-1258344699.cos.ap-nanjing.myqcloud.com/toolbar_button_1.png","type":1,"content":"","isPreset":1,"presetId":"humanService","isEnabled":1}, {"title":"服务评价","icon":"https://tccc-im-agent-avatar-sg-1258344699.cos.ap-singapore.myqcloud.com/toolbar_button_2.png","type":1,"content":"","isPreset":1,"presetId":"serviceRating","isEnabled":1}, {"title":"结束对话","icon":"https://tccc-im-agent-avatar-sg-1258344699.cos.ap-singapore.myqcloud.com/toolbar_button_3.png","type":1,"content":"","isPreset":1,"presetId":"endHumanService","isEnabled":1}, {"type":1,"title":"智能客服","content":"智能客服","isPreset":0,"isEnabled":1} ]; return { toolbarButtonList, } } } </script> <style scoped lang="scss"> </style> ``` ### 底部快捷订单 > **说明:** > > 请升级 [ai-desk-customer-uniapp](https://www.npmjs.com/package/@tencentcloud/ai-desk-customer-uniapp) 到 v1.5.2 或更高版本。 > 如果您想实现打开客服会话时在聊天区域底部展示快捷订单,可以配置 `bottomQuickOrder`,效果如下所示: ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/1391a63f571b11f0857a525400e889b2.png) `bottomQuickOrder` 的参数描述如下: <table> <tr> <td rowspan="1" colSpan="1" >参数</td> <td rowspan="1" colSpan="1" >类型</td> <td rowspan="1" colSpan="1" >是否必填</td> <td rowspan="1" colSpan="1" >说明</td> </tr> <tr> <td rowspan="1" colSpan="1" >header</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >订单标题,对应上图的“智能客服高级版”。</td> </tr> <tr> <td rowspan="1" colSpan="1" >desc</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >订单描述,对应上图的“3000/月”。</td> </tr> <tr> <td rowspan="1" colSpan="1" >pic</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >No</td> <td rowspan="1" colSpan="1" >订单图片 url。</td> </tr> <tr> <td rowspan="1" colSpan="1" >url</td> <td rowspan="1" colSpan="1" >String</td> <td rowspan="1" colSpan="1" >Yes</td> <td rowspan="1" colSpan="1" >当客服坐席收到订单消息时,点击可打开此 url 对应的页面。</td> </tr> <tr> <td rowspan="1" colSpan="1" >customField</td> <td rowspan="1" colSpan="1" >Array</td> <td rowspan="1" colSpan="1" >No</td> <td rowspan="1" colSpan="1" >自定义配置,例如“订单号”,“订单时间”等信息。。</td> </tr> </table> ``` javascript <template> <CustomerServiceChat style="height: 100%;" :bottomQuickOrder="bottomQuickOrder" /> </template> <script> import TUICustomerServer from '../ai-desk-customer-uniapp'; import CustomerServiceChat from '../ai-desk-customer-uniapp/components/CustomerServiceChat/index-uniapp.vue'; export default { components: { CustomerServiceChat, }, data() { const bottomQuickOrder = { header: "高级版智能客服(包含3个客服许可)", desc: "¥3000/月", pic: "https://cloudcache.tencent-cloud.com/qcloud/portal/kit/images/presale.a4955999.jpeg", url: 'https://cloud.tencent.com/document/product/269/97537', customField: [ { name: '订单号', value: '11111111111111111111' }, { name: '下单时间', value: '2025-07-02 16:23' } ] }; return { bottomQuickOrder, } } } </script> <style scoped lang="scss"> </style> ``` ### 多客服号 > **说明:** > > 请升级 [ai-desk-customer-uniapp](https://www.npmjs.com/package/@tencentcloud/ai-desk-customer-uniapp) 到 v1.5.3 或更高版本。 > 如果您的应用内需要多个客服号,为用户提供专属客服功能,以提高服务质量和响应速度,可用 UIKit 提供的多客服号功能实现。效果如下所示: ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/25cffe235c6811f09c7652540044a08e.png) ``` javascript // 1. 初始化前将业务侧自定义的客服号 ID 传递给 UIKit // 自定义客服号请使用 restapi - https://cloud.tencent.com/document/product/269/111798 TUICustomerServer.setCustomerServiceIDList(['customerServiceID_001', 'customerServiceID_002', 'customerServiceID_003']); // 2. 初始化时,带上要发起会话的客服号 ID,比如 'customerServiceID_002' // 如果不带上要发起会话的客服号 ID,则 UIKit 默认使用多客服号列表的第 1 个元素 TUICustomerServer.initWithProfile({ SDKAppID, userID, userSig, nickName: '张三 1562010****', avatar: 'your avatar url', customerServiceID: 'customerServiceID_002', }); ``` ### 用户端主动结束人工会话 > **说明:** > > 用户端可以通过发送自定义消息的方式实现主动结束会话,适用于以下 3 种情况: > > 1. 用户转人工触发排队,发送此消息可以结束排队。 > 2. 客服接待方式为手动接待,用户转人工分配客服成功后等待客服确认接待,发送此消息可以结束等待。 > 3. 用户转人工且成功接入人工客服,发送此消息可以结束本次会话。 ``` javascript TUICustomerServer.sendCustomMessage({ to: '@customer_service_account', conversationType: 'C2C', payload: { data: JSON.stringify({ src: '27', customerServicePlugin: 0, }), }, }, { onlineUserOnly: true }); ``` ### 通过 vue-cli 命令行集成 除了HBuilderX可视化界面,您也可以使用 cli 脚手架,通过 vue-cli 创建 uni-app 项目。这两种方式在集成过程上有所区别,请您参考下面的步骤进行。 【uni-app vue2 默认模板】 1. 创建 vue2 项目,使用默认模板。 ``` bash vue create -p dcloudio/uni-preset-vue my-project ``` 2. 在项目目录 my-project 内下载 UIKit。 ``` bash npm i @tencentcloud/ai-desk-customer-uniapp@latest unplugin-vue2-script-setup ``` 3. 下载 sass/sass-loader/ts-loader 等。 ``` bash npm i sass sass-loader@10.1.1 ts-loader typescript @vue/cli-plugin-typescript --legacy-peer-deps ``` 4. 将 UIKit 源码复制到项目中。请注意,复制到工程的 src 目录下。 【macOS 端】 ``` bash mkdir -p ./src/pages-ai-desk/ai-desk-customer-uniapp && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/ai-desk-customer-uniapp/ ./src/pages-ai-desk/ai-desk-customer-uniapp/ ``` 【Windows 端】 ``` bash xcopy .\node_modules\@tencentcloud\ai-desk-customer-uniapp .\src\pages-ai-desk\ai-desk-customer-uniapp /i /e /exclude:.\node_modules\@tencentcloud\ai-desk-customer-uniapp\excluded-list.txt ``` 5. 在工程目录下新建 vue.config.js 文件。 ``` javascript const ScriptSetup = require('unplugin-vue2-script-setup/webpack').default; module.exports = { parallel: false, configureWebpack: { plugins: [ ScriptSetup({ /* options */ }), ], }, chainWebpack(config) { // disable type check and let `vue-tsc` handles it config.plugins.delete('fork-ts-checker'); config.module.rule('ts').test(/\.ts$/).use('ts-loader').loader('ts-loader').end(); }, }; ``` 6. 在工程目录下新建 tsconfig.json 文件。 ``` javascript { "compilerOptions": { "target": "esnext", "module": "esnext", "strict": true, "jsx": "preserve", "importHelpers": true, "moduleResolution": "node", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "experimentalDecorators":true, "sourceMap": true, "skipLibCheck": true, "baseUrl": ".", "types": [ "webpack-env", "@dcloudio/types" ], "paths": { "@/*": [ "./src/*" ] }, "lib": [ "esnext", "dom", "dom.iterable", "scripthost" ] }, "exclude": [ "node_modules", "unpackage", "dist", "src/**/*.nvue", "src/pages-ai-desk/ai-desk-customer-uniapp" ] } ``` 7. 其它步骤同 HBuilderX 可视化界面创建的项目一致,不再赘述。 【uni-app vue2 TypeScript 模板】 8. 创建 vue2 项目,使用默认模板(TypeScript)。 ``` bash vue create -p dcloudio/uni-preset-vue my-project ``` 9. 在项目目录 my-project 内下载 UIKit。 ``` bash npm i @tencentcloud/ai-desk-customer-uniapp@latest unplugin-vue2-script-setup ``` 10. 下载 sass/sass-loader 等。 ``` bash npm i sass sass-loader@10.1.1 --legacy-peer-deps ``` 11. 将 UIKit 源码复制到项目中。请注意,复制到工程的 src 目录下。 【macOS 端】 ``` bash mkdir -p ./src/pages-ai-desk/ai-desk-customer-uniapp && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/ai-desk-customer-uniapp/ ./src/pages-ai-desk/ai-desk-customer-uniapp/ ``` 【Windows 端】 ``` bash xcopy .\node_modules\@tencentcloud\ai-desk-customer-uniapp .\src\pages-ai-desk\ai-desk-customer-uniapp /i /e /exclude:.\node_modules\@tencentcloud\ai-desk-customer-uniapp\excluded-list.txt ``` 12. 在工程目录下新建 vue.config.js 文件。 ``` javascript const ScriptSetup = require('unplugin-vue2-script-setup/webpack').default; module.exports = { parallel: false, configureWebpack: { plugins: [ ScriptSetup({ /* options */ }), ], }, chainWebpack(config) { // disable type check and let `vue-tsc` handles it config.plugins.delete('fork-ts-checker'); }, }; ``` 13. 编辑 tsconfig.json 文件,exclude UIKit 代码。 ``` json "exclude": [ ... "src/pages-ai-desk/ai-desk-customer-uniapp" ] ``` 14. 其它步骤同 HBuilderX 可视化界面创建的项目一致,不再赘述。 【uni-app vue3】 15. 创建 vue3 项目,用 javascript 开发。 ``` bash npx degit dcloudio/uni-preset-vue#vite my-project ``` 或创建 vue3 项目,用 typescript 开发。 ``` bash npx degit dcloudio/uni-preset-vue#vite-ts my-project ``` 16. 在项目目录 my-project 内下载 UIKit。 ``` bash npm i @tencentcloud/ai-desk-customer-uniapp@latest ``` 17. 下载 sass/sass-loader 等。 ``` bash npm i sass sass-loader@10.1.1 --legacy-peer-deps ``` 18. 将 UIKit 源码复制到项目中。请注意,复制到工程的 src 目录下。 【macOS 端】 ``` bash mkdir -p ./src/pages-ai-desk/ai-desk-customer-uniapp && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/ai-desk-customer-uniapp/ ./src/pages-ai-desk/ai-desk-customer-uniapp/ ``` 【Windows 端】 ``` bash xcopy .\node_modules\@tencentcloud\ai-desk-customer-uniapp .\src\pages-ai-desk\ai-desk-customer-uniapp /i /e /exclude:.\node_modules\@tencentcloud\ai-desk-customer-uniapp\excluded-list.txt ``` 19. 其它步骤同 HBuilderX 可视化界面创建的项目一致,不再赘述。 ### 消息推送 > **说明:** > > **UIKit 中默认没有集成 **TencentCloud-TIMPush** 推送插件**。TencentCloud-TIMPush 是腾讯云即时通信 IM Push 插件。目前推送支持小米、华为、荣耀、OPPO、vivo、魅族、APNs、一加、realme、iQOO 和 苹果等厂商通道。 > > 如果您需要在 App 中集成离线推送能力,请参见 [uni-app 推送](https://cloud.tencent.com/document/product/269/103522) 实现。 > ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027960326/c6258cb619a311f09bd7525400e889b2.png) ## 常见问题 ### 什么是 UserSig?如何生成 UserSig? UserSig 是用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文。 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向项目的接口,在需要 UserSig 时由您的项目向业务服务器发起请求获取动态 UserSig。更多详情请参见 [服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688#formal)。 ### 集成 UIKit 在 page.json 中默认没有配置 tabBar,项目中如何实现 tabBar 功能? 如果您打包 App / H5,需要在 pages.json 中配置 tabBar。请参考 uni-app 官网 [tabBar 配置](https://uniapp.dcloud.net.cn/collocation/pages.html#tabbar) 自实现。 如果您打包小程序,因为主包体积限制,小程序默认是分包集成,如果您的 tabBar 需要自定义实现。请参考 uni-app 官网 [自定义 tabBar](https://uniapp.dcloud.net.cn/collocation/pages.html#custom-tab-bar)。 ### 小程序如果需要上线或者部署正式环境怎么办? 请在 微信公众平台 > 开发 > 开发管理 > 开发设置 > 服务器域名 中进行域名配置。域名配置详见:[小程序合法域名](https://cloud.tencent.com/document/product/269/75285#56e2dceb-d703-43ea-bf8d-c772318b4eb2)。 ## 交流与反馈 [点此进入 IM 社群](https://zhiliao.qq.com/s/c5GY7HIM62CK),享有专业工程师的支持,解决您的难题。