[asterisk-bugs] [JIRA] (PRI-168) DISCONNECT with Progress Indicator #8

armeniki (JIRA) noreply at issues.asterisk.org
Tue May 6 20:56:43 CDT 2014


    [ https://issues.asterisk.org/jira/browse/PRI-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=217964#comment-217964 ] 

armeniki edited comment on PRI-168 at 5/6/14 8:54 PM:
------------------------------------------------------

Hi again,

Not sure if anyone is working on this yet but I thought I'd take a crack at this as I do have some programming experience.... any help would be appreciated of course.

---

I've managed to get one piece of the puzzle so far, which may be seen as working backwards, but hopefully it'll help me out in figuring things out more...

So the first issue was that there was no Progress Indicator #8 attached to the DISCONNECT message going to the PBX from Asterisk.  This made the PBX send back the RELEASE_CC and drop the channel.  I've made the following changes to the "q931.c" file and Asterisk now sends the PI #8 with the DISCONNECT.  This means that the ISDN Cause Code/Message shows up and the PBX is not dropping the call any longer:

At approximately line 6081, I changed this:
static int disconnect_ies[] = { Q931_CAUSE, Q931_IE_FACILITY, Q931_IE_USER_USER, -1 }
to this:
static int disconnect_ies[] = { Q931_CAUSE, Q931_IE_FACILITY, *Q931_PROGRESS_INDICATOR* , -1 }

and at approximately line 6093, I inserted the following line:
*c->progressmask = PRI_PROG_INBAND_AVAILABLE*;

Progress Indicator #8 is now being sent with the DISCONNECT message.

However, the problem is only half-solved, because whilst doing this test, I noticed that in the Asterisk CLI, the system is indicates that it is "Spawning" and Hanging Up the extension but the PBX is now waiting for a recording or some other audio/tone to come through on the channel but of course, that's not happening.

So at this point, I need to figure out a way of preventing Asterisk from moving on to the Hanging Up phase....


was (Author: armeniki):
Hi again,

Not sure if anyone is working on this yet but I thought I'd take a crack at this as I do have some programming experience.... any help would be appreciated of course.

---

I've managed to get one piece of the puzzle so far, which may be seen as working backwards, but hopefully it'll help me out in figuring things out more...

So the first issue was that there was no Progress Indicator #8 attached to the DISCONNECT message going to the PBX from Asterisk.  This made the PBX send back the RELEASE_CC and drop the channel.  I've made the following changes to the "q931.c" file and Asterisk now sends the PI #8 with the DISCONNECT.  This means that the ISDN Cause Code/Message shows up and the PBX is not dropping the call any longer:

At approximately line 6081, I changed this:
static int disconnect_ies[] = { Q931_CAUSE, Q931_IE_FACILITY, Q931_IE_USER_USER, -1 };
to this:
static int disconnect_ies[] = { Q931_CAUSE, Q931_IE_FACILITY, *Q931_PROGRESS_INDICATOR*, -1 };

and at approximately line 6093, I inserted the following line:
*c->progressmask = PRI_PROG_INBAND_AVAILABLE*;

Progress Indicator #8 is now being sent with the DISCONNECT message.

However, the problem is only half-solved, because whilst doing this test, I noticed that in the Asterisk CLI, the system is indicates that it is "Spawning" and Hanging Up the extension but the PBX is now waiting for a recording or some other audio/tone to come through on the channel but of course, that's not happening.

So at this point, I need to figure out a way of preventing Asterisk from moving on to the Hanging Up phase....

> DISCONNECT with Progress Indicator #8
> -------------------------------------
>
>                 Key: PRI-168
>                 URL: https://issues.asterisk.org/jira/browse/PRI-168
>             Project: LibPRI
>          Issue Type: New Feature
>      Security Level: None
>    Affects Versions: 1.4.13
>            Reporter: armeniki
>            Severity: Minor
>
> Hi everyone,
> As you know, currently when the Hangup() command is used in the Asterisk dial plan, it will tear down both the far and and near end of the call and audio amongst other things.  In addition, there is a way of indicating the PRI Cause Code to the user by entering the code within the parenthesis ie: Hangup(1) or Hangup(16), etc.
> Here is the issue:  We have a PBX connected to an E1/PRI from the Telco.  This is a production system and does not use Asterisk.  On this system, whenever someone dials a number which is busy, for example, the phone's display will show the standard PRI message "user busy" and the user will hear an engaged signal (busy signal).  Likewise, if a wrong number is dialled, the display will show "unallocated num" and another tone or message will be heard.... and so on.
> Currently, we're doing tests on the same type of system connected to Asterisk via an E1/PRI and have found that this does not happen.  Basically, if the user dials a busy number, they will hear a busy signal but they won't see the "user busy" message.  Alternatively, if we change the extension script a bit, we can issue a Hangup(17) to make the phone show "user busy" but then there's no way to play the busy signal because the phone/channel hangs up.
> SO....
> Would it be possible to perhaps create a new function called "SendPRICause()" (kind of like the SendText function for SIP phones) so that we can use that instead of Hangup()?
> This way the use can see the message and hear whatever recording needs to be played to them at the same time.
> An example of its usage could be:
> exten => s-DN_CHANGED,1,Progress()
> exten => s-DN_CHANGED,1,SendPRICause(22)
> exten => s-DN_CHANGED,n,Playback(/var/lib/asterisk/sounds/tel/sorry-number-changed,noanswer)
> exten => s-DN_CHANGED,n,Hangup()
> --------------------------
> Cheers,
> Armen



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list