rendered paste bodyThere is a definition for dtmfbuf already.
char dtmfbuf[300];
These are the 5 possible strings that will appear in dtmfbuf
*002044896227#
*002044896227#*6045551212#
*002044896227#*06045551212#
*1381537359#*002044896227#*3592943431012#
*1581537359#*002044896227#*3592943431012#
Here are the variables I need populated. All must be strings. No functions can be used.
IXC_PRESUB
IXC_ANI
IXC_DNIS
IXC_INTL
IXC_CIC
IXC_OZZ
IXC_COUNTRY
IXC_OPERATOR
IXC_CUTTHROUGH
*AABBBBBBBBBB# - source #
*AABBBBBBBBBB#*CCCCCCCCCC# - source # dest #
*AABBBBBBBBBB#*DCCCCCCCCCC# - source # dest #
*EEEFFFFGGG#*AABBBBBBBBBB#*CCCCCCCCCCCCC# - intl # source # dest #
AA = IXC_PRESUB
BBBBBBBBBB = IXC_ANI
CCCCCCCCCC = IXC_DNIS
D = IXC_OPERATOR ("0" = yes, everything else = no)
EEE = IXC_OPEATOR ("138" = no, "158" = yes)
FFFF = IXC_CIC
GGG = IXC_COUNTRY
Here is how I would handle this. You may choose to do it differently.
part_source char[100];
part_dest char[100];
part_intl char[100];
IXC_PRESUB = "0";
IXC_ANI = ""
IXC_DNIS = ""
IXC_INTL = "0"
IXC_CIC = "1537";
IXC_OZZ = "";
IXC_COUNTRY = "1";
IXC_OPERATOR = "0";
IXC_CUTTHROUGH = "0";
if (strlen(dtmfbuf) == 14) {
/* *AABBBBBBBBBB# - source # */
part_source = dtmfbuf;
part_dest[0] = 0;
part_dest[0] = 0;
IXC_CUTTHROUGH = "1";
IXC_PRESUB = substr(part_source ,1,2); - AA
IXC_ANI = substr(part_source ,3,10); - BBBBBBBBBB
} else if (strlen(dtfmbuf) < 28) {
/* *AABBBBBBBBBB#*CCCCCCCCCC# - source # dest # */
/* *AABBBBBBBBBB#*DCCCCCCCCCC# - source # dest # */
part_source = strsep(&dtmfbuf,"#");
part_dest = strsep(&dtmfbuf,"#");
IXC_PRESUB = substr(part_source ,1,2); - AA
IXC_ANI = substr(part_source ,3,10); - BBBBBBBBBB
If substr(part_dest,2,1) == '0' { - D
IXC_OPERATOR = "1";
IXC_DNIS = "1"+substr(part_dest,2,10); - CCCCCCCCCC
} else {
IXC_DNIS = "1"+part_dest; - CCCCCCCCCC
}
} else if (strlen(dtmfbuf) > 28) {
/* *EEEFFFFGGG#*AABBBBBBBBBB#*CCCCCCCCCCCCC# - intl # source # dest # */
part_intl = strsep(&dtmfbuf,'#');
part_source = strsep(&dtmfbuf,"#");
part_dest = strsep(&dtmfbuf,"#")
IXC_INTL = "1";
IXC_OZZ = substr(part_intl,2,3); - EEE
IXC_CIC = substr(part_intl,5,4); - FFFF
IXC_COUNTRY = substr(part_intl,9,3) - GGG
IXC_PRESUB = substr(part_source ,1,2); - AA
IXC_ANI = substr(part_source ,3,10); - BBBBBBBBBB
IXC_DNIS = "011"+part_dest; - CCCCCCCCCC
IF (IXC_OZZ == "158") {
IXC_OPERATOR = "1";
}
}
Example 1:
*002044896227# - Cut Through
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS=""
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_COUNTRY="1"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="1"
Example 2:
*002044896227#*6045551212# - Dial-Around
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="6045551212"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_COUNTRY="1"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="0"
Example 3:
*002044896227#*06045551212# - Dial-Around Operator
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="6045551212"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ=""
IXC_OPERATOR="1"
IXC_COUNTRY="1"
IXC_CUTTHROUGH="0"
Example 4:
*1381537359#*002044896227#*3592943431012# - Dial-Around International
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="3592943431012"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ="138"
IXC_COUNTRY="359"
IXC_OPERATOR="0"
IXC_CUTTHROUGH="0"
Example 5:
*1581537359#*002044896227#*3592943431012# - Dial-Around International - Operator
IXC_PRESUB="00"
IXC_ANI=2044896227
IXC_DNIS="3592943431012"
IXC_INTL="0"
IXC_CIC="1537"
IXC_OZZ="158"
IXC_COUNTRY="359"
IXC_OPERATOR="1"
IXC_CUTTHROUGH="0"