UCMA 呼叫建立仅在 30 秒后才给出忙响应
Posted
技术标签:
【中文标题】UCMA 呼叫建立仅在 30 秒后才给出忙响应【英文标题】:UCMA call establishment gives busy response only after 30 seconds 【发布时间】:2012-03-04 11:09:03 【问题描述】:我正在尝试在 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 应用程序中建立的,所以我根本听不到任何声音表明正在响铃和忙碌状态。
这正常吗?如果不正常,我该如何解决?
【问题讨论】:
【参考方案1】:您可以在调用 BeginEstablish 之前订阅 Call.StateChanged 事件。
如果您这样做,那么您会在呼叫通过它的各种状态时收到通知。在您的示例中,您将看到呼叫直接从“正在建立”转移到“已终止”。 (被接受的呼叫会从建立到建立,然后在任何一方挂断后最终终止)。
MSDN 在这里有一个有用的可视化图表:http://msdn.microsoft.com/en-us/library/hh347379.aspx。其实我这里链接给大家看看:
此外,Michael Greenlee 有一个blog post talking about exactly this,并描述了您还可以如何获取其他信息,例如 TransitionReason。
希望对您有所帮助。
【讨论】:
谢谢汤姆,我实际上尝试过,也尝试过临时响应接收事件,它可以向您显示您在通话期间得到的响应,例如:响铃、尝试等。问题是当远程用户在我收到忙音之前有 30 秒的间隔拒绝来电。即我的应用程序在 30 秒内没有收到任何响应。例如:我在通话建立期间收到以下响应:101 - 183 - 180 - 183 等然后如果用户拒绝通话我得到 404 但在 30 秒后好像通话消失了 30 秒而根本没有任何响应。以上是关于UCMA 呼叫建立仅在 30 秒后才给出忙响应的主要内容,如果未能解决你的问题,请参考以下文章