|
|
@ -28,6 +28,7 @@ void UAvatarCoreAIRealtime::DeinitAIManager() |
|
|
|
|
|
|
|
|
void UAvatarCoreAIRealtime::ActivateAI() |
|
|
void UAvatarCoreAIRealtime::ActivateAI() |
|
|
{ |
|
|
{ |
|
|
|
|
|
UAIBaseManager::SetNewState(EAvatarCoreAIState::Initializing); |
|
|
UAvatarCoreAIRealtime::ConnectToWebSocket(); |
|
|
UAvatarCoreAIRealtime::ConnectToWebSocket(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -37,9 +38,8 @@ void UAvatarCoreAIRealtime::DeactivateAI() |
|
|
UAIBaseManager::DeactivateAI(); |
|
|
UAIBaseManager::DeactivateAI(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void UAvatarCoreAIRealtime::SendResponse(const FString& Response, bool NotifyDelay = false, bool TriggerResponse = true) |
|
|
void UAvatarCoreAIRealtime::SendResponseChild(const FString& Response, bool NotifyDelay = false, bool TriggerResponse = true) |
|
|
{ |
|
|
{ |
|
|
UAIBaseManager::SendResponse(Response, NotifyDelay, TriggerResponse); |
|
|
|
|
|
UAvatarCoreAIRealtime::CreateConversationItem(Response, EOpenAIRoleType::User, TriggerResponse); |
|
|
UAvatarCoreAIRealtime::CreateConversationItem(Response, EOpenAIRoleType::User, TriggerResponse); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -219,7 +219,7 @@ void UAvatarCoreAIRealtime::ConnectToWebSocket() |
|
|
void UAvatarCoreAIRealtime::DisconnectFromWebSocket() |
|
|
void UAvatarCoreAIRealtime::DisconnectFromWebSocket() |
|
|
{ |
|
|
{ |
|
|
bIsWebsocketConnected = false; |
|
|
bIsWebsocketConnected = false; |
|
|
|
|
|
bIsSessionInitialized = false; |
|
|
UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Disconnected); |
|
|
UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Disconnected); |
|
|
// Clean up all accumulated audio data
|
|
|
// Clean up all accumulated audio data
|
|
|
RequestAudioData.Empty(); |
|
|
RequestAudioData.Empty(); |
|
|
@ -295,7 +295,6 @@ void UAvatarCoreAIRealtime::CreateConversationItem(const FString& message, EOpen |
|
|
|
|
|
|
|
|
if (triggerResponse) { |
|
|
if (triggerResponse) { |
|
|
UAvatarCoreAIRealtime::CreateReseponse(); |
|
|
UAvatarCoreAIRealtime::CreateReseponse(); |
|
|
UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Processing); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -361,9 +360,11 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionError(const FString& Error) |
|
|
|
|
|
|
|
|
void UAvatarCoreAIRealtime::OnWebSocketConnectionConnected() |
|
|
void UAvatarCoreAIRealtime::OnWebSocketConnectionConnected() |
|
|
{ |
|
|
{ |
|
|
BroadcastAILog("OpenAI Websocket connected"); |
|
|
if(!bIsWebsocketConnected) |
|
|
bIsWebsocketConnected = true; |
|
|
{ |
|
|
UAvatarCoreAIRealtime::UpdateSession(); |
|
|
BroadcastAILog("OpenAI Websocket connected"); |
|
|
|
|
|
bIsWebsocketConnected = true; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& Message) |
|
|
void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& Message) |
|
|
@ -423,10 +424,16 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& M |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
else if (TypeString == "session.updated") { |
|
|
else if (TypeString == "session.created") |
|
|
UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Ready); |
|
|
{ |
|
|
|
|
|
UAvatarCoreAIRealtime::UpdateSession(); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
else if (TypeString == "session.updated") |
|
|
|
|
|
{ |
|
|
|
|
|
UAIBaseManager::OnAIReady(); |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Match the request type
|
|
|
// Match the request type
|
|
|
if (TypeParts[0] == "session") |
|
|
if (TypeParts[0] == "session") |
|
|
RequestType = EOpenAIRequestType::session; |
|
|
RequestType = EOpenAIRequestType::session; |
|
|
|