1

我正在尝试在 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 应用程序中建立的,所以我根本没有任何声音表明正在响铃和忙碌状态。

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

4

1 回答 1

2

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

如果您这样做,那么您将在呼叫通过它的各种状态时收到通知。在您的示例中,您将看到呼叫直接从“正在建立”转移到“已终止”。(一个被接受的呼叫会从建立到建立,然后在任何一方挂断后最终终止)。

MSDN 在这里有一个有用的可视化图表:http: //msdn.microsoft.com/en-us/library/hh347379.aspx。其实我这里链接给大家看看:

Lync 呼叫状态

此外,Michael Greenlee 有一篇博文专门讨论了这一点,并描述了如何获得其他信息,例如 TransitionReason。

希望有帮助。

于 2012-04-17T19:27:27.767 回答