Dograh嵌入(Embed)功能教程:把语音AI聊天/通话组件嵌入你的网站
2026/8/31 8:19:12 网站建设 项目流程

Dograh嵌入(Embed)功能教程:把语音AI聊天/通话组件嵌入你的网站

【免费下载链接】dograhOpen source voice AI platform. Self-hosted alternative to Vapi and Retell. On Prem, BYOK across Speech to Speech or LLM/STT/TTS, with a visual workflow builder, MCP native and telephony support.项目地址: https://gitcode.com/GitHub_Trending/do/dograh

Dograh 是一个开源语音 AI 平台(Vapi / Retell 的自托管替代方案),它的Embed(嵌入)功能让你只需复制一段<script>代码,就能把语音 AI 通话组件或聊天组件嵌入到你自己的网站中——访客无需登录你的后台,即可直接开口说话或用文字与你的语音 AI 智能体互动。本教程面向新手,完整讲解如何配置 Widget、三种嵌入模式的区别,以及进阶的访客上下文传递技巧。

🚀 快速上手:4 步生成嵌入代码

整个流程都在 Dograh 控制台的Agent 设置 → Add to Website中完成,不需要写后端代码。

第 1 步:打开你的 Agent 编辑器,点击右上角齿轮图标进入设置。

第 2 步:向下滚动到Add to Website区域,点击Configure Widget按钮。

第 3 步:在弹出的 Widget 配置对话框中:

  • 开启Embedding
  • Allowed Domains中填入你网站的域名(留空则允许所有域名,测试时记得加上localhost);
  • 选择Widget TypeVoice(语音通话)或Chat(文字聊天);
  • 选择Embed ModeFloating Widget/Inline Component/Headless
  • 按需定制按钮位置、颜色、文案,点击Save Configurations

第 4 步:复制自动生成的嵌入代码,粘贴到你网页的<head><body>中即可上线。

生成的代码本质上是一个异步加载dograh-widget.js<script>标签,其中js.src携带了你的embed token(形如emb_...,由 api/db/embed_token_client.py 用密码学安全随机数生成)。服务端脚本本体见 ui/public/embed/dograh-widget.js,配置对话框的前端实现在 ui/src/app/workflow/[workflowId]/components/EmbedDialog.tsx。

🎙️ 两种 Widget 类型:语音通话 vs 文字聊天

类型访客如何互动适用场景
Voice通过 WebRTC 实时音频通话,需要麦克风客服咨询、语音助手
Chat在聊天面板中输入文字,AI 以文字回复帮助中心、轻量问答

聊天模式的一些行为值得注意:

  • 访客点击聊天按钮时才开始对话,Agent 会先打招呼;
  • 一个聊天会话最长持续1 小时,过期后出现 “Start new chat” 按钮;
  • 刷新页面会开启新会话;
  • 每次会话计入该 embed token 的使用次数,并与语音通话一样记录在 Agent 的通话历史中,可查看完整文字稿。

🧩 三种嵌入模式:总有一种适合你的网站

模式渲染效果适合场景
Floating Widget页面角落的胶囊形按钮开箱即用,不打扰原有布局
Inline Component渲染到你指定的<div>容器内放在落地页 Hero 区、支持页 Tab 等固定位置
Headless不渲染任何 UI,只提供window.DograhWidgetJavaScript API完全自定义 UI 与设计系统

① Floating Widget(浮动按钮)

  • 语音:点击按钮开始通话,按钮文案随生命周期自动变化(“Connecting…” → “End Call” → “Retry”);
  • 聊天:点击按钮在角落打开聊天面板,关闭面板不会结束会话;
  • 主页面不需要写任何 JavaScript,粘贴嵌入代码就是全部集成工作。

② Inline Component(内联组件)

在希望出现组件的位置放一个容器即可,Widget 会自动挂载:

<!-- 先粘贴 Dograh 嵌入代码,再放这个容器 --> <div id="dograh-inline-container"></div>

在 React 中则通过window.DograhWidget.initInline({ container })初始化(React 挂载可能晚于脚本加载,官方文档给出了轮询等待的完整示例)。

③ Headless(无界面模式)

组件不提供任何 UI,你自己画按钮、面板,通过 JavaScript API 驱动 Agent,核心方法包括:

  • 语音:start()/end()/onStatusChange()/onError()
  • 聊天:startChat()/sendMessage(text)/onMessage()/onChatStateChange()

⚠️ 注意:start()必须在真实用户手势(如 click)中调用,否则浏览器会拒绝授权麦克风。

🧠 进阶:给语音AI传递访客上下文

你的页面通常已经知道访客信息——姓名、套餐、购物车金额。通过data-dograh-context属性(生成代码里已预置page_urltoday两个字段)把任何页面数据传给 Agent,即可在任意节点提示词中用模板变量引用:

Greet {{initial_context.customer_name | there}} and mention their {{initial_context.plan}} plan.

页面加载后才获得的信息(SPA 中登录、切换路由等),调用以下方法即可,后续会话自动合并:

window.DograhWidget.setContext({ customer_name: user.firstName, plan: user.plan });

🔒安全提醒:上下文来自访客浏览器,可被读取和篡改。切勿传递密钥,也不要用它作为权限判断的依据;需要可信数据时,传一个customer_id,让 Agent 通过 Pre-Call Data Fetch 从你的 API 拉取真实详情。

✅ 上线前检查清单

  • HTTPS 要求:语音 Widget 的页面必须用 HTTPS 或localhost服务,否则浏览器拒绝麦克风权限;
  • Allowed Domains:若设置了域名白名单,测试环境(如localhost)也要加进去,否则请求会被 403 拒绝;
  • 回调时机:Widget 脚本是异步加载的,注册on*回调要等window.DograhWidget可用后再执行;
  • Token 管理:每个 Workflow 只能有一个激活的 embed token,支持设置使用次数上限和过期时间(默认 30 天),相关端点见 api/routes/workflow_embed.py;
  • 公开接口安全:嵌入组件走的是免登录的公开接口/public/embed,内置 Origin 域名校验与 CORS 控制,实现见 api/routes/public_embed.py 和 api/routes/public_embed_chat.py。

📖 参考资料

资料路径
官方嵌入文档(含 React / Vanilla JS 完整示例)docs/voice-agent/add-to-website.mdx
Widget 嵌入配置界面源码ui/src/app/workflow/[workflowId]/components/EmbedDialog.tsx
嵌入 Token 与使用量管理api/db/embed_token_client.py
通话记录查看docs/images/conversation-history.png 所在文档

照着上面的步骤,十分钟以内你就能把 Dograh 语音 AI 聊天/通话组件嵌入到任何网站。更多节点级配置(提示词、工具、知识库)可参考 docs/voice-agent/ 下的官方文档。

【免费下载链接】dograhOpen source voice AI platform. Self-hosted alternative to Vapi and Retell. On Prem, BYOK across Speech to Speech or LLM/STT/TTS, with a visual workflow builder, MCP native and telephony support.项目地址: https://gitcode.com/GitHub_Trending/do/dograh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询