Added variable setting of REDIRECTIONNUMBER on outgoing call.

This commit is contained in:
MelwareDE 2007-04-06 23:00:41 +00:00
parent 84a99f0eda
commit 5685a6950e
3 changed files with 26 additions and 1 deletions

View File

@ -10,6 +10,7 @@ HEAD
- don't send more DATA_B3 messages than allowed by CAPI_MAX_B3_BLOCKS
- added 'k' option to capi receivefax command for not deleting bad faxes
- added b-channel number to channel name for better identification
- added variable setting REDIRECTIONNUMBER on outgoing call
QSIG:
- added support for different qsig variants
- added support for rerouting informations on incoming calls

6
README
View File

@ -393,5 +393,9 @@ REDIRECTINGNUMBER
REDIRECTREASON
If the incoming call was redirected to you, this variable is set
with the reason value.
REDIRECTIONNUMBER
If an outgoing call is redirected, this variable may be set to the
new destination.

View File

@ -3065,6 +3065,7 @@ static void capidev_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsig
_cmsg CMSG2;
struct ast_frame fr = { AST_FRAME_NULL, };
char *p = NULL;
char *p2 = NULL;
int val = 0;
INFO_RESP_HEADER(&CMSG2, capi_ApplID, HEADER_MSGNUM(CMSG), PLCI);
@ -3156,6 +3157,25 @@ static void capidev_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsig
i->owner->cid.cid_rdnis = strdup(p);
}
break;
case 0x0076: /* Redirection Number */
p = capi_number(INFO_IND_INFOELEMENT(CMSG), 2);
p2 = emptyid;
if (INFO_IND_INFOELEMENT(CMSG)[0] > 1) {
val = INFO_IND_INFOELEMENT(CMSG)[1] & 0x70;
if (val == CAPI_ETSI_NPLAN_NATIONAL) {
p2 = capi_national_prefix;
} else if (val == CAPI_ETSI_NPLAN_INTERNAT) {
p2 = capi_international_prefix;
}
}
cc_verbose(3, 1, VERBOSE_PREFIX_3 "%s: info element REDIRECTION NUMBER '(%s)%s'\n",
i->vname, p2, p);
if (i->owner) {
char numberbuf[64];
snprintf(numberbuf, sizeof(numberbuf) - 1, "%s%s", p2, p);
pbx_builtin_setvar_helper(i->owner, "REDIRECTIONNUMBER", numberbuf);
}
break;
case 0x00a1: /* Sending Complete */
cc_verbose(3, 1, VERBOSE_PREFIX_3 "%s: info element Sending Complete\n",
i->vname);