Here you can see the solution based on your requirement(70%)
[FBII_MAIN]
exten => s,1,NoOp(----- ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} CONTEXT: FBII_MAIN PARAM: ${CALLERID(num)} -----)
exten => s,n,Macro(FBII_CONF)
exten => s,n,Playback(${READPROMT})
exten => s,n,Read(NUMTODIAL,,14,,,26)
exten => s,n,ExecIf($[${REGEX("${FILTER(0-9,${NUMTODIAL:0:2})}" ${C_PREFIX0})} = 1]?Macro(FBII_SET_PREFIX,PREFIX0))
exten => s,n,ExecIf($[${REGEX("${FILTER(0-9,${NUMTODIAL:0:2})}" ${C_PREFIX1})} = 1]?Macro(FBII_SET_PREFIX,PREFIX1))
exten => s,n,GoTo(FBII_DIAL,s,1)
[FBII_DIAL]
exten => s,1,NoOp(----- ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} CONTEXT: FBII_DIAL PARAM: ${CALLERID(num)} -----)
exten => s,n, //Here will be logic of dial )))
[macro-FBII_CONF]
exten => s,1,NoOp(----- ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} CONTEXT: macro-FBII_CONF -----)
exten => s,n,Set(C_BOX=E164)
exten => s,n,Set(C_PREFIX0="07, 03, 02, 08")
exten => s,n,Set(PREFIX0=61)
exten => s,n,Set(C_PREFIX1="01, 09")
exten => s,n,Set(PREFIX1=22)
exten => s,n,MacroExit()
[macro-FBII_SET_PREFIX]
exten => s,1,NoOp(----- ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} CONTEXT: macro-FBII_SET_PREFIX PARAM: PARAM: ${MSISDN} ${PREFIX0} -----)
exten => s,n,Set(__NUMTODIAL=${C_BOX}${${ARG1}}${NUMTODIAL:2})
exten => s,n,MacroExit()
I will wait for your decision
Thank you!
PS: Please pay attention to my current post !!!!!