{
  "SchemaVersion": 1,
  "Kind": "sequence",
  "Name": "Donation Reaction",
  "Description": null,
  "Tags": null,
  "CreatedUtc": "2026-07-24T06:52:13.8936735+00:00",
  "Source": {
    "App": "Streaming Hub",
    "AppVersion": "1.0.0.0",
    "ExportedUtc": "2026-07-24T06:52:13.8936736+00:00"
  },
  "Data": {
    "Sequence": {
      "Steps": [
        {
          "ActionId": "OBS.Scene.GetCurrentProgramScene",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "TargetPath": "runtime.result.obs.program-scene.name",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.SetText",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Amount\u0022}]",
            "Text": "{event.payload.Amount} {event.payload.Currency}",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.SetText",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Name\u0022}]",
            "Text": "{event.payload.username}",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.SetText",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Text\u0022}]",
            "Text": "{event.payload.message}",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.SetText",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Text\u0022}]",
            "Text": "",
            "IsEnabled": "True",
            "UseRunCondition": "True",
            "RunConditionExpression": "{event.payload.message}==event.payload.message"
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Scene.Transition",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "SlotId": "Donation-Scene",
            "TransitionName": "Fade",
            "DurationMs": "300",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Filter.Enable",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Color-Correction\u0022}]",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.Show",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Animation\u0022}]",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "Piper.Speak",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Text": "{event.payload.message}",
            "VoiceId": "en_US-lessac-medium",
            "SpeakerId": "",
            "CompletionMode": "StartInBackground",
            "QueueMode": "Queue",
            "LengthScale": "",
            "NoiseScale": "",
            "NoiseWScale": "",
            "OutputPath": "",
            "FileNameTemplate": "piper_speak_{timestamp}.wav",
            "IsEnabled": "True",
            "UseRunCondition": "True",
            "RunConditionExpression": "{event.payload.message}!=event.payload.message"
          },
          "Body": null
        },
        {
          "ActionId": "Core.Delay",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Duration": "8",
            "Unit": "Seconds",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Filter.Disable",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Color-Correction\u0022}]",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Scene.Transition",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "SlotId": "{runtime.result.obs.program-scene.name}",
            "TransitionName": "Fade",
            "DurationMs": "300",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        },
        {
          "ActionId": "OBS.Source.Hide",
          "When": null,
          "Condition": null,
          "TimeoutMs": null,
          "OnError": null,
          "Parameters": {
            "Slots": "[{\u0022SlotId\u0022:\u0022Donation-Animation\u0022}]",
            "IsEnabled": "True",
            "UseRunCondition": "False",
            "RunConditionExpression": ""
          },
          "Body": null
        }
      ],
      "StopOnError": false
    },
    "Signal": {
      "SignalId": "DonationAlerts.DonationReceived",
      "Type": "Plugin",
      "UnavailableReferenceKind": null,
      "UnavailableReferenceId": null,
      "UnavailableReason": null,
      "OriginalLegacyTypeToken": null,
      "PluginConfig": {},
      "TestPresets": [
        {
          "Id": "9f83b5caf4704efc9e794fcfb224dc9b",
          "Name": "Default",
          "Settings": {
            "Text": "test",
            "UserId": "user-1",
            "UserName": "tester"
          }
        },
        {
          "Id": "edb4205e9c9c4af1b72b176f64688845",
          "Name": "Name, text...",
          "Settings": {
            "event.payload.Amount": 10,
            "event.payload.amountDecimal": 1.0,
            "event.payload.channel": "sample",
            "event.payload.Currency": "USD",
            "event.payload.DonationId": "sample",
            "event.payload.message": "the brown fox jumps over the lazy dog",
            "event.payload.raw": {},
            "event.payload.timestampUtc": "2026-07-23T17:45:17.8610048\u002B00:00",
            "event.payload.username": "Best friend of you",
            "Text": "test",
            "UserId": "user-1",
            "UserName": "tester"
          }
        },
        {
          "Id": "4052ca987f584a998c0c76beefe81a0b",
          "Name": "Text is empty",
          "Settings": {
            "event.payload.Amount": 1.0,
            "event.payload.amountDecimal": 1.0,
            "event.payload.channel": "sample",
            "event.payload.Currency": "sample",
            "event.payload.DonationId": "sample",
            "event.payload.message": null,
            "event.payload.raw": {},
            "event.payload.timestampUtc": "2026-07-23T17:45:17.8610048\u002B00:00",
            "event.payload.username": "sample",
            "Text": "test",
            "UserId": "user-1",
            "UserName": "tester"
          }
        }
      ],
      "SelectedTestPresetId": "edb4205e9c9c4af1b72b176f64688845",
      "InstanceId": "29d161b1dcef4e4098f13b654a2864df",
      "TextMatchMode": "Any",
      "TextPattern": null,
      "Channel": null,
      "TimerInterval": "00:01:00",
      "TimerIntervalSeconds": 60,
      "TimerStartDelay": "00:00:00",
      "TimerJitter": "00:00:00",
      "TimerGateVarPath": null,
      "TimerGateExpected": true,
      "TimerOnlyWhenStreamOnline": false,
      "TimerValidationMessage": "",
      "IsTimerConfigurationValid": true,
      "ScheduledMomentMode": "TodayAtTime",
      "ScheduledMomentDate": null,
      "ScheduledMomentTime": "00:00:00",
      "ScheduledMomentStartDelay": "00:00:00",
      "ScheduledMomentGateVarPath": null,
      "ScheduledMomentGateExpected": true,
      "ScheduledMomentEnabled": true,
      "ScheduledMomentDaysOfWeek": null,
      "ScheduledMomentGateMode": "SkipIfFalse",
      "ScheduledMomentGateMaxWait": "00:00:00",
      "ScheduledMomentPastPolicy": "Skip",
      "ScheduledMomentValidationMessage": "",
      "IsScheduledMomentConfigurationValid": true,
      "ThresholdSourceType": "Variable",
      "ThresholdSourceKey": null,
      "ThresholdSourcePath": null,
      "ThresholdNumericField": null,
      "ThresholdOperator": "GreaterOrEqual",
      "ThresholdTargetValue": 0,
      "ThresholdEpsilon": 0,
      "ThresholdSamplingMode": "EventDriven",
      "ThresholdPollingInterval": "00:00:01",
      "ThresholdCrossingOnly": true,
      "ThresholdRearmMode": "Manual",
      "ThresholdGateVarPath": null,
      "ThresholdGateExpected": true,
      "ThresholdOnce": false,
      "ThresholdResetPolicy": "Manual",
      "ThresholdValidationMessage": "",
      "IsThresholdConfigurationValid": true
    }
  }
}