Sponsor: VoiceMeUp - Corporate & Wholesale VoIP Services

VoIP Mailing List Archives
Mailing list archives for the VoIP community
 SearchSearch 

[asterisk-users] Handling 3 different call ending causes


 
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> Asterisk Users
View previous topic :: View next topic  
Author Message
abalashov at evaristes...
Guest





PostPosted: Mon Mar 17, 2008 2:31 am    Post subject: [asterisk-users] Handling 3 different call ending causes Reply with quote

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





PostPosted: Mon Mar 17, 2008 10:46 am    Post subject: [asterisk-users] Handling 3 different call ending causes Reply with quote

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:
Quote:

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.

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 Sad

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





PostPosted: Wed Mar 19, 2008 4:31 am    Post subject: [asterisk-users] Handling 3 different call ending causes Reply with quote

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:
Quote:

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.

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 Sad

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





PostPosted: Thu Mar 20, 2008 2:49 am    Post subject: [asterisk-users] Handling 3 different call ending causes Reply with 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>
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:
Quote:

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.
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 Sad

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 Smile

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





PostPosted: Thu Mar 20, 2008 5:32 am    Post subject: [asterisk-users] Handling 3 different call ending causes Reply with quote

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 Sad

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 Smile

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 Smile

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
Display posts from previous:   
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> Asterisk Users All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
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

VoiceMeUp - Corporate & Wholesale VoIP Services