mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-22 20:01:09 +00:00
* fix(sms): adopt durable ingress drain with ack gated on MessageSid enqueue Twilio inbound webhooks acked 200 then dispatched detached behind a 10-minute in-memory replay guard; Twilio does not reliably retry inbound messages, so a crash between ack and dispatch silently lost the SMS. The raw Twilio form now enqueues durably (event_id = MessageSid, lane per sender) before the TwiML 200; dispatch, retry, dead-letter, and tombstones run through the core drain with a startup + interval pump for restart recovery. Payload/account validation moved to parse-at-dispatch and dead-letters as non-retryable. The replay guard and its saturation 429 path are deleted; 24h/20k tombstones strictly cover the old 10min/10k window. Autoreview P1 (ambiguous non-adopted settlement) rejected with evidence: bindIngressLifecycleToReplyOptions threads onAdopted/onDeferred/onAbandoned into reply admission, so deferral and abandonment settle via core lifecycle callbacks; normal non-adopted return = terminal local handling, matching the Telegram reference mapping (skipped -> completed). Part of #109657 wave 1. * fix(sms): keep ingress payload type internal * fix(sms): preserve Twilio message SID aliases * fix(sms): preserve ingress ordering and timestamps * test(sms): satisfy type and lint gates
SMS OpenClaw channel
Official OpenClaw channel plugin for SMS.
Install
openclaw plugins install @openclaw/sms
Docs
See docs/channels/sms.md in the OpenClaw repository, or the published docs at https://docs.openclaw.ai/channels/sms.