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 秒后才给出忙响应的主要内容,如果未能解决你的问题,请参考以下文章

在 UCMA 中取消转移

如果没有得到响应,如何在 30 秒后停止 ajax 调用? [复制]

使用 UCMA 4.0 的呼叫队列方法

几秒后,Jquery动画()响应非常缓慢

Lync 2010 UCMA 3.0 SDK - 呼叫转移

请求-响应与双工 WCF 消息交换模式