Files
Vlad Morozov a3cdf46210 update demo
2025-04-22 19:38:59 +03:00

67 lines
1.4 KiB
TypeScript

import { TaskMode, TaskType } from "@heygen/streaming-avatar";
import { useCallback } from "react";
import { useStreamingAvatarContext } from "./context";
export const useTextChat = () => {
const { avatarRef } = useStreamingAvatarContext();
const sendMessage = useCallback(
(message: string) => {
if (!avatarRef.current) return;
avatarRef.current.speak({
text: message,
taskType: TaskType.TALK,
taskMode: TaskMode.ASYNC,
});
},
[avatarRef],
);
const sendMessageSync = useCallback(
async (message: string) => {
if (!avatarRef.current) return;
return await avatarRef.current?.speak({
text: message,
taskType: TaskType.TALK,
taskMode: TaskMode.SYNC,
});
},
[avatarRef],
);
const repeatMessage = useCallback(
(message: string) => {
if (!avatarRef.current) return;
return avatarRef.current?.speak({
text: message,
taskType: TaskType.REPEAT,
taskMode: TaskMode.ASYNC,
});
},
[avatarRef],
);
const repeatMessageSync = useCallback(
async (message: string) => {
if (!avatarRef.current) return;
return await avatarRef.current?.speak({
text: message,
taskType: TaskType.REPEAT,
taskMode: TaskMode.SYNC,
});
},
[avatarRef],
);
return {
sendMessage,
sendMessageSync,
repeatMessage,
repeatMessageSync,
};
};