Freeze one action and one symptom
Record node, release, manager identity and authority, ActionID, Destination, To, From, Body or Base64Body choice, non-sensitive variable names, raw response, endpoint/AoR/contact snapshot, resulting Request-URI, transport evidence, protocol response and authorized recipient observation.
Classify the first symptom as rejected action, invalid technology, invalid URI, wrong endpoint or contact, malformed AMI body, no protocol attempt, remote rejection, wrong recipient, client not rendering or missing acknowledgement. Do not merge retries or several recipients into one timeline.
Verify AMI framing and body precedence first
Confirm the action exists on the installed release and that the dedicated manager user has only the required authority. Check header termination, unique ActionID and field boundaries without logging credentials or private content.
Body must not contain newlines. If Base64Body is supplied, validate the source encoding and remember that it takes precedence over Body. A framing or decode defect must be corrected before endpoint, transport or client settings are changed.
Resolve Destination before interpreting To
Expand the exact documented destination form into message technology, endpoint, optional AoR or explicit URI, selected contact and final Request-URI. If Destination was omitted, state that the backwards-compatible To-as-destination behavior was used.
Then inspect the To and From message headers separately. A plausible To header does not prove the Request-URI was correct, and changing only To may leave the same wrong endpoint, contact or network destination in place.
Follow endpoint, contact and transport selection
Capture the current endpoint, default AoR, contact set, URI, DNS answer, transport parameter or scheme, selected transport object and reusable connection where policy permits. Stale contacts, a surprising default endpoint, URI replacement and proxy policy can move the request away from the intended recipient.
Do not infer message reachability from call registration or OPTIONS alone. Reproduce with one approved minimal recipient and change only the first demonstrated routing field.
Separate protocol response from client presentation
Retain one bounded SIP MESSAGE transaction where policy allows: Request-URI, To, From, Content-Type, body length, transport, response code and time. Then check remote policy, client support, notification, display, storage and user acknowledgement independently.
No packet attempt points back to Asterisk routing or handler selection. A remote final response narrows the network path but does not prove the user agent displayed or retained the body. UI absence alone does not prove the request used the wrong destination.
Repair the first proved boundary and retest once
Correct only the demonstrated fault: manager permission, AMI framing, body encoding, technology prefix, Destination form, endpoint/AoR/contact, To or From header, URI or transport, remote policy or client behavior. Retest with one disposable authorized recipient and a negative-recipient control.
Use in-call SendText only when a current channel is actually the owner; do not substitute it merely because out-of-call MessageSend failed. Remove temporary captures. No PBX, action, endpoint, message, packet, recipient or live system was inspected or tested.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk 23 MessageSend AMI action ↗
- Asterisk 22 MessageSend AMI action ↗
- Certified Asterisk 22.8 MessageSend AMI action ↗
- Asterisk 23 MessageSend dialplan application ↗
- Asterisk 23 MESSAGE dialplan function ↗
- Asterisk 23 MESSAGE_DATA dialplan function ↗
- Asterisk 23 ARI endpoints resource ↗
- Asterisk PJSIP transport selection ↗
- Asterisk AMI v2 specification ↗
- Asterisk Manager TCP/IP API ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.