Skip to content

Instantly share code, notes, and snippets.

@ShaRose
Created August 22, 2021 23:41
Show Gist options
  • Save ShaRose/0e78fd48ef3b570f7325f99821d18893 to your computer and use it in GitHub Desktop.
Save ShaRose/0e78fd48ef3b570f7325f99821d18893 to your computer and use it in GitHub Desktop.
freepbx extension code for SMS via sip message
[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()
COPY THIS PART FOR EACH DID
exten => T_{DEST_DID_NUMBER},1,MessageSend(pjsip:{DEST_EXT}@{HOST_TO},{ACTUAL_FROM})
exten => T_{DEST_DID_NUMBER},n,NoOp(Send status is {MESSAGE_SEND_STATUS})
exten => T_{DEST_DID_NUMBER},n,Return()
[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)})
COPY THIS PART FOR EACH DID
exten => _.,n,Set(CASE_{DEST_EXT}={DEST_DID_NUMBER})
exten => _.,n,Set(NUMBER_FROM=${CASE_${EXTENSION_FROM}})
exten => _.,n,GosubIf($[${LEN(${NUMBER_TO})} = 7]?sms-out,PAD,1)
exten => _.,n,Gosub(sms-out,F_${NUMBER_FROM},1)
exten => _.,n,Hangup()
exten => PAD,1,NoOp(Padding ${NUMBER_TO} with {DEFAULT_AREA_CODE})
exten => PAD,n,Set(NUMBER_TO={DEFAULT_AREA_CODE}${NUMBER_TO})
exten => PAD,n,Return()
COPY THIS PART FOR EACH DID
exten => F_{DEST_DID_NUMBER},1,Set(ACTUAL_FROM="${NUMBER_FROM}" <sip:{TRUNK_USER}@{TRUNK_ADDR}>)
exten => F_{DEST_DID_NUMBER},n,Set(ACTUAL_TO=pjsip:{TRUNK_NAME}/sip:${NUMBER_TO}@{TRUNK_ADDR})
exten => F_{DEST_DID_NUMBER},n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
exten => F_{DEST_DID_NUMBER},n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => F_{DEST_DID_NUMBER},n,Return()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment