From 9b0b4bf04154bdbb89a8d9f38500c9262fa8b8cf Mon Sep 17 00:00:00 2001 From: Malcolm Davenport Date: Fri, 30 Jul 2004 18:21:54 +0000 Subject: Bug # 2115: Allow Caller TON to be retrieved in the dialplan git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3538 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_zap.c | 4 ++++ include/asterisk/channel.h | 4 +++- pbx.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 726a2905a..3889ed90d 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -443,6 +443,7 @@ static struct zt_pvt { char language[MAX_LANGUAGE]; char musicclass[MAX_LANGUAGE]; char callerid[AST_MAX_EXTENSION]; + int callerton; char lastcallerid[AST_MAX_EXTENSION]; char *origcallerid; /* malloced original callerid */ char callwaitcid[AST_MAX_EXTENSION]; @@ -4409,6 +4410,7 @@ static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int tmp->callerid = strdup(i->callerid); tmp->ani = strdup(i->callerid); } + tmp->callerton = i->callerton; tmp->restrictcid = i->restrictcid; tmp->callingpres = i->callingpres; #ifdef ZAPATA_PRI @@ -7236,6 +7238,8 @@ static void *pri_dchannel(void *vpri) strncpy(pri->pvts[chanpos]->callerid, e->ring.callingnum, sizeof(pri->pvts[chanpos]->callerid)-1); } else pri->pvts[chanpos]->callerid[0] = '\0'; + /* Caller Type Of Number - used to distinguise NANPA from International */ + pri->pvts[chanpos]->callerton = ((e->ring.callingplan) >> 4) & 0x7; strncpy(pri->pvts[chanpos]->rdnis, e->ring.redirectingnum, sizeof(pri->pvts[chanpos]->rdnis) - 1); /* If immediate=yes go to s|1 */ if (pri->pvts[chanpos]->immediate) { diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index cf86318ce..d95aa43ac 100755 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -148,7 +148,9 @@ struct ast_channel { /*! Malloc'd Dialed Number Identifier */ char *dnid; /*! Malloc'd Caller ID */ - char *callerid; + char *callerid; + /*! Caller Type Of Number */ + int callerton; /*! Malloc'd ANI */ char *ani; /*! Malloc'd RDNIS */ diff --git a/pbx.c b/pbx.c index 1a18208fd..279cafd0e 100755 --- a/pbx.c +++ b/pbx.c @@ -896,6 +896,8 @@ static void pbx_substitute_variables_temp(struct ast_channel *c, const char *var *ret = workspace; } else *ret = NULL; + } else if (c && !strcmp(var, "CALLERTON")) { + snprintf(workspace, workspacelen, "%d", c->callerton); } else if (c && !strcmp(var, "DNID")) { if (c->dnid) { strncpy(workspace, c->dnid, workspacelen - 1); -- cgit v1.2.3