Spectrum Message Trigger
AI-generatedSummary
Starts a workflow when an inbound iMessage text message arrives via a Spectrum Cloud webhook, verifying the HMAC signature and emitting a normalized message record.
Inputs
- Credential: photonSpectrumCloudApi (required) — Project ID and API Key (project secret) from the Spectrum dashboard. Used to register, list, and delete the webhook on Spectrum Cloud.
- filters.phoneNumber — Only fire for messages in the space whose E.164 phone number matches. Phone is taken from space.phone or a dedicated space ID prefix (+number;-;).
- filters.senderAddress — Only fire for messages from this sender ID (case-insensitive match).
- filters.spaceId — Only fire for messages in this exact space ID.
- filters.spaceType — Restrict to 'dm' or 'group' spaces ('any' disables the filter). A space ID containing ';-;' is treated as a DM.
- advancedOptions.signingSecret — Overrides the signing secret saved at webhook registration, used to verify the request signature.
Output shape
One item per accepted message, with fields: event, webhookId, eventHeader, messageId, platform, direction, spaceId, spaceType (dm/group), phone, sender, senderPlatform, timestamp, text. Missing values are null.
Only 'messages' events with text content on the iMessage platform (or unspecified platform) that pass the filters trigger the workflow. All other requests (non-text, other platforms, filtered out) get a 200 'ok' response and no execution. Signature failures, missing headers, a timestamp more than 5 minutes old, or an unregistered webhook return a descriptive response text and no execution. The filters and advancedOptions parameters are read in the source but not declared in the properties JSON shown, so they may not appear in the UI.
Examples
Example 1: Auto-reply bot for direct iMessages to a specific Spectrum number
Select Spectrum Cloud credential; set filters.phoneNumber to +15551234567 and spaceType to dm; activate the workflow so the webhook registers.
Example 2: Log all group texts to a spreadsheet
Set spaceType to group; map text, sender, spaceId, and timestamp into a Sheets node.
Example 3: Handle messages from one known contact
Set filters.senderAddress to the contact's address; route the text field to downstream logic.