我正在尝试使用UCMA工作流应用程序中的以下代码建立呼叫:
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应用程序内部建立的,所以我根本没有任何表示铃声和忙碌状态的声音。
是正常的,如果不是,我该如何解决?
答案 0 :(得分:2)
您可以在调用BeginEstablish之前订阅Call.StateChanged事件。
如果您这样做,那么当呼叫通过它的各种状态时,您将收到通知。在您的示例中,您将看到呼叫直接从建立到终止。 (一个接受的电话会建立成立,然后在任何一方挂断时最终终止)。
MSDN在这里有一个有用的可视化图表:http://msdn.microsoft.com/en-us/library/hh347379.aspx。事实上,我会在这里链接它,供所有人查看:
此外,Michael Greenlee有一个blog post talking about exactly this,并描述了如何获取其他信息,例如TransitionReason。
希望有所帮助。