Skip to content

Commit 840fac7

Browse files
committed
add enableAmplitudeMonitoring
1 parent a3e1448 commit 840fac7

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

src/index.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ interface UseLayercodeAgentOptions {
1919

2020
audioInput?: boolean;
2121
onAudioInputChanged?: (audioInput: boolean) => void;
22+
enableAmplitudeMonitoring?: boolean;
2223
}
2324

2425
/**
@@ -47,10 +48,13 @@ const useLayercodeAgent = (
4748
onAudioInputChanged,
4849
} = options;
4950
const websocketUrlOverride = options['_websocketUrl'];
51+
const enableAmplitudeMonitoring = options.enableAmplitudeMonitoring ?? true;
5052

5153
const [status, setStatus] = useState('initializing');
5254
const [userAudioAmplitude, setUserAudioAmplitude] = useState(0);
5355
const [agentAudioAmplitude, setAgentAudioAmplitude] = useState(0);
56+
const [userSpeaking, setUserSpeaking] = useState(false);
57+
const [assistantSpeaking, setAssistantSpeaking] = useState(false);
5458
const [audioInput, _setAudioInput] = useState<boolean>(options.audioInput ?? true);
5559
const [isMuted, setIsMuted] = useState(false);
5660
const [internalConversationId, setInternalConversationId] = useState<string | null | undefined>(conversationId);
@@ -67,6 +71,13 @@ const useLayercodeAgent = (
6771
}
6872
}, [conversationId]);
6973

74+
useEffect(() => {
75+
if (!enableAmplitudeMonitoring) {
76+
setUserAudioAmplitude(0);
77+
setAgentAudioAmplitude(0);
78+
}
79+
}, [enableAmplitudeMonitoring]);
80+
7081
const createClient = useCallback(
7182
(initialConversationId: string | null) => {
7283
console.log('Creating LayercodeClient instance');
@@ -105,22 +116,35 @@ const useLayercodeAgent = (
105116
onStatusChange: (newStatus: string) => {
106117
setStatus(newStatus);
107118
},
108-
onUserAmplitudeChange: (amplitude: number) => {
109-
setUserAudioAmplitude(amplitude);
119+
onUserAmplitudeChange: enableAmplitudeMonitoring
120+
? (amplitude: number) => {
121+
setUserAudioAmplitude(amplitude);
122+
}
123+
: undefined,
124+
onAgentAmplitudeChange: enableAmplitudeMonitoring
125+
? (amplitude: number) => {
126+
setAgentAudioAmplitude(amplitude);
127+
}
128+
: undefined,
129+
onUserIsSpeakingChange: (isSpeaking: boolean) => {
130+
setUserSpeaking(isSpeaking);
110131
},
111-
onAgentAmplitudeChange: (amplitude: number) => {
112-
setAgentAudioAmplitude(amplitude);
132+
onAssistantSpeakingChange: (isSpeaking: boolean) => {
133+
setAssistantSpeaking(isSpeaking);
113134
},
114135
onMuteStateChange: (muted: boolean) => {
115136
setIsMuted(muted);
116137
onMuteStateChange?.(muted);
117138
},
139+
enableAmplitudeMonitoring,
118140
});
119141

120142
if (websocketUrlOverride) {
121143
client._websocketUrl = websocketUrlOverride;
122144
}
123145

146+
setUserSpeaking(false);
147+
setAssistantSpeaking(false);
124148
setIsMuted(client.isMuted);
125149
clientRef.current = client;
126150
return client;
@@ -139,6 +163,7 @@ const useLayercodeAgent = (
139163
onAudioInputChanged,
140164
websocketUrlOverride,
141165
audioInput,
166+
enableAmplitudeMonitoring,
142167
]
143168
);
144169

@@ -234,6 +259,8 @@ const useLayercodeAgent = (
234259
status,
235260
userAudioAmplitude,
236261
agentAudioAmplitude,
262+
userSpeaking,
263+
assistantSpeaking,
237264
isMuted,
238265
conversationId: internalConversationId,
239266
audioInput,

0 commit comments

Comments
 (0)