Discussions
Avatar doesnt respond back
12 days ago by Ahmad
Hello,
Is there any error in this code, becuase the avatar sometimes respond and sometime it doesnt, I think there is an error in the startVoiceChat fucntion
const startSession = async () => {
sessionStarted.current = true;
setIsLoadingSession(true);
setCurrentLoadingStep(0);
try {
const quota = await getHeygenRemainingQuota();
if (quota < 50) {
setDebug("Not enough quota");
return;
}
setCurrentLoadingStep(1);
const token = await fetchAccessToken();
setCurrentLoadingStep(2);
avatar.current = new StreamingAvatar({ token });
avatar.current.on(StreamingEvents.AVATAR_START_TALKING, () => {
handleMicPermission(false);
EndSessionAfterAmountOfTime(heygenTimeoutPlaceHolder);
});
avatar.current.on(StreamingEvents.AVATAR_TALKING_MESSAGE, (message) => {
setCaptionText((prev) => `${prev} ${message.detail.message}`);
EndSessionAfterAmountOfTime(message.timeStamp + 1000 * 12);
});
avatar.current.on(StreamingEvents.AVATAR_STOP_TALKING, () => {
handleMicPermission(true);
setCaptionText("");
EndSessionAfterAmountOfTime(heygenTimeoutPlaceHolder);
});
avatar.current.on(StreamingEvents.STREAM_READY, (event) => {
setStream(event.detail);
EndSessionAfterAmountOfTime(heygenTimeoutPlaceHolder);
});
avatar.current.on(StreamingEvents.USER_START, () => {
console.log("User Started Talking");
// handleInterrupt();
setIsUserTalking(true);
setCaptionText("");
});
avatar.current.on(StreamingEvents.USER_STOP, () => {
setIsUserTalking(false);
});
avatar.current.on(StreamingEvents.USER_END_MESSAGE, (e) => {
console.log("user talking message " +e)
});
avatar.current.on(StreamingEvents.USER_TALKING_MESSAGE, (e) => {
console.log("user talking message " +e)
});
avatar.current.on(StreamingEvents.STREAM_DISCONNECTED, async () => {
await endSession();
});
setCurrentLoadingStep(3);
const res = await avatar.current.createStartAvatar({
avatarName: cardId,
knowledgeId,
quality: AvatarQuality.High,
voice: {
rate: 1.5,
emotion: VoiceEmotion.EXCITED,
},
language,
disableIdleTimeout: true,
});
setCurrentLoadingStep(4);
setData(res);
wait(100);
await handleSpeak("Say: Hello");
setCurrentLoadingStep(5);
setCurrentLoadingStep(6);
await wait(100);
console.log("Starting Voice chat")
await avatar.current.startVoiceChat();
// await handleMicPermission(false);
} catch (error) {
console.error("StartSession Error:", error);
setDebug(error instanceof Error ? error.message : "Unknown error");
} finally {
setIsLoadingSession(false);
}
};