Skip to content

Reference table

Messaging providers

Lists the providers Raven sends through for SMS, WhatsApp, email, push and voice, the receipts each returns, and the checks every message passes first.

Raven sends the hospital's messages to patients and staff through outside providers for push, SMS, WhatsApp, email and voice, and delivers in-app notices itself. This page lists each channel's provider with what it carries and the receipts it returns, then sets out the checks every message passes and how the hospital's provider accounts are held.

Channels and providers

Each outside channel has its own adapter on the platform, which calls the provider and logs every attempt. A receipt is a provider's report of what became of a message once Raven handed it over.

ChannelProviderWhat it carriesReceipts returnedTwo-way
In-appPensieve itselfA short notice to the person's open Pensieve sessionDelivery to the open session, recorded by RavenNo
PushFirebase Cloud MessagingA short notification to each device the person is signed in onA result for each device, naming any device no longer registeredNo
SMSMSG91Text built from a DLT-registered template, sent to Indian mobile numbers under the hospital's registered sender headerDelivery reportsNo
WhatsAppThe WhatsApp Business Platform Cloud APIApproved template messages, and interactive messages with reply buttons and listsSent, delivered, read and failed receiptsYes
EmailAmazon SESEmail from the hospital's verified sender address, with any attachmentsDelivery, bounce and complaint noticesNo
VoiceExotelAn automated call that plays a recorded messageThe status of each callNo

Each message starts in the tool that decides to send it, and Raven handles its delivery. Sentinel hands over the alerts that need a person and each step of an escalation, Gate its appointment notices and Nexus Manager its staff invitations by email. A patient's follow-up reminders reach them through Raven on a channel they agreed to.

Checks before a message leaves

Every message passes the same checks in a fixed order, and a message refused at any of them is kept with the check that stopped it.

  1. 1

    Raven classifies the message

    Each message takes its TRAI category from its template, or else from the request: transactional, service or promotional. A message that names none counts as promotional. The category decides which consent applies and the route an SMS takes.

  2. 2

    Raven finds the contact

    Raven reads the number, address, device or session the channel needs from the person's record, and refuses the message if that contact is missing or invalid.

  3. 3

    Raven checks consent

    Raven reads the person's latest consent entry for the channel and the category, and that entry decides whether the message may go. Consent for transactional and service messages is recorded for each person from the start, and a promotional message needs a grant the person gave.

  4. 4

    Quiet hours apply

    A routine message due inside the person's quiet hours is scheduled for when they end, and an urgent clinical message goes straight away with the override recorded on it.

  5. 5

    Raven renders the template

    Raven builds the text from the template in the person's language, falling back to English and then to the template's base text. Each required value must be supplied or carry a default, so every placeholder is filled before the text reaches a provider.

  6. 6

    Raven checks for health information

    For each outside channel, Cirith Manager and Atlas decide whether the content may travel on it, and a message that would carry protected health information there is refused. An in-app notice stays inside Pensieve and skips this check.

  7. 7

    The limits apply

    The channel must be on for the site, and the message must fit the site's daily and monthly allowance for the channel and the recipient's daily allowance.

  8. 8

    The message is written and counted

    Raven writes the message as pending, or as scheduled for later, and only then do the site's counters for the channel advance.

A scheduled message is checked again when it falls due, and its consent, contact and template must still stand. How consent and quiet hours shape each send is described in communications.

Receipts and status

Raven logs each attempt with its cost and the provider's own identifier for the message, and a later receipt finds its message by that identifier and channel. Every receipt is verified before Raven reads it. A WhatsApp receipt carries an HMAC-SHA256 signature over its raw body, and an Amazon SES notice is checked against the provider's signing key.

A message's status rises through sent, delivered and read, so a receipt that arrives late or twice leaves the higher status standing. Push counts as delivered once any of the person's devices accepts it, and a device reported as unregistered is dropped from their list.

A permanent bounce or a complaint puts the address on the site's email suppression list, and later email to it is refused before the provider is called.

Retries and fallback

A failed attempt is retried a set number of times at widening intervals. A refusal a retry cannot fix, such as a validation failure or incomplete channel settings, ends the message at once with its reason.

An urgent message that has used its retries moves to the next untried channel in the failed channel's fallback order, carrying the original's reference.

Templates

Every outside message is built from a template the hospital has approved, with wording for each channel and each language it offers. A template also holds what its provider expects: the DLT template identifier for SMS, and the name it is registered under on the WhatsApp Business Platform.

An SMS whose template lacks its DLT identifier is refused before MSG91 is called, and a WhatsApp template is sent only once its recorded status is approved.

Conversations on WhatsApp

A patient who writes to the hospital's WhatsApp number is matched to their record by that number, and an unknown number is asked to register at the front desk.

The conversation runs on reply buttons and lists for booking, cancelling or checking an appointment, and Gate makes each change itself. An administrator chooses which services can be booked this way. Raven verifies the signature on every incoming message, drops one the provider delivers twice, and records each turn.

The hospital's provider accounts

SMS, WhatsApp, email and voice each send through the hospital's own provider account, set per site and channel in Raven's channel settings, which need a permission of their own.

providerchoice

The provider the channel sends through.

senderidentity

The identity the provider registered for the hospital: the SMS sender header and DLT entity, the WhatsApp business account and number, or the email sender address.

limitscounts

The site's daily and monthly allowance for the channel, and the allowance for each recipient in a day.

fallback orderlist

The channels an urgent message moves through once its retries are used.

stateon or off

Whether the channel is on. A channel switched off refuses messages with that reason, and one never set up is reported as incomplete.

credentialreference

A reference to the account's credential in the platform's secret store. The settings show the reference alone.

Custody and rotation of each credential follow authentication between systems.

Common confusions

Whose account sends the hospital's messages?

The hospital's own provider account for SMS, WhatsApp, email and voice, set for each site. Raven reads its credential from the secret store at the moment it sends. Push and in-app notices need no provider account of the hospital's.

Why did a message never leave?

One of the checks refused it, and the delivery log keeps the check and its reason, such as withdrawn consent, a missing contact or an empty template value.

Read how Raven carries each message to its person in communications, and how a provider receipt sent twice is recognised in delivery guarantees.