diff --git a/README.md b/README.md
index c90f7a3..2cb00e9 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,8 @@
1. 需要准备两个 Terminal,分别启动服务端、前端页面。
2. **根据你自定义的
RoomId、UserId 以及申请的 AppID、BusinessID(如有)、Token、ASR AppID、TTS AppID,修改 `src/config/config.ts` 文件中 `ConfigFactory` 中 `BaseConfig` 的配置信息**。
-3. 使用火山引擎控制台账号的 [AK、SK](https://console.volcengine.com/iam/keymanage)、[SessionToken](https://www.volcengine.com/docs/6348/1315561#sub)(临时token, 子账号才需要), 修改 `Server/app.js` 文件中的 `ACCOUNT_INFO`。
-4. 您需要在 [火山方舟-在线推理](https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D) 中创建接入点, 并将模型对应的接入点 ID 填入 `src/config/common.ts` 文件中的 `ARK_V3_MODEL_ID`, 否则无法正常启动智能体。
+3. 使用火山引擎控制台账号的 [AK、SK](https://console.volcengine.com/iam/keymanage?s=g)、[SessionToken](https://www.volcengine.com/docs/6348/1315561#sub?s=g)(临时token, 子账号才需要), 修改 `Server/app.js` 文件中的 `ACCOUNT_INFO`。
+4. 您需要在 [火山方舟-在线推理](https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D&s=g) 中创建接入点, 并将模型对应的接入点 ID 填入 `src/config/common.ts` 文件中的 `ARK_V3_MODEL_ID`, 否则无法正常启动智能体。
5. 如果您已经自行完成了服务端的逻辑,可以不依赖 Demo 中的 Server,直接修改前端代码文件 `src/config/index.ts` 中的 `AIGC_PROXY_HOST` 请求域名和接口,并在 `src/app/api.ts` 中修改接口的参数配置 `APIS_CONFIG`。
## 快速开始
@@ -42,18 +42,18 @@ yarn dev
### 常见问题
| 问题 | 解决方案 |
| :-- | :-- |
-| **启动智能体之后, 对话无反馈,或者一直停留在 "AI 准备中, 请稍侯"** |
可能因为控制台中相关权限没有正常授予,请参考[流程](https://www.volcengine.com/docs/6348/1315561)再次确认下是否完成相关操作。此问题的可能性较大,建议仔细对照是否已经将相应的权限开通。参数传递可能有问题, 例如参数大小写、类型等问题,请再次确认下这类型问题是否存在。相关资源可能未开通或者用量不足,请再次确认。**请检查当前使用的模型 ID 等内容都是正确且可用的。** |
-| `Server/app.js` 中的 `sessionToken` 是什么,该怎么填,为什么要填 | `sessionToken` 是火山引擎子账号发起 OpenAPI 请求时所必须携带的临时 Token,获取方式可参考 [此文章末尾](https://www.volcengine.com/docs/6348/1315561)。 |
+| **启动智能体之后, 对话无反馈,或者一直停留在 "AI 准备中, 请稍侯"** | 可能因为控制台中相关权限没有正常授予,请参考[流程](https://www.volcengine.com/docs/6348/1315561?s=g)再次确认下是否完成相关操作。此问题的可能性较大,建议仔细对照是否已经将相应的权限开通。参数传递可能有问题, 例如参数大小写、类型等问题,请再次确认下这类型问题是否存在。相关资源可能未开通或者用量不足,请再次确认。**请检查当前使用的模型 ID 等内容都是正确且可用的。** |
+| `Server/app.js` 中的 `sessionToken` 是什么,该怎么填,为什么要填 | `sessionToken` 是火山引擎子账号发起 OpenAPI 请求时所必须携带的临时 Token,获取方式可参考 [此文章末尾](https://www.volcengine.com/docs/6348/1315561?s=g)。 |
| **浏览器报了 `Uncaught (in promise) r: token_error` 错误** | 请检查您填在项目中的 RTC Token 是否合法,检测用于生成 Token 的 UserId、RoomId 是否与项目中填写的一致。 |
| [StartVoiceChat]Failed(Reason: The task has been started. Please do not call the startup task interface repeatedly.) 报错 | 由于目前设置的 RoomId、UserId 为固定值,重复调用 startAudioBot 会导致出错,只需先调用 stopAudioBot 后再重新 startAudioBot 即可。 |
-| 为什么我的麦克风正常、摄像头也正常,但是设备没有正常工作? | 可能是设备权限未授予,详情可参考 [Web 排查设备权限获取失败问题](https://www.volcengine.com/docs/6348/1356355)。 |
+| 为什么我的麦克风正常、摄像头也正常,但是设备没有正常工作? | 可能是设备权限未授予,详情可参考 [Web 排查设备权限获取失败问题](https://www.volcengine.com/docs/6348/1356355?s=g)。 |
| 接口调用时, 返回 "Invalid 'Authorization' header, Pls check your authorization header" 错误 | `Server/app.js` 中的 AK/SK/SessionToken 不正确 |
-| 什么是 RTC | **R**eal **T**ime **C**ommunication, RTC 的概念可参考[官网文档](https://www.volcengine.com/docs/6348/66812)。 |
-| 不清楚什么是主账号,什么是子账号 | 可以参考[官方概念](https://www.volcengine.com/docs/6257/64963?hyperlink_open_type=lark.open_in_browser) 。|
+| 什么是 RTC | **R**eal **T**ime **C**ommunication, RTC 的概念可参考[官网文档](https://www.volcengine.com/docs/6348/66812?s=g)。 |
+| 不清楚什么是主账号,什么是子账号 | 可以参考[官方概念](https://www.volcengine.com/docs/6257/64963?hyperlink_open_type=lark.open_in_browser&s=g) 。|
如果有上述以外的问题,欢迎联系我们反馈。
### 相关文档
-- [场景介绍](https://www.volcengine.com/docs/6348/1310537)
-- [Demo 体验](https://www.volcengine.com/docs/6348/1310559)
-- [场景搭建方案](https://www.volcengine.com/docs/6348/1310560)
+- [场景介绍](https://www.volcengine.com/docs/6348/1310537?s=g)
+- [Demo 体验](https://www.volcengine.com/docs/6348/1310559?s=g)
+- [场景搭建方案](https://www.volcengine.com/docs/6348/1310560?s=g)
diff --git a/src/app/type.ts b/src/app/type.ts
index a2ece20..af474a6 100644
--- a/src/app/type.ts
+++ b/src/app/type.ts
@@ -12,7 +12,7 @@ export enum ACTIONS {
/**
* @brief 请求参数类型
* @note OpenAPI 接口参数结构可能更新, 请参阅最新文档内容。
- * https://www.volcengine.com/docs/6348/1404673
+ * https://www.volcengine.com/docs/6348/1404673?s=g
*/
export interface RequestParams {
/**
diff --git a/src/config/common.ts b/src/config/common.ts
index af18644..0aeb7fc 100644
--- a/src/config/common.ts
+++ b/src/config/common.ts
@@ -27,7 +27,7 @@ export enum CustomParamsType {
* @brief AI 音色可选值
* @default 通用女声
* @notes 通用女声、通用男声为默认音色, 其它皆为付费音色。
- * 音色 ID 可于 https://console.volcengine.com/speech/service/8 中开通获取。
+ * 音色 ID 可于 https://console.volcengine.com/speech/service/8?s=g 中开通获取。
* 对应 "音色详情" 中, "Voice_type" 列的值。
*/
export enum VOICE_TYPE {
@@ -104,7 +104,7 @@ export const AI_MODE_MAP: Partial> = {
/**
* @brief 豆包模型的 ID
- * @note 具体的模型 ID 请至 https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D 参看/创建
+ * @note 具体的模型 ID 请至 https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D&s=g 参看/创建
* 模型 ID 即接入点 ID, 在上述链接中表格内 "接入点名称" 列中, 类似于 "ep-2024xxxxxx-xxx" 格式即是模型 ID。
*/
export const ARK_V3_MODEL_ID: Partial> = {
diff --git a/src/config/config.ts b/src/config/config.ts
index 98ab0b0..a86f642 100644
--- a/src/config/config.ts
+++ b/src/config/config.ts
@@ -23,12 +23,12 @@ export const CONVERSATION_SIGNATURE = 'conversation';
/**
* @brief RTC & AIGC 配置。
* @notes 更多参数请参考
- * https://www.volcengine.com/docs/6348/1404673
+ * https://www.volcengine.com/docs/6348/1404673?s=g
*/
export class ConfigFactory {
BaseConfig = {
/**
- * @note 必填, RTC AppId 可于 https://console.volcengine.com/rtc/listRTC 中获取。
+ * @note 必填, RTC AppId 可于 https://console.volcengine.com/rtc/listRTC?s=g 中获取。
*/
AppId: 'Your RTC AppId',
/**
@@ -45,20 +45,20 @@ export class ConfigFactory {
UserId: 'User123',
/**
* @brief 必填, RTC Token, 由 AppId、RoomId、UserId、时间戳等等信息计算得出。
- * 测试跑通时,可于 https://console.volcengine.com/rtc/listRTC 列表中,
+ * 测试跑通时,可于 https://console.volcengine.com/rtc/listRTC?s=g 列表中,
* 找到对应 AppId 行中 "操作" 列的 "临时Token" 按钮点击进行生成, 用于本地 RTC 通信进房鉴权校验。
- * 正式使用时可参考 https://www.volcengine.com/docs/6348/70121 通过代码生成 Token。
+ * 正式使用时可参考 https://www.volcengine.com/docs/6348/70121?s=g 通过代码生成 Token。
* 建议先使用临时 Token 尝试跑通。
* @note 生成临时 Token 时, 页面上的 RoomId / UserId 填的与此处的 RoomId / UserId 保持一致。
*/
Token: 'Your RTC Token',
/**
- * @brief 必填, TTS(语音合成) AppId, 可于 https://console.volcengine.com/speech/app 中获取, 若无可先创建应用。
+ * @brief 必填, TTS(语音合成) AppId, 可于 https://console.volcengine.com/speech/app?s=g 中获取, 若无可先创建应用。
* @note 创建应用时, 需要选择 "语音合成" 服务, 并选择对应的 App 进行绑定。
*/
TTSAppId: 'Your TTS AppId',
/**
- * @brief 必填, ASR(语音识别) AppId, 可于 https://console.volcengine.com/speech/app 中获取, 若无可先创建应用。
+ * @brief 必填, ASR(语音识别) AppId, 可于 https://console.volcengine.com/speech/app?s=g 中获取, 若无可先创建应用。
* @note 创建应用时, 需要按需根据语言选择 "流式语音识别" 服务, 并选择对应的 App 进行绑定。
*/
ASRAppId: 'Your ASR AppId',
@@ -138,13 +138,13 @@ export class ConfigFactory {
ProviderParams: {
/**
* @note 本示例代码使用的是小模型语音识别, 如感觉 ASR 效果不佳,可尝试使用大模型进行语音识别。
- * 大模型的使用详情可参考 https://www.volcengine.com/docs/6348/1404673#volcanolmasrconfig
+ * 大模型的使用详情可参考 https://www.volcengine.com/docs/6348/1404673#volcanolmasrconfig?s=g
*/
Mode: 'smallmodel',
AppId: this.BaseConfig.ASRAppId,
/**
* @note 具体流式语音识别服务对应的 Cluster ID,可在流式语音服务控制台开通对应服务后查询。
- * 具体链接为: https://console.volcengine.com/speech/service/16
+ * 具体链接为: https://console.volcengine.com/speech/service/16?s=g
*/
Cluster: 'volcengine_streaming_common',
},
diff --git a/src/utils/handler.ts b/src/utils/handler.ts
index 79791c7..ef7fc67 100644
--- a/src/utils/handler.ts
+++ b/src/utils/handler.ts
@@ -82,7 +82,7 @@ export const useMessageHandler = () => {
const maps = {
/**
* @brief 接收状态变化信息
- * @note https://www.volcengine.com/docs/6348/1415216
+ * @note https://www.volcengine.com/docs/6348/1415216?s=g
*/
[MESSAGE_TYPE.BRIEF]: (parsed: AnyRecord) => {
const { Stage } = parsed || {};
@@ -102,7 +102,7 @@ export const useMessageHandler = () => {
},
/**
* @brief 字幕
- * @note https://www.volcengine.com/docs/6348/1337284
+ * @note https://www.volcengine.com/docs/6348/1337284?s=g
*/
[MESSAGE_TYPE.SUBTITLE]: (parsed: AnyRecord) => {
const data = parsed.data?.[0] || {};
@@ -123,7 +123,7 @@ export const useMessageHandler = () => {
},
/**
* @brief Function calling
- * @note https://www.volcengine.com/docs/6348/1359441
+ * @note https://www.volcengine.com/docs/6348/1359441?s=g
*/
[MESSAGE_TYPE.FUNCTION_CALL]: (parsed: AnyRecord) => {
const name: string = parsed?.tool_calls?.[0]?.function?.name;