# 嵌入客服挂件 挂件会在任意网页上添加一个聊天入口:只需加载一个脚本,页面上显示悬浮按钮,点击后在 iframe 中打开客服聊天。访客可以同时保留多个请求并随时切换。 [English](./embedding.md) | [Русский](./embedding.ru-RU.md) ## 快速开始 将 `https://support.example.com` 替换为你的部署地址,将 `YOUR_CHANNEL_ID` 替换为控制台中的渠道 ID。 ```html ``` 两段标签放在 `` 之前,且 `AgentDeskConfig` 必须在 SDK 脚本**之前**执行。挂件会自动挂载,按钮出现在页面角落。 标题、副标题、主题色、位置和宽度来自控制台的渠道设置,通常无需在代码中配置。 ## 配置项 | 选项 | 类型 | 默认值 | 说明 | | --- | --- | --- | --- | | `channelId` | `string` | – | **必填**,挂件所属渠道。 | | `baseUrl` | `string` | 脚本所在域名 | Agent Desk 服务地址。 | | `apiBaseUrl` | `string` | `baseUrl` | API 与页面不同源时使用。 | | `widgetBaseUrl` | `string` | 脚本所在域名 | 聊天页面的加载地址。 | | `language` | `"zh-CN" \| "en-US"` | 服务端设置 | 界面语言,任何 `en*` 取值都会选择英文。 | | `position` | `"left" \| "right"` | 渠道设置 | 按钮和窗口所在一侧。 | | `themeColor` | `string` | 渠道设置 | 主题色,例如 `#0f6cbd`。 | | `width` | `string` | `380px` | 桌面端窗口宽度。 | | `title`、`subtitle` | `string` | 渠道设置 | 窗口标题文字。 | | `externalId` | `string` | 浏览器本地 ID | 你自己系统中的稳定用户 ID。 | | `signExternalId` | `(id) => {signature, issuedAt}` | – | 证明 `externalId` 真实有效,见[已识别访客](#已识别访客)。 | | `externalName` | `string` | – | 显示名称,仅在首次创建访客时使用。 | | `getUserToken` | `() => string \| Promise` | – | 返回由你的系统签发的 JWT。 | 屏幕宽度不超过 480px 时,聊天窗口会全屏打开。 ## JavaScript API ```js AgentDeskWidget.open() // Promise,打开聊天 AgentDeskWidget.close() // 最小化聊天 AgentDeskWidget.mount(cfg) // 使用显式配置挂载 AgentDeskWidget.destroy() // 移除按钮和聊天窗口 AgentDeskWidget.getChatUrl() // Promise,用于独立页面或新标签页 ``` 从自己的按钮打开聊天: ```html ``` ## React 与 Next.js 只在客户端加载一次脚本。Next.js(App Router)示例: ```tsx "use client" import Script from "next/script" export function SupportWidget({ channelId }: { channelId: string }) { return ( <>