diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2002-12-02 02:44:16 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2002-12-02 02:44:16 +0000 |
commit | d765b29b0aab325770b41e9d6297ee7312dfcfe9 (patch) | |
tree | e22dabea48eb3ae36c663cd4d92fd7a9a4abe068 | |
parent | 909f17e6cac6b1b876169ade5755c1ef9fdc5efb (diff) |
Version 0.3.0 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@559 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | apps/app_zapateller.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/apps/app_zapateller.c b/apps/app_zapateller.c index c9e5fdc34..55de6bf31 100755 --- a/apps/app_zapateller.c +++ b/apps/app_zapateller.c @@ -31,8 +31,10 @@ static char *synopsis = "Block telemarketers with SIT"; static char *descrip = " Zapateller(options): Generates special information tone to block telemarketers\n" "from calling you. Returns 0 normally or -1 on hangup. Options is a pipe-delimited\n" -"list of options. The only supported option is 'answer' which will cause the line to\n" -"be answered before playing the tone"; +"list of options. The following options are available: 'answer' causes the line to\n" +"be answered before playing the tone, 'nocallerid' causes Zapateller to only play\n" +"the tone if there is no callerid information available. Options should be\n" +"seperated by | characters.\n"; STANDARD_LOCAL_USER; @@ -42,22 +44,44 @@ static int zapateller_exec(struct ast_channel *chan, void *data) { int res = 0; struct localuser *u; + int answer = 0, nocallerid = 0; + char *c; + char *stringp=NULL; LOCAL_USER_ADD(u); + + stringp=data; + c = strsep(&stringp, "|"); + while(c && strlen(c)) { + if (!strcasecmp(c, "answer")) + answer = 1; + else if (!strcasecmp(c, "nocallerid")) + nocallerid = 1; + + c = strsep(&stringp, "|"); + } + ast_stopstream(chan); if (chan->_state != AST_STATE_UP) { - if (data && !strcasecmp(data, "answer")) + + if (answer) res = ast_answer(chan); if (!res) { res = ast_safe_sleep(chan, 500); } } + if (chan->callerid && nocallerid) { + LOCAL_USER_REMOVE(u); + return res; + } if (!res) res = ast_tonepair(chan, 950, 0, 330, 0); if (!res) res = ast_tonepair(chan, 1400, 0, 330, 0); if (!res) res = ast_tonepair(chan, 1800, 0, 330, 0); + if (!res) + res = ast_tonepair(chan, 0, 0, 1000, 0); LOCAL_USER_REMOVE(u); return res; } |