getHandler method

  1. @override
Future<void> Function(RealtimeSessionController controller)? getHandler(
  1. RealtimeEvent e
)
override

Implementation

@override
Future<void> Function(RealtimeSessionController controller)? getHandler(RealtimeEvent e) {
  switch (e) {
    case RealtimeResponseOutputItemDoneEvent(item: RealtimeFunctionCall()):
      return (controller) async {
        final item = e.item as RealtimeFunctionCall;
        if (item.name == metadata.name) {
          try {
            final output = await _doCall(controller, item);
            controller.send(RealtimeConversationItemCreateEvent(item: output, previousItemId: item.id));
            controller.send(RealtimeResponseCreateEvent(response: RealtimeResponseOptions()));
          } catch (err) {
            controller.send(RealtimeConversationItemCreateEvent(
                item: RealtimeFunctionCallOutput(callId: item.callId, output: "Error: ${err}", status: "failed"),
                previousItemId: item.id));
            controller.send(RealtimeResponseCreateEvent(response: RealtimeResponseOptions()));
          }
        }
      };
    default:
      return null;
  }
}