A completely rebuilt SMS system — a multi-provider gateway you configure per provider, an interactive class & section recipient workflow with phone validation, and optimized bulk sending with per-recipient delivery results.
SMS is now driven by a pluggable provider architecture — a gateway registry, a shared driver contract, and concrete Legacy and Automas drivers. A new SMS Providers admin page lets you pick the active provider and fill in provider-specific credentials, with validation that the gateway is fully configured before anything is sent and sensible fallback endpoint defaults.
Sending to a class or section is now a guided workflow: recipients load from the server with paging and search, invalid numbers are filtered out, and you send only to the students you explicitly check. A number can be corrected inline — the fix is saved with a student change-log entry — and send scoping is tightened so only selected, in-scope students receive the message.
The driver layer gains a sendBulk contract with a safe default that cleans recipients and sends one-by-one, plus an optimized Automas implementation that batches recipients per request and maps each gateway response back to the original recipient. Batch-wide failures are handled consistently, and the service delegates bulk sending to whichever driver is active.
The send flow now classifies raw gateway responses as sent, partial, or failed, logs which provider handled each message, and surfaces clearer admin feedback when a delivery is rejected. SMS logs and settings track the provider used, so history stays auditable across gateways.
Numbers are normalized and validated to Bangladeshi formats before sending, with duplicate and blank entries filtered automatically — cutting wasted sends and failed deliveries from malformed numbers.
Looking for an earlier release? Browse the release archive.