VoIP Mailing List Archives
Mailing list archives for the VoIP community |
|
View previous topic :: View next topic |
Author |
Message |
abalashov at evaristes... Guest
|
Posted: Mon Mar 17, 2008 2:31 am Post subject: [asterisk-users] Handling 3 different call ending causes |
|
|
Tobias Ahlander wrote:
Quote: | Hello List,
I'm using a dialstring like the one below. I want to have three
different things happening depending on exit cause.
Dial(SIP/${phonenumber},20,gL(20000[:5000][:5000]))
These 3 things could happen:
1, Caller hangs up
2, Callee hangs up
3, The 20 seconds is up and call is terminated from Asterisk.
Is there a way to separate these 3?
|
You can handle the 'h' extension in the dial plan, which will supply the
${CHANNEL} that was hung up, and possibly some additional dial plan
variables as well:
http://www.voip-info.org/wiki/index.php?page=Asterisk+h+extension
Using these, you can piece together who hung up on whom, etc.
#2 is handled by fallthrough in the dial plan that causes the
instructions to continue executing to the next priority for that
extension, whereas if the call completes (Dial() is successfully
connected), this does not happen.
--
Alex Balashov
Evariste Systems
Web : http://www.evaristesys.com/
Tel : (+1) (678) 954-0670
Direct : (+1) (678) 954-0671
Mobile : (+1) (706) 338-8599 |
|
Back to top |
|
|
plyschen at gmail.com Guest
|
Posted: Mon Mar 17, 2008 10:46 am Post subject: [asterisk-users] Handling 3 different call ending causes |
|
|
Hello,
Tried that too, but it reports cause 16 in all 3 cases, which means "normal
clearing".
Thanks,
Best regards,
Tobias
Date: Mon, 17 Mar 2008 15:54:47 +0100
From: "Arjan Kroon | Mobillion" <Arjan.Kroon at mobillion.nl>
Subject: Re: [asterisk-users] Handling 3 different call ending causes
To: "Asterisk Users Mailing List - Non-Commercial Discussion"
<asterisk-users at lists.digium.com>
Message-ID:
<
5E4CB0091A9AC94C92E74371A9C5022A01856277 at ED-COPERNICUS01.mobillion.local>
Content-Type: text/plain; charset="us-ascii"
http://www.voip-info.org/tiki-index.php?page=Asterisk+variable+hangupcau
se
________________________________
From: asterisk-users-bounces at lists.digium.com
[mailto:asterisk-users-bounces at lists.digium.com] On Behalf Of Tobias
Ahlander
Sent: maandag 17 maart 2008 15:35
To: asterisk-users at lists.digium.com
Subject: Re: [asterisk-users] Handling 3 different call ending causes
Alex Balashov wrote:
Quote: | Quote: | Hello List,
I'm using a dialstring like the one below. I want to have three
different things happening depending on exit cause.
Dial(SIP/${phonenumber},20,gL(20000[:5000][:5000]))
These 3 things could happen:
1, Caller hangs up
2, Callee hangs up
3, The 20 seconds is up and call is terminated from Asterisk.
Is there a way to separate these 3?
|
You can handle the 'h' extension in the dial plan, which will supply
| the ${CHANNEL} that was hung up, and possibly some additional dial plan
variables as well:
instructions to continue executing to the next priority for that extension,
whereas if the call completes (Dial() is successfully connected), this does
not happen.
I''ve tried to use the h extension in combination with the ${CHANNEL} in the
dialplan as suggested on the wiki page, but I haven't had any luck with it.
For this test I have a Sipura phone with number 1003 and a X-lite with 1203.
If I let the time go by (the 20 seconds defined in the Dial
Command) I get the following:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
If I let the Sipura hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
Lastly if I let the X-lite hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
Yes they are all the same
Perhaps there's something wrong with my code? Its just a small context with
the following for this test:
[hangupcause]
exten => s,1,Dial(SIP/1203,30,gL(10000[:5000][:5000]))
exten => h,1,NoOp(Channel hungup is ${CHANNEL})
Have I missed something basic here or what?
Thanks again,
Best regards,
Tobias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20080317/6fe18050/attachment.htm |
|
Back to top |
|
|
atis at iq-labs.net Guest
|
Posted: Wed Mar 19, 2008 4:31 am Post subject: [asterisk-users] Handling 3 different call ending causes |
|
|
On 3/17/08, Tobias Ahlander <plyschen at gmail.com> wrote:
Quote: | Alex Balashov wrote:
Quote: | Quote: | Hello List,
I'm using a dialstring like the one below. I want to have three
different things happening depending on exit cause.
Dial(SIP/${phonenumber},20,gL(20000[:5000][:5000]))
These 3 things could happen:
1, Caller hangs up
2, Callee hangs up
3, The 20 seconds is up and call is terminated from Asterisk.
Is there a way to separate these 3?
|
You can handle the 'h' extension in the dial plan, which will supply the
| ${CHANNEL} that was hung up, and possibly some additional dial plan
variables as well:
to continue executing to the next priority for that extension, whereas if
the call completes (Dial() is successfully connected), this does not happen.
I''ve tried to use the h extension in combination with the ${CHANNEL} in the
dialplan as suggested on the wiki page, but I haven't had any luck with it.
For this test I have a Sipura phone with number 1003 and a X-lite with 1203.
If I let the time go by (the 20 seconds defined in the Dial Command) I get
the following:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
If I let the Sipura hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
Lastly if I let the X-lite hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel hungup is
SIP/1003-08a491b8") in new stack
Yes they are all the same
Perhaps there's something wrong with my code? Its just a small context with
the following for this test:
|
Quote: | [hangupcause]
exten => s,1,Dial(SIP/1203,30,gL(10000[:5000][:5000]))
|
exten => s,2,NoOp(Callee hangup)
Quote: | exten => h,1,NoOp(Channel hungup is ${CHANNEL})
Have I missed something basic here or what?
| This should allow you to distinguish caller and callee hangups. I
suppose dial time limit will match Callee hangup, but you can check
that by ${ANSWEREDTIME} or some sort of timestamp checking before and
after Dial (altough that would include ringing time)
Regards,
Atis
--
Atis Lezdins,
VoIP Project Manager / Developer,
atis at iq-labs.net
Skype: atis.lezdins
Cell Phone: +371 28806004
Cell Phone: +1 800 7300689
Work phone: +1 800 7502835 |
|
Back to top |
|
|
plyschen at gmail.com Guest
|
Posted: Thu Mar 20, 2008 2:49 am Post subject: [asterisk-users] Handling 3 different call ending causes |
|
|
Quote: | Date: Wed, 19 Mar 2008 11:31:57 +0200
From: "Atis Lezdins" <atis at iq-labs.net>
Subject: Re: [asterisk-users] Handling 3 different call ending causes
To: "Asterisk Users Mailing List - Non-Commercial Discussion"
<asterisk-users at lists.digium.com>
Message-ID:
<670f60170803190231l7d92c26fg697baf635788e6c0 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
On 3/17/08, Tobias Ahlander <plyschen at gmail.com> wrote:
Quote: | Alex Balashov wrote:
Quote: | Quote: | Hello List,
I'm using a dialstring like the one below. I want to have three
different things happening depending on exit cause.
Dial(SIP/${phonenumber},20,gL(20000[:5000][:5000]))
These 3 things could happen:
1, Caller hangs up
2, Callee hangs up
3, The 20 seconds is up and call is terminated from Asterisk.
Is there a way to separate these 3?
|
You can handle the 'h' extension in the dial plan, which will supply
the
| ${CHANNEL} that was hung up, and possibly some additional dial plan
variables as well:
to continue executing to the next priority for that extension, whereas
if the call completes (Dial() is successfully connected), this does not
|
| happen.
Quote: | Quote: |
I''ve tried to use the h extension in combination with the ${CHANNEL}
in the dialplan as suggested on the wiki page, but I haven't had any luck
|
| with it.
Quote: | Quote: |
For this test I have a Sipura phone with number 1003 and a X-lite with
|
| 1203.
Quote: | Quote: | If I let the time go by (the 20 seconds defined in the Dial Command) I
get the following:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
If I let the Sipura hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
Lastly if I let the X-lite hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
Yes they are all the same
Perhaps there's something wrong with my code? Its just a small
context with the following for this test:
|
Quote: | [hangupcause]
exten => s,1,Dial(SIP/1203,30,gL(10000[:5000][:5000]))
|
exten => s,2,NoOp(Callee hangup)
Quote: | exten => h,1,NoOp(Channel hungup is ${CHANNEL})
Have I missed something basic here or what?
|
This should allow you to distinguish caller and callee hangups. I suppose
| dial time limit will match Callee hangup, but you can check that by
Quote: | ${ANSWEREDTIME} or some sort of timestamp checking before and after Dial
| (altough that would include ringing time)
Quote: |
Regards,
Atis
--
Atis Lezdins,
VoIP Project Manager / Developer,
atis at iq-labs.net
Skype: atis.lezdins
Cell Phone: +371 28806004
Cell Phone: +1 800 7300689
Work phone: +1 800 7502835
|
Hello List,
Ok, I solved it by using this code. This will work for me since the variable
${timeleft} is always in complete seconds. Thank you all for the ideas and
pointers
context hangupcause {
s => {
Set(timeleft=7000);
Dial(SIP/1203,30,gL(${timeleft}[:4000][:4000]));
if(${timeleft} = (${ANSWEREDTIME}*1000)) {
jump s at notimeleft;
} else {
jump s at hangupcause2;
}
}
h => {
NoOp(Caller Hangup);
}
}
context hangupcause2 {
s => {
NoOp(Callee Hangup);
}
}
context notimeleft {
s => {
NoOp(Time's up!);
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20080320/7d4c4f7e/attachment.htm |
|
Back to top |
|
|
atis at iq-labs.net Guest
|
Posted: Thu Mar 20, 2008 5:32 am Post subject: [asterisk-users] Handling 3 different call ending causes |
|
|
On 3/20/08, Tobias Ahlander <plyschen at gmail.com> wrote:
Quote: | Quote: | Date: Wed, 19 Mar 2008 11:31:57 +0200
From: "Atis Lezdins" <atis at iq-labs.net>
Subject: Re: [asterisk-users] Handling 3 different call ending causes
To: "Asterisk Users Mailing List - Non-Commercial Discussion"
<asterisk-users at lists.digium.com>
Message-ID:
| <670f60170803190231l7d92c26fg697baf635788e6c0 at mail.gmail.com>
Quote: | Content-Type: text/plain; charset=ISO-8859-1
On 3/17/08, Tobias Ahlander <plyschen at gmail.com> wrote:
Quote: | Alex Balashov wrote:
Quote: | Quote: | Hello List,
I'm using a dialstring like the one below. I want to have three
different things happening depending on exit cause.
Dial(SIP/${phonenumber},20,gL(20000[:5000][:5000]))
These 3 things could happen:
1, Caller hangs up
2, Callee hangs up
3, The 20 seconds is up and call is terminated from Asterisk.
Is there a way to separate these 3?
|
You can handle the 'h' extension in the dial plan, which will supply
the
| ${CHANNEL} that was hung up, and possibly some additional dial plan
variables as well:
| http://www.voip-info.org/wiki/index.php?page=Asterisk+h+extension
Quote: | Quote: |
Using these, you can piece together who hung up on whom, etc.
#2 is handled by fallthrough in the dial plan that causes the
instructions
| to continue executing to the next priority for that extension, whereas
if the call completes (Dial() is successfully connected), this does not
|
| happen.
Quote: | Quote: |
I''ve tried to use the h extension in combination with the ${CHANNEL}
in the dialplan as suggested on the wiki page, but I haven't had any luck
|
| with it.
Quote: | Quote: |
For this test I have a Sipura phone with number 1003 and a X-lite with
|
| 1203.
Quote: | Quote: | If I let the time go by (the 20 seconds defined in the Dial Command) I
get the following:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
If I let the Sipura hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
Lastly if I let the X-lite hang up I get:
-- Executing [h at hangupcause:1] NoOp("SIP/1003-08a491b8", "Channel
hungup is
SIP/1003-08a491b8") in new stack
Yes they are all the same
Perhaps there's something wrong with my code? Its just a small
context with the following for this test:
|
Quote: | [hangupcause]
exten => s,1,Dial(SIP/1203,30,gL(10000[:5000][:5000]))
|
exten => s,2,NoOp(Callee hangup)
Quote: | exten => h,1,NoOp(Channel hungup is ${CHANNEL})
Have I missed something basic here or what?
|
This should allow you to distinguish caller and callee hangups. I suppose
| dial time limit will match Callee hangup, but you can check that by
Quote: | ${ANSWEREDTIME} or some sort of timestamp checking before and after Dial
| (altough that would include ringing time)
Quote: |
Regards,
Atis
--
Atis Lezdins,
VoIP Project Manager / Developer,
atis at iq-labs.net
Skype: atis.lezdins
Cell Phone: +371 28806004
Cell Phone: +1 800 7300689
Work phone: +1 800 7502835
|
Hello List,
Ok, I solved it by using this code. This will work for me since the variable
${timeleft} is always in complete seconds. Thank you all for the ideas and
pointers
context hangupcause {
s => {
Set(timeleft=7000);
Dial(SIP/1203,30,gL(${timeleft}[:4000][:4000]));
if(${timeleft} = (${ANSWEREDTIME}*1000)) {
jump s at notimeleft;
} else {
jump s at hangupcause2;
}
}
h => {
NoOp(Caller Hangup);
}
}
context hangupcause2 {
s => {
NoOp(Callee Hangup);
}
}
context notimeleft {
s => {
NoOp(Time's up!);
}
}
|
I would change that to >= just for reliability - you never know
Regards,
Atis
--
Atis Lezdins,
VoIP Project Manager / Developer,
atis at iq-labs.net
Skype: atis.lezdins
Cell Phone: +371 28806004
Cell Phone: +1 800 7300689
Work phone: +1 800 7502835 |
|
Back to top |
|
|
|
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
|