pespin has submitted this change. ( https://gerrit.osmocom.org/c/docker-playground/+/37494?usp=email )
Change subject: ttcn3-asterisk: extensions.conf: Reject calls if all SIP UAs busy in call ......................................................................
ttcn3-asterisk: extensions.conf: Reject calls if all SIP UAs busy in call
Before this patch, asterisk would ring on local SIP UAs already in a call, which is not the expected behavior for this project.
Related: SYS#7003 Change-Id: Id9e3ead6e28a53793c6cceb6f23d5e6d987521d8 --- M ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf 1 file changed, 38 insertions(+), 7 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified jolly: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve
diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf b/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf index 5688153..fdfae23 100644 --- a/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf +++ b/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf @@ -1,7 +1,6 @@ -[get-valid-endpoints] - +[get-valid-endpoints-500] +; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints exten => s,1,Verbose(5, Entering get-valid-endpoints gosub.) - ; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints same => n,Set(ENDPOINT_1_STATE=${DEVICE_STATE(PJSIP/0501)}) same => n,Set(ENDPOINT_2_STATE=${DEVICE_STATE(PJSIP/0502)}) same => n,Set(ENDPOINT_3_STATE=${DEVICE_STATE(PJSIP/0503)}) @@ -17,10 +16,11 @@ same => n,ExecIf($[${ENDPOINT_4_EXPR} = 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0504)) same => n,Return(${DIALGROUP(CALL_VALID_LIST)})
+ [from-phone]
exten => 0500,1,Verbose(5,${EXTEN}: Call all registered pjsips from ${CALLERID(num)}) - same => n,Gosub(get-valid-endpoints,s,1()) + same => n,Gosub(get-valid-endpoints-500,s,1()) same => n,Set(DIALGROUP(CALL_EVERYONE_LIST)=${GOSUB_RETVAL}) same => n,Set(DIALGROUP(CALL_EVERYONE_LIST,del)=PJSIP/${CALLERID(num)}) ; remove the caller same => n,Dial(${DIALGROUP(CALL_EVERYONE_LIST)}) @@ -39,15 +39,33 @@ same => n,Set(DIALSTATUS=CHANUNAVAIL)
+[get-valid-endpoints-from-volte-ims] +; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints +exten => s,1,Verbose(5, Entering get-valid-endpoints-500 gosub.) + same => n,Set(ENDPOINT_1_STATE=${DEVICE_STATE(PJSIP/0501)}) + same => n,Set(ENDPOINT_2_STATE=${DEVICE_STATE(PJSIP/0502)}) + same => n,Set(ENDPOINT_3_STATE=${DEVICE_STATE(PJSIP/0503)}) + same => n,Set(ENDPOINT_4_STATE=${DEVICE_STATE(PJSIP/0504)}) + same => n,Set(ENDPOINT_1_EXPR=$[$["${ENDPOINT_1_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_1_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_2_EXPR=$[$["${ENDPOINT_2_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_2_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_3_EXPR=$[$["${ENDPOINT_3_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_3_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_4_EXPR=$[$["${ENDPOINT_4_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_4_STATE}" = "ONHOLD"]]) + same => n,Set(DIALGROUP(CALL_VALID_LIST)=) ; clear list + same => n,ExecIf($[${ENDPOINT_1_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0501)) + same => n,ExecIf($[${ENDPOINT_2_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0502)) + same => n,ExecIf($[${ENDPOINT_3_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0503)) + same => n,ExecIf($[${ENDPOINT_4_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0504)) + same => n,Return(${DIALGROUP(CALL_VALID_LIST)}) + + [volte_ims]
exten => _.!,1,Verbose(5,${EXTEN}: Call internal number from ${CALLERID(num)}) same => n,Set(GROUP()=IMSgroup) same => n,GotoIf($[${GROUP_COUNT(IMSgroup)} > 1]?999) - same => n,WaitForPrecondition(10,2000); - same => n,Gosub(get-valid-endpoints,s,1()) + same => n,Gosub(get-valid-endpoints-from-volte-ims,s,1()) same => n,Set(DIALGROUP(CALL_EVERYONE_LIST)=${GOSUB_RETVAL}) - same => n,Set(DIALGROUP(CALL_EVERYONE_LIST,del)=PJSIP/${CALLERID(num)}) ; remove the caller + same => n,WaitForPrecondition(10,2000) same => n,Dial(${DIALGROUP(CALL_EVERYONE_LIST)}) same => n,Hangup(16) same => 999,Verbose(1,${EXTEN}: VoLTE client already busy (${GROUP_COUNT(IMSgroup)}) rejecting call from IMS ${CALLERID(num)})