[sms-in]
exten => _.,1,NoOp(Inbound SMS dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
exten => _.,n,Set(ACTUAL_FROM=${MESSAGE(from)})
exten => _.,n,Set(HOST_TO=${CUT(MESSAGE(to),@,2)})
exten => _.,n,Set(NUMBER_TO=${MESSAGE_DATA(X-SMS-To)})
exten => _.,n,Gosub(sms-in,T_${NUMBER_TO},1)
exten => _.,n,Hangup()
; Message for NXXNXXXXXX route to the the extensions listed below. Replace all instances of the SMS phone number below with yours.
exten => T_NXXNXXXXXX,1,MessageSend(pjsip:1234@${HOST_TO},${ACTUAL_FROM}) ; Replace the extension number with yours.
exten => T_NXXNXXXXXX,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => T_NXXNXXXXXX,n,Return()
; If you have more text enabled phone numbers then add sections below as needed.
[sms-out]
exten => _.,1,NoOp(Outbound Message dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
exten => _.,n,Set(NUMBER_TO=${CUT(CUT(MESSAGE(to),@,1),:,2)})
exten => _.,n,Set(EXTENSION_FROM=${CUT(CUT(MESSAGE(from),@,1),:,2)})
; Here we map the sending EXTENSION_FROM to a corresponding sending NUMBER_FROM before sending it.
exten => _.,n,Set(CASE_1234=NXXNXXXXXX) ; Messages from extension 1234 are to originate from NXXNXXXXXX
exten => _.,n,Set(NUMBER_FROM=${CASE_${EXTENSION_FROM}})
exten => _.,n,Gosub(sms-out,F_${NUMBER_FROM},1)
exten => _.,n,Hangup()
; Messages from NXXNXXXXXX are sent via their corresponding trunk below. Replace all instances of the trunk phone number below with yours.
exten => F_NXXNXXXXXX,1,Set(ACTUAL_FROM="${NUMBER_FROM} <sip:VOIPMS_ACCOUNT@VOIPMS_SERVER_NAME>) ; Replace VOIPMS_ACCOUNT and VOIPMS_SERVER_NAME with their corresponding values
exten => F_NXXNXXXXXX,n,Set(ACTUAL_TO=pjsip:TRUNK_NAME/sip:${NUMBER_TO}@VOIPMS_SERVER_NAME) ; Replace TRUNK_NAME and VOIPMS_SERVER_NAME with their corresponding values
exten => F_NXXNXXXXXX,n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
exten => F_NXXNXXXXXX,n,NoOp(Outbound status is ${MESSAGE_SEND_STATUS})
exten => F_NXXNXXXXXX,n,Return()