; *** START ringall method
; TODO: Need to check for the length of a DIALSTRING to be less than 256 chars:
; If ${COUNT(ADDING_PEER)} + ${COUNT(CURRENT_DIALSTRING)} > 255, then don't add new user
exten => ringall,1,NoOp()
exten => ringall,n,Verbose(1|HUNTGROUP: ringall strategy)
exten => ringall,n,Set(TOTAL_MEMBERS=${HUNT_MEMBERS_COUNT(${Q_ID})})
exten => ringall,n,Exec(${IF($[0${TOTAL_MEMBERS} < 1]?GoSub(error_handler,302,1()):Verbose(1|HUNTGROUP: We have ${TOTAL_MEMBERS} members))})
exten => ringall,n,Set(X=0)
exten => ringall,n,While($[${X} < ${TOTAL_MEMBERS}])
exten => ringall,n,Set(ARRAY(RA_TECH,RA_MEMBER_ID,RA_RRM_MARK)=${HUNT_MEMBERS(${Q_ID},${X})}) ; get tech and ast_user.d
; If tech is GRP, we need to build a string with all the members of the group
exten => ringall,n,GotoIf($[${RA_TECH} != GRP]?skip_grp_build)
exten => ringall,n,Set(TOTAL_GROUP_MEMBERS=${HUNT_GROUP_MEMBERS_COUNT(${RA_MEMBER_ID})})
exten => ringall,n,GotoIf($[0${TOTAL_GROUP_MEMBERS} < 1]?next)
exten => ringall,n,Set(Y=0)
exten => ringall,n,While($[${Y} < ${TOTAL_GROUP_MEMBERS}])
exten => ringall,n,Set(ARRAY(RA_GRP_TECH,RA_GRP_MEMBER_ID)=${HUNT_GROUP_MEMBERS(${RA_MEMBER_ID},${Y})})
exten => ringall,n,Set(ARRAY(RA_GRP_PBX_EXTEN,RA_GRP_USERNAME,RA_GRP_PBX)=${ROUTE_DEVICE(${RA_GRP_MEMBER_ID})})
exten => ringall,n,Set(DIALSTRING=${IF($[${ISNULL(${DIALSTRING})}]?${RA_GRP_TECH}/${RA_GRP_USERNAME}#${RA_GRP_PBX}:${RA_GRP_TECH}/${RA_GRP_USERNAME}#${RA_GRP_PBX}&${DIALSTRING})})
exten => ringall,n,Set(Y=$[${Y} + 1])
exten => ringall,n,EndWhile()
exten => ringall,n,Goto(next)
; Standard DIALSTRING build
exten => ringall,n(skip_grp_build),NoOp()
exten => ringall,n,Set(ARRAY(RA_PBX_EXTEN,RA_USERNAME,RA_PBX)=${ROUTE_DEVICE(${RA_MEMBER_ID})}) ; get ast_user.user_name and ast_pbx.name
exten => ringall,n,Set(DIALSTRING=${IF($[${ISNULL(${DIALSTRING})}]?${RA_TECH}/${RA_USERNAME}#${RA_PBX}:${RA_TECH}/${RA_USERNAME}#${RA_PBX}&${DIALSTRING})})
exten => ringall,n(next),Set(X=$[${X} + 1])
exten => ringall,n,EndWhile()
; *** END ringall method
exten => ringall,n,Verbose(1|HUNTGROUP: ringall strategy now calling: ${DIALSTRING})
exten => ringall,n,Dial(${DIALSTRING},${TIMEOUT})
exten => ringall,n,Goto(no_answer,1)