Richard Lyman wrote:
Rich Doughty wrote:
Richard Lyman wrote:
Rich Doughty wrote:
i am creating call files, and catching successfully the ones that don't
connect in a 'failed' extension. can anyone tell me how to find out the
reason for the failure (ie busy, no answer).
${DIALSTATUS} doesn't appear to get set (presumably because Dial()
isn't
used) and channel_status doesn't seem to be any good.
thanks in advance.
the event you received for OriginateFailure has a 'Reason: ' code.
that code breaks down as
0 = UNKNOWN FAILURE or DISCONNECT
3 = AST_CONTROL_RINGING (no answer)
5 = AST_CONTROL_BUSY
1 = AST_CONTROL_HANGUP
8 = AST_CONTROL_CONGESTION
i didn't originate the call with manager, but with a call file, so i
can't
get manager events. i there any other way of finding this out?
if DIALSTATUS or HANGUPCAUSE don't have what you need then you will need
to mod pbx.c
look for a section of code that looks like this
/* create a fake channel and execute the "failed"
extension (if it exists) within the requested cont
/* check if "failed" exists */
if (ast_exists_extension(chan, context, "failed",
1, NULL)) {
chan = ast_channel_alloc(0);
if (chan) {
ast_copy_string(chan->name,
"OutgoingSpoolFailed", sizeof(chan->name));
if (!ast_strlen_zero(context))
ast_copy_string(chan->context,
context, sizeof(chan->context));
ast_copy_string(chan->exten, "failed",
sizeof(chan->exten));
chan->priority = 1;
ast_set_variables(chan, vars);
insert pbx_builtin_var here -->
ast_pbx_run(chan);
since DIALSTATUS and HANGUPCAUSE are both protected, you will probably
have to create another such as FAILEDCODE.
i hope this helps.
ok. thanks. HANGUPCAUSE only seems to return 0. if it's not possible to
find this out whilst using call files (as it appears) i'll take a look
at using manager.
--
- Rich Doughty
_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users