I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure announcing
it will make duplication of effort less likely. It should be regarded as in
development and not run in a production environment (in case dial adversely
alters the channel structure for subsequent dials - tips welcome here) - but
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using the
current priority. One argument must be passed - HUNT_VARIABLE_name. A second
argument skipdev (generally, the calling resource) will be skipped over - or
if a timeout (or any additional dial options) are defined it will be dialed
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect until
new options are encountered in any HUNT_VARIABLE element. These will in turn
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
/*
* Asterisk -- A telephony toolkit for Linux.
*
* Hunt Implementation
*
* This program hunts through a series of extensions until one is picked =
up.
* It is based on various Asterisk programs.=20
*=20
* Written March 2003 by=20
* John Harragin <jharragi@mw.k12.ny.us>
*
* Copyright (C) 2003, Digium
*
* Mark Spencer <markster@digium.com>
*
* This program is free software, distributed under the terms of
* the GNU General Public License
*/
// These next two macros must be defined in quotes
#ifndef DFT_HUNT_TaO
#define DFT_HUNT_TaO 10
#endif
// DFT_SKIP_TaO may be defined externally for example
//#define DFT_SKIP_TaO 8|t
#define MAX_ARGS 24
// These next 2 macros are to get quotes around DFT_HUNT_TaO =
substitution
#define _xstr(s) _str(s)
#define _str(s) #s
static char *tdesc =3D "Extension Hunt.";
// a special hangup code could be added to dial to continuation into =
voicemail
// I would need to keep better tabs on priority numbering
//I can add default overides for timeout, ring...
//hunt(HUNT_VAR,$skipdev,timeoutoverride,ringoverride,dialflags)
//I might add skipdev|timeout - if timeout specified, skipdev rings - =
first
static char *descrip =3D
"Hunt(HUNT_VARIABLE_name|arg1|arg2...): Executes a hunt pattern using =
the current\n"
"priority. One arguments must be passed HUNT_VARIABLE_name. A second =
argument\n"
"skipdev (generally, the calling resource) will be skipped over - or if =
a\n"
"timeout (or any additional dial options) are defined it will be dialed =
first\n"
"then be skipped if it is uniquely defined in HUNT_VARIABLE_name.\n"
"* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.\n"
"* The HUNT_VARIABLE currently must be defined as a global variable.\n"
"By default a timeout of DFT_HUNT_TaO and no additional options are =
passed to dial.\n"
"These options remain in effect until new options are encountered in =
any\n"
"HUNT_VARIABLE element. These will in turn become the new persistant =
values.\n"
"HUNT_VARIABLE Example (note the use of pipes to delimit options and =
commas to\n"
"delimit elements:\nHUNT_GROUP1=3DZap/2,Zap/3|8,Zap/10,Zap/4\n"
"Incantation Example:\nhunt(HUNT_GROUP1,Zap/10|5)\n"
"Hunt returns -1 if any step in the hunt returns -1 and 0 otherwise. If =
skipdev\n"
"was found to be busy 'dial' will increment the channel priority by =
100.\n";
static char *app =3D "Hunt";
static char *synopsis =3D "Hunt Implementation";
STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
static int hunt_exec(struct ast_channel *chan, void *data)
{
char ver_hunt[512] =3D ""; =20
int verbose =3D 1; // This must be initialized from ast env
char *timeout,*tmp_timeout,*sdtimeout;
char *skipdev,*HUNT_VAR,*hunt_str,*tmp_ht_dev,*cur_h_dev;
char tmp[256] =3D "";
char tmpv[256] =3D "";
char tmpstr[256];
char cur_h_to[128] =3D _xstr(DFT_HUNT_TaO);
char dial_data[256] =3D "";
char *cur, *rest;
char dial_app[] =3D "Dial";
int dres, priority;
int res =3D 0;
int argc =3D 1;
struct ast_app *app;
=20
=09
app =3D pbx_findapp(dial_app); =20
=20
if (!data || !strlen(data)) {//
ast_log(LOG_WARNING, "Invalid Hunt incantation\n");
return 0;
}
//NEXT LINR either add strlen(dial_data) to if or initialize.
if (verbose) snprintf(ver_hunt, sizeof(ver_hunt),=20
"Dialing %s returned %d.\n", dial_data, dres);
if (dres =3D=3D -1) {
res =3D -1;
goto out;
}
////////////// CpyAppData( app, appbu);
}
priority =3D chan->priority; // store if subsequent dials alter this
hunt_str =3D pbx_builtin_getvar_helper(NULL, HUNT_VAR); // see global =
access
if (hunt_str) {
strncpy(tmpv, hunt_str, sizeof(tmpv) - 1);
rest =3D tmpv;
while(tmp_ht_dev =3D strsep(&rest, ",")) {
cur_h_dev =3D strsep(&tmp_ht_dev, "|"); // Deconstruct sting for =
future paramter manipulation
if(tmp_ht_dev) strncpy(cur_h_to, tmp_ht_dev, sizeof(cur_h_to) - =
1);
if(strcmp(skipdev, cur_h_dev)) {
sprintf(dial_data, "%s|%s", cur_h_dev, cur_h_to);
dres =3D pbx_exec(chan, app, dial_data, 1); =20
if (verbose) {
snprintf(tmpstr, sizeof(tmpstr), "Hunt element %s returned %d.\n", =
dial_data, dres);
strncat(ver_hunt, tmpstr, sizeof(ver_hunt));
}
if (dres =3D=3D -1) {
res =3D -1;
break;
}
////////////// CpyAppData( app, appbu);
} else {
if (verbose) {
snprintf(tmpstr, sizeof(tmpstr), "Hunt element %s skipped.\n", =
dial_data);
strncat(ver_hunt, tmpstr, sizeof(ver_hunt));
}
}
if (MAX_ARGS <=3D argc++) {
snprintf(ver_hunt, sizeof(ver_hunt), "%sMaximum hunt elements =
processed. %s ignored.\n",
ver_hunt, rest);
ast_log(LOG_WARNING, "%s", ver_hunt);
}
}
} else {
ast_log(LOG_WARNING, "No valid global hunt variable specified\n");
return 0;
}
chan->priority =3D priority;
out:
if (verbose) ast_verbose( VERBOSE_PREFIX_2 "%s", ver_hunt);
return res;
}
/*
// Save this shit until deciding how to inspect dres done...
if (((res >=3D '0') && (res <=3D '9')) || ((res >=3D 'A') && (res <=3D =
'F'))) {
// Just return result as to the previous application as if it had =
been dialed //
ast_log(LOG_DEBUG, "Oooh, got something to jump out with ('%c')!\n", =
res);
break; // this does nothing here
}
switch(res) {
case AST_PBX_KEEPALIVE:
if (option_debug)
ast_log(LOG_DEBUG, "Spawn extension (%s,%s,%d) exited KEEPALIVE =
in hunt %s on '%s'\n", chan->context, chan->exten, chan->priority, hunt, =
chan->name);
else if (option_verbose > 1)
ast_verbose( VERBOSE_PREFIX_2 "Spawn extension (%s, %s, %d) =
exited KEEPALIVE in hunt '%s' on '%s'\n", chan->context, chan->exten, =
chan->priority, hunt, chan->name);
goto out;
break;
default:
if (option_debug)
ast_log(LOG_DEBUG, "Spawn extension (%s,%s,%d) exited non-zero =
on '%s' in hunt '%s'\n", chan->context, chan->exten, chan->priority, =
chan->name, hunt);
else if (option_verbose > 1)
ast_verbose( VERBOSE_PREFIX_2 "Spawn extension (%s, %s, %d) =
exited non-zero on '%s' in hunt '%s'\n", chan->context, chan->exten, =
chan->priority, chan->name, hunt);
goto out;
}
if (strcasecmp(chan->context, fullhunt)) {
if (option_verbose > 1)
ast_verbose(VERBOSE_PREFIX_2 "Channel '%s' jumping out of hunt =
'%s'\n", chan->name, hunt);
break;
}
if (chan->_softhangup) {
ast_log(LOG_DEBUG, "Extension %s, priority %d returned normally even =
though call was hung up\n",
chan->exten, chan->priority);
goto out;
} */
int unload_module(void)
{
STANDARD_HANGUP_LOCALUSERS;
return ast_unregister_application(app);
}
int load_module(void)
{
return ast_register_application(app, hunt_exec, synopsis, descrip);
}
char *description(void)
{
return tdesc;
}
int usecount(void)
{
int res;
STANDARD_USECOUNT(res);
return res;
}
Posted: Fri Mar 28, 2003 11:51 pm Post subject: [Asterisk-Dev] hunt --- beta
This is a multi-part message in MIME format.
--------------080406050505070500030602
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Why didn't you just specify a group in zapta.conf and use Dial,Zap/g1 ?
group=1
channel => 1-4
group=2
channle => 5-23
Or am I really missing what this app does?
Jeremy McNamara
John Harragin wrote:
Quote:
I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure announcing
it will make duplication of effort less likely. It should be regarded as in
development and not run in a production environment (in case dial adversely
alters the channel structure for subsequent dials - tips welcome here) - but
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using the
current priority. One argument must be passed - HUNT_VARIABLE_name. A second
argument skipdev (generally, the calling resource) will be skipped over - or
if a timeout (or any additional dial options) are defined it will be dialed
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect until
new options are encountered in any HUNT_VARIABLE element. These will in turn
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<title></title>
</head>
<body>
Why didn't you just specify a group in zapta.conf and use Dial,Zap/g1
?<br>
<br>
<br>
group=1<br>
channel => 1-4<br>
group=2<br>
channle => 5-23<br>
<br>
Or am I really missing what this app does?<br>
<br>
<br>
Jeremy McNamara<br>
<br>
John Harragin wrote:<br>
<blockquote type="cite"
cite="midMPBBIEGNHCKJGNKPHFAPCEPHCGAA.jharragi@mw.k12.ny.us">
<pre wrap="">I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure announcing
it will make duplication of effort less likely. It should be regarded as in
development and not run in a production environment (in case dial adversely
alters the channel structure for subsequent dials - tips welcome here) - but
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using the
current priority. One argument must be passed - HUNT_VARIABLE_name. A second
argument skipdev (generally, the calling resource) will be skipped over - or
if a timeout (or any additional dial options) are defined it will be dialed
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect until
new options are encountered in any HUNT_VARIABLE element. These will in turn
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
</pre>
<pre wrap="">
<hr width="90%" size="4">
This e-mail was scanned and found clean by Monroe-Woodbury CSD Antivirus.
</pre>
</blockquote>
<br>
</body>
</html>
Posted: Mon Mar 31, 2003 7:29 pm Post subject: [Asterisk-Dev] hunt --- beta
Jeremy,
Why didn't you just specify a group in zapta.conf and use Dial,Zap/g1 ?
Because you have no control over who gets dialed.
Quote:
Or am I really missing what this app does?
This allows you to hunt through a series of extensions in a particular
order.
For example if you are not at your phone, hunt might try the main
receptionist 1st, office clerk 2nd, then the exec assistant before moving on
to whatever the next priority is - maybe voicemail. If you were one of the
devices in the hunt (and defined as skipdev) it would skip over your device
but may dial you first if you call it with a timeout. Anyway, hunt can be
used to build up a rather sophisticated dial plan with minimal typing (and
confusion). Used in conjunction with macros, a compact and easy to
understand extensions.conf can represent a fairly tricky to understand dial
plan.
Here is a very small example. These 3 lines equal the following 8,
Also, I found a bug in the posted app_hunt. It shouldn't be any problem
unless you have a lot of hunt elements (although in general would not want
to many more than 4). I'm not putting up a new version until making it
easier to read and putting in a few more tweaks.
John
Quote:
>>>End of new message...
Jeremy McNamara
John Harragin wrote:
I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure announcing
it will make duplication of effort less likely. It should be regarded as in
development and not run in a production environment (in case dial adversely
alters the channel structure for subsequent dials - tips welcome here) - but
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using the
current priority. One argument must be passed - HUNT_VARIABLE_name. A second
argument skipdev (generally, the calling resource) will be skipped over - or
if a timeout (or any additional dial options) are defined it will be dialed
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect until
new options are encountered in any HUNT_VARIABLE element. These will in turn
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
This e-mail was scanned and found clean by Monroe-Woodbury CSD Antivirus.
Posted: Mon Mar 31, 2003 11:13 pm Post subject: [Asterisk-Dev] hunt --- beta
Is app_hunt technology independent?
Can I specify a hunt group with Zap and SIP and H323 if I want?
Ben
-----Original Message-----
From: John Harragin [mailto:jharragi@mw.k12.ny.us]
Sent: Monday, March 31, 2003 2:30 PM
To: asterisk-dev@lists.digium.com
Subject: RE: [Asterisk-Dev] hunt --- beta
Jeremy,
Why didn't you just specify a group in zapta.conf and use Dial,Zap/g1 ?
Because you have no control over who gets dialed.
Quote:
Or am I really missing what this app does?
This allows you to hunt through a series of extensions in a particular
order.
For example if you are not at your phone, hunt might try the main
receptionist 1st, office clerk 2nd, then the exec assistant before moving on
to whatever the next priority is - maybe voicemail. If you were one of the
devices in the hunt (and defined as skipdev) it would skip over your device
but may dial you first if you call it with a timeout. Anyway, hunt can be
used to build up a rather sophisticated dial plan with minimal typing (and
confusion). Used in conjunction with macros, a compact and easy to
understand extensions.conf can represent a fairly tricky to understand dial
plan.
Here is a very small example. These 3 lines equal the following 8,
Also, I found a bug in the posted app_hunt. It shouldn't be any problem
unless you have a lot of hunt elements (although in general would not want
to many more than 4). I'm not putting up a new version until making it
easier to read and putting in a few more tweaks.
John
Quote:
>>>End of new message...
Jeremy McNamara
John Harragin wrote:
I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure announcing
it will make duplication of effort less likely. It should be regarded as in
development and not run in a production environment (in case dial adversely
alters the channel structure for subsequent dials - tips welcome here) - but
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using the
current priority. One argument must be passed - HUNT_VARIABLE_name. A second
argument skipdev (generally, the calling resource) will be skipped over - or
if a timeout (or any additional dial options) are defined it will be dialed
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect until
new options are encountered in any HUNT_VARIABLE element. These will in turn
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
This e-mail was scanned and found clean by Monroe-Woodbury CSD Antivirus.
Posted: Tue Apr 01, 2003 3:03 am Post subject: [Asterisk-Dev] hunt --- beta
Quote:
Is app_hunt technology independent?
Can I specify a hunt group with Zap and SIP and H323 if I want?
Yea, it is simply an intermediary to app_dial. As far as I've tested it
seems to work ok, but the pbx may do some housekeeping between priority
steps - I don't understand all the particulars of how dial can modify a
channel yet. Of course if that is the case that would have to be handled.
Some code to prevent a channel from calling itself is also being added.
Does anybody know which field in the chan structure is the calling resource?
John
----- Original Message -----
From: "Benjamin Miller" <BGMiller@dccinc.com>
To: <asterisk-dev@lists.digium.com>
Sent: Monday, March 31, 2003 6:13 PM
Subject: RE: [Asterisk-Dev] hunt --- beta
Quote:
Is app_hunt technology independent?
Can I specify a hunt group with Zap and SIP and H323 if I want?
Ben
-----Original Message-----
From: John Harragin [mailto:jharragi@mw.k12.ny.us]
Sent: Monday, March 31, 2003 2:30 PM
To: asterisk-dev@lists.digium.com
Subject: RE: [Asterisk-Dev] hunt --- beta
Jeremy,
Why didn't you just specify a group in zapta.conf and use Dial,Zap/g1 ?
Because you have no control over who gets dialed.
> Or am I really missing what this app does?
This allows you to hunt through a series of extensions in a particular
order.
For example if you are not at your phone, hunt might try the main
receptionist 1st, office clerk 2nd, then the exec assistant before moving
on
Quote:
to whatever the next priority is - maybe voicemail. If you were one of the
devices in the hunt (and defined as skipdev) it would skip over your
device
Quote:
but may dial you first if you call it with a timeout. Anyway, hunt can be
used to build up a rather sophisticated dial plan with minimal typing (and
confusion). Used in conjunction with macros, a compact and easy to
understand extensions.conf can represent a fairly tricky to understand
dial
Quote:
plan.
Here is a very small example. These 3 lines equal the following 8,
Also, I found a bug in the posted app_hunt. It shouldn't be any problem
unless you have a lot of hunt elements (although in general would not want
to many more than 4). I'm not putting up a new version until making it
easier to read and putting in a few more tweaks.
John
>>>>End of new message...
Jeremy McNamara
John Harragin wrote:
I have been working on a new app to get the hang of the * environment. I
have more pressing things going on for the next week, so I figure
announcing
Quote:
it will make duplication of effort less likely. It should be regarded as
in
Quote:
development and not run in a production environment (in case dial
adversely
Quote:
alters the channel structure for subsequent dials - tips welcome here) -
but
Quote:
if anyone wants to try it now, make sure to LOOK AT THE EXAMPLE regarding
pipes and commas.
Hunt(HUNT_VARIABLE_name,SkipDev,opt1...): Executes a hunt pattern using
the
Quote:
current priority. One argument must be passed - HUNT_VARIABLE_name. A
second
Quote:
argument skipdev (generally, the calling resource) will be skipped over -
or
Quote:
if a timeout (or any additional dial options) are defined it will be
dialed
Quote:
first then be skipped if it is uniquely defined in HUNT_VARIABLE_name. (1)
* HUNT_VARIABLE_name must be passed naked - that is with no $ or{}.
* The HUNT_VARIABLE currently must be defined as a global variable.
By default, a timeout of 10 seconds (compiled in as DFT_HUNT_TaO) with no
additional options are passed to dial. These options remain in effect
until
Quote:
new options are encountered in any HUNT_VARIABLE element. These will in
turn
Quote:
become the new persistent values.
HUNT_VARIABLE Example (note the use of pipes to delimit options and commas
to delimit elements):
[globals]
HUNT_GROUP1=Zap/2,Zap/3|8|tm,Zap/10|9,Zap/4
Incantation Example:
exten => _1114,1,hunt(HUNT_GROUP1,Zap/10,20) -------- Dials Zap/10 first -
then skips it
Dials Zap/10|20 > Zap/2|10 > Zap/3|8|tm > Zap/4|9
Notes:
(1) The default skip behavior can be altered by compiling in #define
DFT_HUNT_TaO 40|tm = 40 sec music & then transferable just like dial. Skip
behavior can be restored by SkipDev with a trailing pipe (|) -
hunt(HUNT_GROUP1,Zap/10|).
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum