Hi,
ForwardCall() sends a Facility message with reason callForwarded. The H.323 standard only requires that this works for forward calls in Alerting state. Many devices support this also for calls in connected state, but I don't think Tandberg does.
Also, be careful with the meaning of the return value of ForwadCall(). It only means that the message was sent out, not that the other side supports it and will forward the call. You could start a timer and see if the call is still not terminated by the remote side a few seconds later. Thats about the only check I can think of.
GnuGk has an experimental feature since 2.3.3 that implements gatekeeper side call transfers, where the gatekeeper initiates a new call to the transfer destination and switches over the media connections. You can enable the H.450.2 emulator and set the transfer method to "reroute". Then GnuGk will intercept H.450.2 requests from the client and initiates the gatekeeper side transfer.
Regards, Jan
Igor Pavlov wrote:
Hi Simon,
How can I determine that TransferCall failed? ForwardCall() in contrast to TransferCall() returns boolean value...
I tried ForwardCall() instead of TransferCall() and got following:
- When I do ForwardCall() for remote client which is my h323plus based
appilcation - remote client doesn't react. 2. When I do ForwardCall() for remote client which is Tandberg T-1000 than in new connection only channels _to_ this client are opened, but not _from_ this client.
Igor
11 ноября 2010 г. 14:30 пользователь Simon Horne s.horne@packetizer.comнаписал:
You can also try H323Connection::ForwardCall() This is more widely supported.
You can use it with TransferCall. If TransferCall fails then try ForwardCall. But again that is not going to guarantee the transfer actually will occur.
Simon
-----Original Message----- From: h323plus-bounces@lists.packetizer.com [mailto:h323plus-bounces@lists.packetizer.com] On Behalf Of Jan Willamowius Sent: Thursday, November 11, 2010 7:18 PM To: h323plus@lists.packetizer.com Subject: Re: [h323plus] Transfer call
With the original definition, I don't think there is a way to know beforehand. You can try it and see if you get a response back. From what I understand H.450.12 is supposed to solve this, but I haven't seen it in action anywhere, yet.
The Mirial softphone supports H.450.2 and I've seen a few IP hardphones that do, but H.450 in general is not very widely implemented.
Its a shame that not even those expensive videoconferencing units can do a proper call transfer like any $10 traditional phone can...
Regards, Jan
Igor Pavlov wrote:
Thanks for answer, Jan,
How can I understand in my program if remote client support H.450.2? Some capabilities? Or something else?
Is there some h323 clients not based on h323plus wich supports H.450.2 ?
Regards, Igor
2010/11/11 Jan Willamowius jan@willamowius.de
Hi Igor,
most of the time Wireshark is right. ;-)
Tandberg doesn't support H.450.2 call transfers, regardless if the H323Plus packet is correct or not in this case.
Regards, Jan
Igor Pavlov wrote:
Hi,
I am using H323Connection::TransferCall() and capture network packets with Wireshark, so when transfering the call
in
wireshark I see Malformed Packet ( CS : empty [Malformed Packet] ) The problem in these strings (in h450pdu.cxx in function H450ServiceAPDU::BuildCallTransferInitiate()) invoke.IncludeOptionalField(X880_Invoke::e_argument); invoke.m_argument.EncodeSubType(argument); If I comment these strings then I see just CS : Empty. And of course have
no
transfer of call.
I have some questions :
- Who is wrong ? h323plus or Wireshark 2. How do deternine if
remote h323 client support transfering call ? Because I have Tandberg T-1000 wich is not reacting on my transfer call response, maybe because of malformed packet or because it does not
support
it at all
Thank you, Igor Pavlov.
-- Jan Willamowius, jan@willamowius.de, http://www.gnugk.org/
-- Игорь Павлов
-- Jan Willamowius, jan@willamowius.de, http://www.gnugk.org/
-- Игорь Павлов