Discussions

Ask a Question
Back to All

How to handle session?

When I end the session and again when I start the session, am getting this error:

Api: https://api.heygen.com/v1/streaming.start

Response: {
"code": 10005,
"message": "session state wrong: closed"
}

Below are my logic's for start and end session.

const handleStartSession = async () => {
    if (!videoEl) {
        console.error("Video element not found.");
        return;
    }

    try {
        setLoading(true);
        const accessToken = await fetchAccessToken();
        const avatar = new StreamingAvatar({ token: accessToken });
        avatarRef.current = avatar;

        const sessionData = await avatar.createStartAvatar({
            avatarName: avatarName,
            quality: "high",
            language: language,
        });

        setSessionId(sessionData.session_id);

        avatar.on(StreamingEvents.STREAM_READY, handleStreamReady);
        avatar.on(StreamingEvents.STREAM_DISCONNECTED, handleStreamDisconnected);
        avatar.on(StreamingEvents.USER_STOP, () => {
            setVoiceStatus("Processing...");
        });
        avatar.on(StreamingEvents.AVATAR_TALKING_MESSAGE, (message) => {
            console.log("avatar message", message)
            handleAvatarMessage(message);
        });
        avatar.on(StreamingEvents.USER_TALKING_MESSAGE, (message) => {
            console.log("user talking message", message)
            handleVoiceMessage(message);
        });
    } catch (error) {
        console.error("Error starting session:", error);
        setLoading(false);
    }
};

const handleEndSession = async () => {
    const avatar = avatarRef.current;
    if (avatar) {
        await avatar.stopAvatar();
        if (videoEl) videoEl.srcObject = null;
        setSessionId("");
    }
};