v1.0
AiWma Docs / ACS · AI 客服 / 网页组件集成

网页组件集成

AiWma Web Widget 是最快的 ACS 接入方式——在您的网页 </body> 之前插入两行代码,即可获得完整的 AI 客服气泡界面,无需搭建任何前端组件。

ℹ️

前置条件

您需要持有有效的 AiWma API Key(格式:aiwma_{env}_{clientCode}_{32chars})。 如尚未获取,请参阅认证文档

最简接入(2 行代码)

将以下代码粘贴到您 HTML 页面的 </body> 标签之前:

        
html在 </body> 前添加
<script> window.AiWmaConfig = { apiKey: 'aiwma_prod_YOUR_CLIENT_CODE_xxxxxxxx' }; </script> <script src="https://cdn.aiwma.com/widget/v1/widget.js" async></script>

完成后刷新页面,您将在页面右下角看到 AiWma 的 AI 客服气泡。 点击气泡即可开始对话。首次加载 Widget 脚本约 45KB,后续通过缓存加速。

配置项

通过 window.AiWmaConfig 对象控制 Widget 的行为和外观:

        
javascript完整配置示例
window.AiWmaConfig = { // 必填 apiKey: 'aiwma_prod_xmohe_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 外观 position: 'bottom-right', // 'bottom-right' | 'bottom-left' primaryColor: '#E8703A', // 气泡与发送按钮的主色 botName: '魔盒客服', // 气泡头部显示的机器人名称 botAvatar: 'https://your-cdn.com/avatar.png', // 机器人头像 URL // 欢迎语(首次打开时显示) greeting: '您好!我是魔盒客服,有什么可以帮您的?', // 渠道(固定传 web_widget,无需修改) channel: 'web_widget', // 用户标识(可选,用于统计和 CRM 关联) // 注意:此值会在平台内部哈希处理,不会明文存储 userId: 'your-internal-user-id', // 声音模式(true = 用户可语音输入) voiceEnabled: true, // 语言 locale: 'zh-CN', // 事件回调(见下方事件说明) onOpen: function() { console.log('widget opened'); }, onClose: function() { console.log('widget closed'); }, onMessage: function(msg) { console.log('new message', msg); }, onHandover: function(info) { console.log('handover triggered', info); }, onSessionEnd: function(session) { console.log('session ended', session); }, };

可用事件回调

回调名触发时机回调参数
onOpen 用户点击气泡,聊天窗口展开
onClose 用户关闭聊天窗口
onMessage AI 产生一条新回复 { role, content, latencyMs }
onHandover 会话触发转人工流程 { sessionId, reason, transcriptUrl }
onSessionEnd 会话正常结束 { sessionId, turnCount, durationSeconds }

JavaScript API

Widget 加载完成后,您可以通过 window.AiWma 对象以编程方式控制 Widget:

        
javascriptWidget API
// 等待 Widget 就绪 window.AiWmaReady = function() { const widget = window.AiWma; widget.open(); // 展开聊天窗口 widget.close(); // 收起聊天窗口 widget.toggle(); // 切换展开/收起 // 主动发送一条消息(模拟用户输入) widget.sendMessage('我的订单号是 ORD-20260528-001'); // 获取当前会话 ID const sessionId = widget.getSessionId(); // 销毁 Widget(从 DOM 移除) widget.destroy(); };
💡

使用 sendMessage() 预填信息

在您的页面中,当用户点击"联系客服"后,您可以先 widget.open() 展开窗口,再通过 widget.sendMessage() 自动传入用户已知信息 (如订单号、商品名称),省去用户重复输入。

React / Vue 中使用

Widget 是纯 JavaScript 实现,与任何框架兼容。以 React 为例:

        
jsxReact 示例
import { useEffect } from 'react'; export function AiWmaWidget({ userId }) { useEffect(() => { // 挂载配置 window.AiWmaConfig = { apiKey: process.env.REACT_APP_AIWMA_API_KEY, userId: userId, botName: '智能客服', voiceEnabled: true, onHandover: (info) => { // 通知您的 CRM 有转人工需求 yourCrm.createTicket({ sessionId: info.sessionId }); }, }; // 动态加载 Widget 脚本(避免 SSR 问题) if (!document.getElementById('aiwma-widget-script')) { const script = document.createElement('script'); script.id = 'aiwma-widget-script'; script.src = 'https://cdn.aiwma.com/widget/v1/widget.js'; script.async = true; document.body.appendChild(script); } return () => { // 组件卸载时销毁 Widget window.AiWma?.destroy(); }; }, [userId]); return null; // Widget 自行挂载到 body }

Content Security Policy(CSP)配置

如果您的网站启用了严格的 CSP,需要将以下来源加入白名单:

        
http header需要添加的 CSP 指令
Content-Security-Policy: script-src 'self' https://cdn.aiwma.com; connect-src 'self' https://api.aiwma.com wss://api.aiwma.com; img-src 'self' https://cdn.aiwma.com data:; style-src 'self' 'unsafe-inline' https://cdn.aiwma.com;
⚠️

注意 WebSocket 地址的 CSP 配置

语音模式需要建立 WebSocket 连接。connect-src 必须同时包含 https://wss:// 两种协议前缀。

常见问题

Q:气泡没有出现,怎么排查?

打开浏览器控制台,搜索 [AiWma] 前缀的日志。常见原因: API Key 格式错误(检查有无多余空格)、CDN 加载失败(检查网络连接)、 CSP 阻止了脚本加载。

Q:如何在测试环境中使用 Widget?

将 API Key 替换为 aiwma_dev_ 前缀的开发环境 Key。 开发环境的对话数据不计入生产配额,日志更详细。

Q:Widget 支持自定义 CSS 覆盖吗?

Widget 使用 Shadow DOM 隔离样式,外部 CSS 无法直接穿透。 请通过 primaryColorbotAvatar 等配置参数进行外观定制。深度定制(自定义气泡形状、布局)请联系 AiWma 技术团队获取企业版配置选项。