2012-03-04 48 views
1

我想在UCMA工作流应用程序使用下面的代码建立呼叫忙响应:UCMA呼叫建立只给出了30秒后

try{ 
var conversation = new Conversation(endpoint); 
avCall = new AudioVideoCall(conversation); 
avCall.EndEstablish(avCall.BeginEstablish(CalleeParty,options,null,null)); 
catch (FailureResponseException frex){ 
_logger.WriteToLog(frex.Message, "TransferCall", this.CallerUri, this.CalleeParty); 
} 
catch (OperationFailureException ofex) 
{ 
_logger.WriteToLog(ofex.Message, "TransferCall", this.CallerUri, this.CalleeParty); 
} 
catch (RealTimeException rtex){ 
} 
_logger.WriteToLog(rtex.Message, "TransferCall", this.CallerUri, this.CalleeParty); 
} 

如果对方拒绝呼叫的应用程序接收忙响应只有在超时(30秒)后才能通过。 ,并且由于呼叫在ucma应用程序内部建立,我根本听不到任何声音,表示振铃和忙碌状态。

是正常的,如果不是我该如何解决这个问题?

回答

2

在调用BeginEstablish之前,您可以订阅Call.StateChanged事件。

如果你这样做,那么你会收到通知,因为电话通过它的各种状态。在你的例子中,你会看到这个呼叫直接从建立到终止。 (一个接受的电话会建立成立,然后一旦任何一方挂断,最终终止)。

MSDN在这里有一个有用的视觉图:http://msdn.microsoft.com/en-us/library/hh347379.aspx。事实上,我会在这里链接给大家看:

Lync Call States

此外,迈克尔·格林利有blog post talking about exactly this,并介绍了如何你也可以得到更多的信息,如TransitionReason。

希望有所帮助。

+0

谢谢汤姆,我实际上尝试过,并尝试了ProvisionalResponseReceived事件,它可以告诉你在通话过程中你会得到什么回应,例如:振铃,尝试等等。问题是,当远程用户拒绝呼叫时,在我收到忙碌的消息之前有30秒的时间差距。即我的应用程序在30秒内没有收到任何回应。 例如: 我在呼叫建立期间得到以下响应: 101 - 183 - 180 - 183等 然后,如果用户拒绝呼叫 我得到404,但30秒后好像呼叫消失30秒,没有答复。 – ziwar 2012-04-18 08:29:45