Member Junction
    Preparing search index...

    Implementation of the Twilio provider for sending and receiving messages (SMS, WhatsApp, Facebook Messenger)

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    • get MessageRetrieval(): MessageRetrievalCapabilities

      What this provider can narrow on when reading messages. See MessageRetrievalCapabilities.

      Deliberately declares nothing supported. A provider that can push a filter down overrides this and says so; one that has not been updated keeps describing itself accurately instead of promising a filter it silently ignores.

      Returns MessageRetrievalCapabilities

    • get ProviderName(): string

      Returns the name of this provider for use in error messages. Override in subclasses to provide a more descriptive name.

      Returns string

    • get SupportsPush(): boolean

      Convenience gate: true when this provider supports inbound push in ANY form (subscription-managed or inbound-parse), false otherwise. Lets callers cleanly short-circuit — if (provider.SupportsPush) { ... } — instead of probing individual operations.

      Derived from GetSubscriptionCapabilities so it stays in lockstep with actual capability: providers that support push return capabilities and thereby report SupportsPush === true for free; providers that don't return undefined and report false. Subclasses normally do NOT override this — override GetSubscriptionCapabilities instead.

      Returns boolean

    Methods

    • Reads calendar events for one identifier.

      CONCRETE, NOT ABSTRACT, and deliberately so: making it abstract would break every existing provider at compile time for a capability most of them will never have. A provider that supports it overrides this and adds 'GetEvents' to getSupportedOperations(); everything else inherits a refusal that NAMES ITSELF, so a caller learns which provider declined rather than receiving an empty list it cannot distinguish from an empty calendar.

      That distinction is the whole reason this returns Success:false rather than {Events: []}. "This provider cannot look" and "there was nothing in the window" are different facts, and a caller advancing a watermark must not treat the first as the second.

      Parameters

      Returns Promise<GetEventsResult<Record<string, any>>>

    • Parses and verifies an inbound Twilio SMS webhook. Pure: no Twilio client, no network. Safe on hostile/garbage input — never throws; returns Success: false with a 400 suggested status when the body cannot be parsed at all.

      Twilio posts application/x-www-form-urlencoded. The X-Twilio-Signature header is verified via the SDK's validateRequest(authToken, signature, url, params) using the account Auth Token (the "Messaging webhook signature" secret). The parsed notification is ALWAYS returned even when the signature is invalid — the flag is set so the consumer can decide — but an unparseable body is the 400 case.

      INLINE mode: the webhook carries the full message, so NormalizedNotification.Message is populated and consumers need not re-fetch. MessageSid is also surfaced in NormalizedNotification.MessageIDs as a still-useful pointer.

      Parameters

      Returns Promise<ParseNotificationResult>

      Promise - The normalized inbound message + signature outcome