RealtimeEvent.fromJson constructor
Creates a RealtimeEvent from JSON.
Implementation
factory RealtimeEvent.fromJson(Map<String, dynamic> json) {
final type = json['type'] as String;
// Session events
if (type == 'session.created') {
return SessionCreatedEvent.fromJson(json);
}
if (type == 'session.updated') {
return SessionUpdatedEvent.fromJson(json);
}
// Conversation events
if (type == 'conversation.created') {
return ConversationCreatedEvent.fromJson(json);
}
if (type == 'conversation.item.created') {
return ConversationItemCreatedEvent.fromJson(json);
}
if (type == 'conversation.item.deleted') {
return ConversationItemDeletedEvent.fromJson(json);
}
if (type == 'conversation.item.truncated') {
return ConversationItemTruncatedEvent.fromJson(json);
}
// Input audio transcription events
if (type == 'conversation.item.input_audio_transcription.delta') {
return InputAudioTranscriptionDeltaEvent.fromJson(json);
}
if (type == 'conversation.item.input_audio_transcription.completed') {
return InputAudioTranscriptionCompletedEvent.fromJson(json);
}
if (type == 'conversation.item.input_audio_transcription.failed') {
return InputAudioTranscriptionFailedEvent.fromJson(json);
}
if (type == 'conversation.item.input_audio_transcription.segment') {
return InputAudioTranscriptionSegmentEvent.fromJson(json);
}
// Input audio events
if (type == 'input_audio_buffer.committed') {
return InputAudioBufferCommittedEvent.fromJson(json);
}
if (type == 'input_audio_buffer.cleared') {
return InputAudioBufferClearedEvent.fromJson(json);
}
if (type == 'input_audio_buffer.speech_started') {
return InputAudioBufferSpeechStartedEvent.fromJson(json);
}
if (type == 'input_audio_buffer.speech_stopped') {
return InputAudioBufferSpeechStoppedEvent.fromJson(json);
}
// Response events
if (type == 'response.created') {
return ResponseCreatedEvent.fromJson(json);
}
if (type == 'response.done') {
return ResponseDoneEvent.fromJson(json);
}
if (type == 'response.output_item.added') {
return ResponseOutputItemAddedEvent.fromJson(json);
}
if (type == 'response.output_item.done') {
return ResponseOutputItemDoneEvent.fromJson(json);
}
if (type == 'response.content_part.added') {
return ResponseContentPartAddedEvent.fromJson(json);
}
if (type == 'response.content_part.done') {
return ResponseContentPartDoneEvent.fromJson(json);
}
if (type == 'response.text.delta') {
return ResponseTextDeltaEvent.fromJson(json);
}
if (type == 'response.text.done') {
return ResponseTextDoneEvent.fromJson(json);
}
if (type == 'response.audio_transcript.delta') {
return ResponseAudioTranscriptDeltaEvent.fromJson(json);
}
if (type == 'response.audio_transcript.done') {
return ResponseAudioTranscriptDoneEvent.fromJson(json);
}
if (type == 'response.audio.delta') {
return ResponseAudioDeltaEvent.fromJson(json);
}
if (type == 'response.audio.done') {
return ResponseAudioDoneEvent.fromJson(json);
}
if (type == 'response.function_call_arguments.delta') {
return ResponseFunctionCallArgumentsDeltaEvent.fromJson(json);
}
if (type == 'response.function_call_arguments.done') {
return ResponseFunctionCallArgumentsDoneEvent.fromJson(json);
}
// Rate limit event
if (type == 'rate_limits.updated') {
return RateLimitsUpdatedEvent.fromJson(json);
}
// Error event
if (type == 'error') {
return ErrorEvent.fromJson(json);
}
throw FormatException('Unknown realtime event type: $type');
}