toJson method

  1. @override
Map<String, dynamic> toJson()
override

Serializes the interaction data to JSON format.

Used for logging, debugging, and network transmission. Must return a JSON-serializable map.

Implementation

@override
Map<String, dynamic> toJson() {
  Map<String, dynamic> payloadJson;

  if (_toJsonConverter != null) {
    payloadJson = _toJsonConverter!(_payload);
  } else if (_payload is Map<String, dynamic>) {
    payloadJson = _payload as Map<String, dynamic>;
  } else {
    // Try to call toJson() method if it exists
    try {
      final dynamic obj = _payload;
      payloadJson = obj.toJson() as Map<String, dynamic>;
    } catch (e) {
      // Fallback to string representation
      payloadJson = {'value': _payload.toString(), 'type': T.toString()};
    }
  }

  return {
    'id': id,
    'payload': payloadJson,
    'payloadType': T.toString(),
    'timeout': timeout?.inMilliseconds,
    'supportsOptimistic': supportsOptimistic,
    'priority': priority,
    'tags': tags.toList(),
  };
}