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