function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Andreas MeyerAndreas Meyer 

ServiceCloud: Omni-Channel and OpenCTI

Hi All,
currently i am in a evaluation process of connecting Voice/ACD with the new SFDC Omni-Channel feature. 

The ACD provider will be integrated using OpenCTI. Indeed OpenCTI exists in the CallCenter console component of the ServiceConsole. Usually the ACD provider takes care of the call routing and the only interaction with SFDC is done in context of the OpentCTI HTML/JavaScript code (inbound and outbound calls, call logging etc.). This HTML/JavaScript code is always running in context of the browser of a particular agent. The session between the agent and the ACD server is handled by the CallCenter console component (pure Cloud solution) or some kind of local desktop app as a middleware between the CallCenter console component and the ACD server.

I have an ongoing discussion with SFDC about there recommendation to integrate OpenCTI with Omni-Channel to make sure the Omni-Mechanism will manage the Agent-Blending completely on SFDC side.

SFDC suggest to let the ACD system create a Case … which will be handled by a Omni-Service channel. A Omni routing configuration assigned to a queue will route that case to an agent. As soon as an agent picks that case from the Omni console component the ACD is notified via SFDC streaming API to connect the pending call with the agent who accepted the case. In fact the ACD server is the only subscriber of the StreamingAPI PushTopic.

I have a fundamental problem to understand that approach:
1. from my understanding OpenCTI only runs in context of a client browser … to create a case outside that context, OpenCTI needs to connect to SFDC in a different way. That was the old CTI way … OpenCTI tries to get rid of that!

2. StreamingAPI cannot connect to server side processed outside of SFDC (like a server run by a ACD provider), again: the only way is to notify the OpenCTI console component via Javascript events fired by service console integration toolkit. 

Does anyone ever did such an implementation or found any kind of best practice documents coming from SFDC?

Before you ask: we have a running ServiceCloud implementation (1000+ agents) using OpenCTI in the „classic way“ for a couple of years now. Moreover we have a new PoC using Omni-Channel for Email,Web and LiveAgent in place. The missing piece is to connect OpenCTI and Omni and let Omni do the call routing instead of the ACD provider.

Thanks for any kind of inspiration 

Best,
Andreas
Andy BoettcherAndy Boettcher
Odds are you're not going to get an answer out of the community here this specific - my two initial reactions would be:

1 - Have you talked to Indeed?  If you are using their software and they have an integration package with Salesforce, surely they have some input they can share with you.
2 - For an implementation of your size, I'm making a big assumption that you have Premier Support.  This kind of question just smacks of a trouble ticket or even escalation to your Account Manager.
Andreas MeyerAndreas Meyer
Hi Andy,

i was on christmas holiday ... so sorry for my late response. First thanks for your answer. Of course we have premier support ... in fact MCS, so i can always open up a support case to get some answers. It is more about having a community feedback if someone ever implemented something like that. The "slowest" way is to wait for our SFDC TA working on the final concept (due date 2. week in 2016) .. but i have that feeling that the OpenCTI/Omni strategy won't work ;). 

Best,
Andreas
Juliana Toledo 1Juliana Toledo 1
Hello,

I don't know if you are still interested, but I just found this solution in a quick google search and it looks promising:

http://www.ingenius.com/building-omni-channel-agent-experience-salesforce-ingenius/

I don't know if or how it works, but if you are interested you should contact them!


Best,
Ju
Nathalie AdamNathalie Adam
Hi Andreas,

I hope you have made progress on the topic and can share insight on the integration between Open CTI and Omni-Chanel as we are facing similar challenges.

Thanks in advance,

​Nathalie 
Ramon PereiraRamon Pereira
I'm developing a project and I have to do it the following way.

We have a mediator between SFDC and the Telephony server.

APEX REST service to identify the best user to serve the customer. If it does not find, the mediator creates a custom object that is routed by the omni-channel to perform routing. Our page was created using visualforce, the same one connects via websocket with the mediator (LAN network only).
We made this decision because our telephony could not be exposed in the DMZ. When the user accepts a registration, I send a notification through the webscket to the mediator so that it sends the call to the agent that accepted the connection.

As soon as I finish the project I share the sources with you. So we can share and make available a visualforce softphone that connects via websocket with any telephony service (provided it uses websocket).

Regards,
Ramon Pereira
Peter McDowell 4Peter McDowell 4
Very interested in what you have come up with Ramon!
Nate Smith 5Nate Smith 5
I am also extremely interested in the outcome.
Akos MateAkos Mate
We are using Desktop Connect (https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3000000B4I1HEAV) to integrate Avaya PBX with Salesforce Omnichannel in Lightining.

We have came accross an issue when integrating OmniChannel in Lightning experience with Open CTI, using Salesforce Console Toolkit (integration.js) version 42.

It seems that for some reason the API references the Salesforce frame in Classic and Lightning in the same manner, the integration API is used for communicating between frames and sharing omnichannel information, the main issue is that Salesforce HTML DOM is not is named differently, in Classic the frame is named correctly as per the integration.js (sfdcIFrameOrigin - upper case F), in Lightning it is named (sfdcIframeOrigin - with lower-case f) which breaks all messaging functionality. thus the API is not able to pass post message information to the main Salesforce frame and implicitly to Open CTI component.

We have overcome this issue by making the integration.js accept both frames - thus the communication works. 

I have raised this as an issue with Salesforce, to clarify if that is a bug or the functionality is intentionally broken, unfortunately I did not manage to get an answer and was redirected to Developer Community.

Does anyone have a better idea where to post an issue report that has more visibilty with Sf.com developers ?
Anant Agarwal 15Anant Agarwal 15
Hi Andreas,

Did you get any solution to your problem?

We are also trying to implement a similar solution.

 
Akos MateAkos Mate
The issue with integration.js has been also solved, Omni-channel and OpenCTI integration is available in boths Service Console & Lightning. 
Charleston SantosCharleston Santos
Hi Akos
Do you have any example to share?

Regards
Akos MateAkos Mate
Hi Charleston 

Are you looking to create such an application ot to use one? We have created Desktop Connect, that integrates Avaya into Salesforce, and in the mean time we have also added digital channels like SMS, WhatsApp, Facebook Msg, Twitter, Skype to be routed to Salesforce Omnichannel.

To have a single application to blend both voice and omni-channel, including digital channels mentioned above, we have used integration.js API to access information on alerting tasks, allowing the user to view, accept, decline (w. reason) items, and to synchronize between telephony states.

The end result can be seen here: https://youtu.be/TtcfeNhy75A  (at 1:39 - we are using the integration.js API to display and accept the Omni-channel task - a WhatsApp message). You can check out the Desktop Connect Test Drive (https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3000000B4I1HEAV) for an onhands experience. 

Regards
Akos