SMS integration
Use submit_sms(phone_or_list, message) for SMSSubmissionResult; send_sms
retains its provider-specific raw representation. See API reference.
Credentials and recipient formats
AlphaSMS uses an API key, GreenWeb a token, and BulkSMSBD a key/sender ID. Keep
credentials in environment/settings, never checked-in examples. The SDK preserves
phone strings and joins lists for submission; it does not normalize international
prefixes or enforce a universal phone format. Provider format, batch-size,
encoding, sender approval and content restrictions must be checked independently.
The offline samples use synthetic 01700000000 with no subscriber validation.
BulkSMSBD's legacy HTTP default is rejected unless insecure transport is explicitly allowed. HTTPS reachability does not verify HTTPS SMS POST support. Do not use the insecure opt-in as a default quickstart; its codes and success semantics remain unverified. See the contract audit.
Submission, partial results and delivery
AlphaSMS's documented successful submission maps to ACCEPTED; it does not verify
handset delivery. BulkSMSBD's legacy integer 202 remains UNKNOWN. GreenWeb's
structured SENT maps to accepted submission, FAILED to failure, and unrecognized
entries remain unknown. Mixed entries produce PARTIAL.
GreenWeb raises SMSBatchError for failed or unknown batch entries. Inspect its
normalized_result (or raw list-compatible results) before deciding what to do.
Do not resend the entire batch. response_index describes the response order;
recipient fields may be absent and ordering against the request is not guaranteed.
An unknown recipient requires reconciliation rather than index-based guessing.
The application example converts results into safe response
metadata and preserves partial/unknown states, without returning recipient data.
raw, results, recipient, and vendor messages may contain personal data;
store evidence with access controls and retention limits. Unknown timeouts may
follow a successful submission, so retrying can duplicate SMS. Jukto does not
supply a delivery-receipt API or generic idempotency/failover mechanism.