且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

有关使用UCMA 3.0将Lync与外部呼叫中心集成的帮助

更新时间:2023-11-22 22:14:34

没有任何事件可以注册UCMA,这表示未应答的呼叫。虽然UCMA可以为您感兴趣的每个用户启动一个端点,并在您建议的时间内未接听X秒后重定向来电,这将导致
到很多端点只是坐在那里等待来电但是。


另一种可能性是配置相关用户同时响铃呼叫中心应用程序。如果呼叫中心应用程序在X秒后检测到呼叫未被应答,则可以应答呼叫并继续呼叫流程。这个
的优点是你不需要为每个用户提供一个端点,你只需要你的应用程序的端点。缺点是它必须等待用户在指定时间后没有接听电话。这可能导致应用程序在用户最终应答的呼叫上花费资源


更强大的解决方案是配置服务器,以便将未应答的呼叫发送给您应用程序很像未应答的电话今天发送到语音邮件。这样,您的应用程序将只需处理针对它的呼叫,并且不必等待接听电话


 


在检测到未应答呼叫后,UCMA是您呼叫中心应用程序的完美解决方案,SDK中包含许多示例和快速入门,将说明如何使用UCMA完成基础知识和一些更高级的方案。


可以在此处找到样本和快速入门文档的在线版本 - http://msdn.microsoft.com/en-us/library/gg448446.aspx


Hi ! I'm working with a pre study with a large customer who is looking at integrating Lync with their call center solution. The basic idea is to use Lync as internal communication but also being able to use their call center solution to transfer Lync calls for example when a lync call goes unanswered.

Today we have integrated presence both ways between the call center and the end user's communicator clients but we are looking on a similar functionality for call control.

The first typical scenario we are investigating is:

When a Lync call goes unanswered by an employee the call should be forwarded to their call center. The call center should have a UI which displays incoming calls and the call context (who is caller,callee etc), the call center user should be able to pick up a call, transfer it, park it, etc.

The first challenge in this scenario would be to detect a missed call (We are usinng UCMA 3.0 by the way) to be able to pick up the call events. The way I have understood the API there is no way to globally register a handler for all incoming calls in Lync but you basically register a call handler for a specific endpoint, and from there we could possibly go on and implement logic to detect when the call goes unanswered and then forward it to another SIP uri (the contact call center). The contact call center could also have a similar call handler logic which captures the call (possibly parks it) and register it in a database so the callcenter UI could display it (assuming the UI fetch the incoming call data from a DB).

 

The first question that arrives is how do we catch all unanswered incoming calls, is it feasible (and scalable) ? to register in lync all the endpoints of all the possible users we are interested in receiving notifications on (possibly thousands of users) ?

Imagine the sample code UCMASampleCode - CallTransferBasic.  Is it possible to do:

foreach(var userSip in ALLUSERSINTHEORGANISTIONPOSSIBLYTHOUSANDS)

{

            var watchEndpoint = _helper.CreateEstablishedUserEndpoint( userSip );
            watchEndpoint .RegisterForIncomingCall<AudioVideoCall>(On_AudioVideoCall_Received);

}

and then expect to be able to detect all unanswered calls from all endpoints above and transfer them to call center uri ?

 

This is just step 1 (getting the calls to the call center), then there is step 2 which is how the call center could be able to answer a call (Using a Lync Api ?)

 

Do you think this is even a feasible solution ? Can UCMA do it ? I find it very hard to find documentation on how to implement these scenarios. Obviously all samples show how to transfer 1 call, how to disconnect 1 call etc. But can you give me any pointers as how to implement this in a call center context (think call control on an entire organisation with thousands of users simultaneously) ?

 

I would be very thankful for any input here, Lync seems a great product but I hope MS realize how important it is to be able to integrate it with all kinds of external systems that are out there. UCMA seems like the right way to go ? Please help.

There is no event that UCMA can register for that would indicate an unanswered call. While UCMA can spin up an endpoint for each user you're interested in and redirect the incoming call after it goes unanswered for X seconds as you proposed, this would lead to a lot of endpoints just sitting around waiting for incoming calls though.

Another possibility would be to configure the relevant users to simultaneously ring the call center app. If the call center app detects that the call wasn't answered after X seconds it can then answer it and proceed with the call flow. The advantage of this is that you won't need an endpoint for each user, you only need endpoints for your application. The downside is that it will have to wait to see if the user doesn't answer the call after the specified time. This can lead to the application spending resources on a call that the user ultimately answers.

A more robust solution would be to configure the server such that unanswered calls are sent to your app much like unanswered calls are sent to voice mail today. This way, your application will only have to handle calls intended for it and it won't have to wait to answer calls.

 

UCMA is the perfect solution for your call center app after the unanswered call is detected and there are many samples and quickstarts included with the SDK that will illustrate how to accomplish the basics and some more advanced scenarios using UCMA.

The online version of the samples and quickstarts documentation can be found here - http://msdn.microsoft.com/en-us/library/gg448446.aspx