[asterisk-users] identify caller hangup or callee hangup?

Vardan hvardan71 at gmail.com
Mon May 17 04:53:05 CDT 2010


And the first hangup message is the hangup callee or caller
If you become first message Hangup in Incoming, that mean the hangup was 
make in Incoming context

If you become first message Hangup in Outgoing, that mean the hangup was 
make in Outgoing context

Vardan

P.S.

[default] // In example this is Incoming
exten => vardan,1,Dial(Local/${EXTEN}@vardan/n)
exten => h,1,Noop(Hangup in Demo Vardan)


context vardan {  // In exmaple this is Outgoing

     _. => {
         Dial(SIP/2222 at 192.168.1.200);
         };
     h => {
         Noop(Hangup in Vardan);
     };
};




I have make this example on my test server and it works.
     -- Executing [vardan at default:1] Dial("SIP/66.54.140.46-b6308b38", 
"Local/vardan at vardan/n") in new stack
     -- Executing [vardan at vardan:1] Dial("Local/vardan at vardan-a461,2", 
"SIP/2222 at 192.168.1.200") in new stack
     -- Called vardan at vardan/n
     -- Called 2222 at 192.168.1.200
     -- SIP/192.168.1.200-08244400 answered Local/vardan at vardan-a461,2
     -- Local/vardan at vardan-a461,1 answered SIP/66.54.140.46-b6308b38
astdebian*CLI>
astdebian*CLI>
astdebian*CLI>
astdebian*CLI>
     -- Executing [h at vardan:1] NoOp("Local/vardan at vardan-a461,2", 
"Hangup in Vardan") in new stack
   == Spawn extension (vardan, vardan, 1) exited non-zero on 
'Local/vardan at vardan-a461,2'
     -- Executing [h at default:1] NoOp("SIP/66.54.140.46-b6308b38", 
"Hangup in Demo Vardan") in new stack
   == Spawn extension (default, vardan, 1) exited non-zero on 
'SIP/66.54.140.46-b6308b38'
     -- Executing [vardan at default:1] Dial("SIP/66.54.140.46-b6307510", 
"Local/vardan at vardan/n") in new stack
     -- Executing [vardan at vardan:1] Dial("Local/vardan at vardan-fe85,2", 
"SIP/2222 at 192.168.1.200") in new stack
     -- Called vardan at vardan/n
     -- Called 2222 at 192.168.1.200
     -- SIP/192.168.1.200-08244400 answered Local/vardan at vardan-fe85,2
     -- Local/vardan at vardan-fe85,1 answered SIP/66.54.140.46-b6307510
astdebian*CLI>
astdebian*CLI>
astdebian*CLI>
astdebian*CLI>
     -- Executing [h at default:1] NoOp("SIP/66.54.140.46-b6307510", 
"Hangup in Demo Vardan") in new stack
     -- Executing [h at vardan:1] NoOp("Local/vardan at vardan-fe85,2", 
"Hangup in Vardan") in new stack
   == Spawn extension (default, vardan, 1) exited non-zero on 
'SIP/66.54.140.46-b6307510'
   == Spawn extension (vardan, vardan, 1) exited non-zero on 
'Local/vardan at vardan-fe85,2'



Vardan wrote:
> I think You can do this if you use local channel.
> For example, you do two context
> AEL example
>
> context	Incoming {
> 	_X. =>  {
> 		......
> 		Dial(Local/${EXTEN}@Outgoing/n);
> 	};
> 	h =>  {
> 		Noop(Hangup in Incoming);
> 	}
> };
>
> context Outgoing {
> 	_X. =>  {
> 		..........
> 		Dial(SIP/dd at dd);
> 	};
> 	h =>  {
> 		Noop(Hangup in Outgoing);
> 	};
> };
>
> I think this is must work. I have like so, but use with callout files.
>
> Vardan
>
> Gareth Blades wrote:
>> Klaus Darilion wrote:
>>>
>>> Am 17.05.2010 10:46, schrieb Zhang Shukun:
>>>> Hello,
>>>>
>>>> you know , when a call setup, either caller hangup first or callee
>>>> hangup first , the hangupcause will set to 16(means Call Clearing
>>>> Causes)
>>>>
>>>> My question is how could i identify whether the caller or callee
>>>> hangup the phone first?
>>>
>>> AFAIK you can not.
>>>
>> The only way I can think of doing it is that if one end involves the use
>> of ISDN then in the console logs you do get messages like
>> "-- Channel 0/11, span 1 got hangup request, cause 16"
>> but there is no timestamp so it would be tricky matching up to the
>> corresponding call
>>
>> Maybe you can try using the manager interface. The hangup event seems to
>> mention the channel so perhaps this is the one which initiated the hangup
>> http://www.voip-info.org/wiki/view/asterisk+manager+events#HangupEvent
>>
>
>




More information about the asterisk-users mailing list