CTI mit SAP C4C

Im Herbst 2022 hat Microsoft Teams eine neue Funktion zur Meldung von eingehenden Anrufen bekommen. Mit wenigen Handgriffen können Sie mit dem neuen Teams Incoming Call Handler eine Integration von Teams mit dem SAP C4C Contact Center erreichen.

Contact Center vs. Call Center

Zur Einleitung möchte ich sie noch einmal auf die Unterschiede eines Call Centers und eines Contact Centers hinweisen. Es gibt natürlich Überlappungen und viele Call Center enthalten auch Funktionen eines Contact Centers und umgekehrt aber sie lassen sich schon unterscheiden:

  • Contact Center
    Software zum Nachverfolgen möglichst aller Kommunikationen mit Kunden und Kontakten. Das sind meist Telefonate aber auch Mails, Fax, Briefe oder Chats sind legitime Kommunikationsformen. Ein Contact Center ist fast immer auch mit anderen Systemen, z.B. einer Buchhaltung, Support-Systeme, Versandsteuerung und Telefonie verbunden, da mit diesen anderen Systemen natürlich Daten und Aktivitäten ausgetauscht werden müssen. Der Mitarbeiter am Telefon möchte ja schon wissen, was der Kunde im Webshop bestellt hat, wo die Ware im Versand ist, ob er offene Forderungen hat oder zu einem verkauften Produkt noch Supportanfragen vorliegen.
    Ein Contact Center ist aber keine Telefonanlage und auch kein Telefon oder Softphone.
  • Call Center
    Das klassische Call Center ist auf die Behandlung von Anrufen optimiert. Das können vom computerunterstützte ausgehende Anrufe sein (Telefonmarketing) aber bei den meisten Firmen ist die Behandlung von eingehenden Anrufen die wichtigste Komponenten. Bei Skype for Business gibt es den Response Group Service (RGS) und Microsoft Teams bietet Call Queues aber dies sind Basisfunktionen. Ein gutes Call Center kann anhand des Anrufers schon den richtigen Agenten finden oder über ein Interview schon eine Vorqualifizierung des Anrufers durchführen und kann viel mehr statistische Daten zur Agentenauslastung liefern. Dafür kostet es natürlich mehr also die Bordmittel.

Auch SAP hat sowohl eine Lösung für ein Call Center als auch für ein Contact Center und eine Folie zeigt gut die beiden Produkte Hand in Hand:


Quelle: https://blogs.sap.com/2016/08/31/using-contact-center-with-sap-hybris-cloud-for-customer/ 

Rechts sehen Sie das Contact Center, welches über einen "SAP Cloud CTI Adapter" von einem SAP Call Center angesprochen wird. In diesem Bild ersetzen wir gleich das Call Center links durch Microsoft Teams

C4C und ausgehende Calls

Nur der Vollständigkeit halber möchte ich das Thema "ausgehende Calls" zuerst abhandeln. Es gibt mehrere Möglichkeiten, wie eine 3rd Party Software mit einem VoIP-Client interagieren kann, um einen Anruf zu starten. Teams ist nun ja eine "Browser-App" oder Electron-App und es gibt zumindest nach meinem Wissen aktuell weder eine TAPI/CAPI-Schnittstelle und auch keine andere API von extern in den Browser. Aber es gibt die TEL-URI, für die sich auch Microsoft Teams registriert:

Sie können das einfach ausprobieren, indem Sie in ihrem Browser die Rufnummer Tel:0311 oder Tel:+49311 anklicken.

Diese Servicerufnummer nennt ihnen einfach den genutzten Provider und ist kostenfrei.

Wer den Teams Client installiert hat, kann aber auch eine Teams -URL verwenden, z.B.:

Wenn Sie eine E.164-Nummer mit "+" verwenden, muss diese natürlich URLEncoded werden, d.h. als "%2b" geschrieben werden

Dies ist natürlich die einfachste Integration. Sie können auch eine Rufnummer über die Zwischenablage in das Dialpad von Teams übernehmen und auch dafür gibt es kleine Tools, die einen beliebigen markierten Text als Rufnummer an Teams senden:

Diese Umsetzung hat natürlich Beschränkungen, da das Contact Center nur den Anruf starten kann aber nicht mitbekommt, ob die Verbindung zustande gekommen ist und wir lange Sie letztlich gedauert hat. Hier muss der Anwender dann selbst die entsprechenden Daten pflegen.

In C4C können Anwender aber natürlich Rufnummern "anklicken" und damit in Teams direkt anrufen.

Allerdings brauchen Sie dann eine Verbindung von C4C zu Teams. Im Jan 2023 habe ich noch keine Information, wie dies auf der Serverseite möglich ist. Microsoft Teams bietet ja noch keine Graph-API an, über die ein Prozess einen Anruf für den Benutzer starten kann. Ein Contact Center könnte nur per BOT z.B. eine Konferenz starten und die beiden Teilnehmer addieren oder erst einen Teilnehmer anrufen und dann zum zweiten Teilnehmer vermitteln.

Es geht aber noch einfacher, da C4C mit eine lokal installierten C4C-Connector auch ausgehende Anruf starten kann. Dazu müssen Sie aber eine DLL für Teams anpassen und in das C4C Verzeichnis kopieren.

Dies ist natürlich keine echte Integration in C4C, da das Contact Center so zwar einen Anruf starten kann, aber nichts über den Erfolg/Misserfolg und die Dauer mitbekommt. Aber immer noch besser als gar nicht zu haben.

Eigentlich schade, dass die "Aktion" für eine Dialout nicht über eine generische Konfigurationsdatei steuerbar ist und SAP nicht einfach eine Version für "Tel:"-URLs mitliefert.

Also bleibt nur, dass Sie die DLL von SAP holen, einen Aufruf zur Teams-URL erweitern, kompilieren und auf dem Client einspielen.

Ein Test einer eigenen DLL steht noch aus.

Eine weitere Möglichkeit habe ich auf der Webseite von Anywhere365 gefunen

Das macht mit dein Eindruck, dass der C4CConnector auch bei ausgehenden Anrufen einfach eine URL aufrufen kann. Da aber Teams keine passende Schnittstelle anbietet, ist das aktuell ein Toter Pfad. Ich denke nicht, das Sie auf jedem PC auch in Gegenrichtung einen kleinen Webservice auf https://localhost/<port> laufen lassen wollen, um solche Request von C4C anzunehmen und dann an den Teams Client weiter zu senden.

Eingehende Calls

Interessanter ist natürlich der eingehende Anruf an einen Teams-Teilnehmer in Verbindung mit C4C. SAP hat schon für ihr eigenes Call Center einen "Connector" geschrieben, welcher auf der einen Seite den eingehenden Anruf gemeldet bekommt und seinerseits an die lokal im Browser laufende Plattform liefert. Wenn Sie etwas die Dokumentation lesen, dann sehen Sie aber, dass die Implementierung sehr einfach ist.

Mit den richtigen Suchbegriffen finden Sie sehr schnell bei SAP auch die entsprechende Beschreibung zur Schnittstelle, mit der eine beliebige Software einen "Incoming Call"-Dialog im C4C Client starten kann.

Achtung: Der Port und Server ist nicht auf 127.0.0.1 sondern auf 0.0.0.0 gebunden und theoretisch kann damit auch ein anderer Client über das Netzwerk zumindest "stören", wenn nicht die Windows Firewall den Zugriff von extern unterbindet.

Ob die Schnittstelle bei ihnen schon vorhanden ist und funktioniert, können Sie direkt per Browser testen. Wenn die von ihrem Connector verwendeten Ports noch auf den Standarteinstellungen stehen, dann sollten diese Links direkt funktionieren:

http://localhost:36729/?CID=BCM1234&ANI=+495251304613
https://localhost:36731/?CID=BCM1234&ANI=+495251304613

Vermutlich ist meine Rufnummer nicht bei ihnen hinterlegt, so dass C4C keinen passenden Kontakt finden wird:

Wenn der Aufruf per HTTPS noch nicht funktioniert, dann müssen Sie auf dem Client ein Zertifikat für "Localhost" installieren und in C4C die Verschlüsselung aktivieren.

Hinweis: Microsoft Teams erlaubt nur HTTPS-URLs.

Sie müssen daher ein Zertifikat für "localhost" ausstellen und auf jedem Client bereitstellen.

Die nächsten Schritte sind dann aber einfach und habe ich auf Teams Incoming Call Handler beschrieben.

  • Konfiguration der URL in einer passenden Calling Policy
    z.B. https://localhost:36731/?CID=BCM1234&ANI={phone}
  • Zuweisen der Richtlinie an den Benutzer
    Über diesen Weg können Sie das Rollout der Einstellung auf individuelle Benutzer beschränken.
  • Aktivierung durch den Benutzer
    Nun ist noch der Anwender gefordert, diese neue Funktion in seinem Teams Client zu aktivieren.
  • Eingehender Anruftest
    Beim nächsten vom Anwender angenommenen Anruf mit einer Rufnummer sollte Teams nun den C4C Connector ansprechen, der seinerseits dann die C4C Session im Browser mit der Nummer versorgt, so dass der Anwender direkt das "Live Activity Center" öffnen und die Kundeninteraktion festhalten kann.

Einschränkung

Eine Einschränkung möchte ich aber nicht verschweigen. Microsoft Teams ruft nicht einfach nur die konfigurierte URL im Hintergrund auf, sondern startet ein neues Browser-Fenster, um dann die URL anzusprechen. Diese Fenster sieht der Benutzer etwas in folgender Form:

Leider habe ich noch keinen Weg gefunden, dass Teams die URL "versteckt" aufruft oder wie ich per Code dann das Fenster ohne Rückfrage direkt wieder schließen lassen kann.

Vielleicht stellt SAP ja doch noch mal eine URL bereit, die ich direkt in Teams als Adresse hinterlegen kann und in einem neuen Fenster dann direkt das "Live Activity Center" für die anrufende Nummer öffnet. Vielleicht kann man das auch anpassen-

https://<kundenadresse>.crm.ondemand.com/sap/ap/ui/repository/SAP_UI/HTML5/newclient.html?...........?ANI=+495251304613

Vielleicht ist einer meiner Leser ein SAP-Entwickler oder weiß, wie man C4C entsprechend anpassen kann. Dann freue ich mich über einen Hinweis oder Link, wenn Sie selbst darüber bloggen oder ich erweitere diese Seite -> Kontakt

Ausblick

Ich habe leider nicht regelmäßig Zugriff auf ein SAP-System und noch weniger auf einen Client mit installiertem C4C Connector. Insofern kann ich nicht sicherstellen, dass die hier beschriebene Funktion auch zukünftig noch funktioniert oder sich URls, Ports o.ä. ändern. Ich kann mir auch durchaus vorstellen, dass SAP den C4C Client einmal als "App" innerhalb von Teams bereitstellt. Dann könnte die App nativ die Teams-Schnittstellen nutzen und man bräuchte keinen Connector, der über localhost per HTTP mehr oder minder unsicher angesprochen wird.

Vielleicht gibt es irgendwann auch eine direkte Kopplung des C4C Backend mit Microsoft Teams, so dass ein eingehender Anruf z.B. über einen Webhook an C4C gemeldet wird. Allerdings ist das dann z.B. in Verbindung mit Call Queues doch nicht so einfach den passenden Agenten zu ermitteln. Daher vermute ich, dass die lokale Lösung vermutlich lange bestand haben könnte.

Vielleicht gibt es irgendwann eine Zwischenlösung, dass der Teams Client per HTTPS nicht gegen localhost sondern "https://<kundenname>.crm.ondemand.com" mit Authentifizierung anspricht. Dann könnte die Funktion ohne den lokalen Connector arbeiten.

Es verirren sich vermutlich eher wenige SAP-Kunden und C4C-Consultants auf diese Seite. Vielleicht nutzen Sie die Möglichkeit, diese Beschreibung auch in den SAP-Zirkeln zu teilen.

Weitere Links