Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
# Enviroment variables needed to connect to the LiveKit server.
# Environment variables needed to connect to the LiveKit server.
LIVEKIT_API_KEY=<your_api_key>
LIVEKIT_API_SECRET=<your_api_secret>
LIVEKIT_URL=wss://<project-subdomain>.livekit.cloud

# Optional API endpoint override.
NEXT_PUBLIC_CONN_DETAILS_ENDPOINT=/api/connection-details

# Frontdesk room input tracks.
# Backend room input publishes room_video by default.
NEXT_PUBLIC_FRONTDESK_VIDEO_TRACK_NAME=room_video

# Internally used environment variables
APP_CONFIG_ENDPOINT=
Expand Down
8 changes: 5 additions & 3 deletions app-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,10 @@ export interface AppConfig {
showDefaultCameraPreview?: boolean; // 是否默认显示摄像头/视频输入预览
}

const XUNFEI_AUDIO_TRACK_NAME = 'xunfei_audio_track';
const ROOM_INPUT_AUDIO_TRACK_NAME = 'room_audio';
const ROOM_INPUT_VIDEO_TRACK_NAME = 'room_video';
const ROOM_INPUT_VIDEO_TRACK_NAME =
process.env.NEXT_PUBLIC_FRONTDESK_VIDEO_TRACK_NAME || 'room_video';
const BROWSER_VIDEO_TRACK_NAME = 'browser_video_track';
export function buildDefaultVideoTracks(
isBrowserInput: boolean,
Expand Down Expand Up @@ -140,7 +142,7 @@ export const APP_CONFIG_DEFAULTS: AppConfig = {
agentName: undefined,

// 音频过滤配置
excludeAudioTracks: [ROOM_INPUT_AUDIO_TRACK_NAME], // 要排除的音频轨道名称列表
excludeAudioTracks: [XUNFEI_AUDIO_TRACK_NAME, ROOM_INPUT_AUDIO_TRACK_NAME], // 要排除的音频轨道名称列表

// 调试配置
showAudioFilterDebug: process.env.NEXT_PUBLIC_SHOW_AUDIO_DEBUG === 'true' || false, // 是否显示音频过滤调试组件
Expand All @@ -154,7 +156,7 @@ export const APP_CONFIG_DEFAULTS: AppConfig = {
enableSmartParticipantMatching: true, // 启用智能参与者匹配,解决自定义音频track的字幕显示问题
enableTranscriptionDebug: process.env.NEXT_PUBLIC_SHOW_TRANSCRIPTION_DEBUG === 'true' || false, // 转录调试日志
showTranscriptByDefault: true, // 默认显示字幕;文本输入栏由用户点击 text 按钮后展开
userTranscriptionIdentities: ['room_audio_input'], // 用户转录身份标识(自定义音频track)
userTranscriptionIdentities: ['xunfei_service_agent', 'room_input', 'room_audio_input'], // 用户转录身份标识(自定义音频track)
showParticipantNames: false, // 默认不显示参与者名称(user、agent-xxx等)

// 视频轨道配置
Expand Down
9 changes: 8 additions & 1 deletion hooks/useRoom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@ import { readConnectionDetailsResponse } from '@/lib/connection-details-response

export function useRoom(appConfig: AppConfig) {
const aborted = useRef(false);
const room = useMemo(() => new Room(), []);
const room = useMemo(
() =>
new Room({
reconnectPolicy: { nextRetryDelayInMs: () => null },
}),
[]
);
const [isSessionActive, setIsSessionActive] = useState(false);
const handleBrowserVideoError = useCallback((error: Error) => {
toastAlert({
Expand Down Expand Up @@ -134,6 +140,7 @@ export function useRoom(appConfig: AppConfig) {
}

if (appConfig.usesServerRoomInput) {
await room.localParticipant.setMicrophoneEnabled(false);
return;
}

Expand Down
Loading