beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars
CloudTelefonie geïntegreerd met uw software: kinderlijk eenvoudig
van beett…. CS130304
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars Inleiding
4
Overzicht integratie
5
Basisprincipes
6
HTTP en encryptie
6
Matching Users
6
Multiple systems
6
Geen directe toegang tot gegevens
6
AutoCall
7
Opzetten telefoongesprek
7
Ophalen gesprek informatie
8
Matching
8
AutoInfo
10
Data overdracht
11
Bericht inhoud
11
van beett… -3-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars Inleiding In deze brochure wordt uitvoerig beschreven hoe beett… het Cloud System en Telephony Integration Protocol, kortweg CSTIP® genoemd, in haar telefonie-software heeft geïmplementeerd en welke telefonie functies daardoor in de software beschikbaar komen. CSTIP® is een platform voor de koppeling tussen cloud applicaties en cloud-telefonie. Beiden kenmerken zich door locatie en platform onafhankelijkheid. De gebruiker van een cloud applicatie kan overal ter wereld op ieder moment inloggen: anytime, anywhere, anyhow. Voornaamste voorwaarde is dat de server bereikbaar is (internet) en dat het aangeboden platform (meestal HTML) kan worden ontsloten. Dit geldt ook voor CloudTelefonie van beett…. Dat kan omdat bij beett… geen toestel, maar een persoon wordt gebeld. Hierdoor is het mogelijk om die persoon altijd automatisch te bereiken: anytime, anywhere, anyhow. Een gebruiker kan op eenvoudige wijze zonder verdere hulpmiddelen op ieder toestel inloggen. Dit kan een vast SIP of een draadloos DECT toestel zijn, ‘n smartphone (Android, iPhone, …) of een softphone (Windows, Android, Linux, Apple, …) zijn. Na inloggen gedraagt het toestel zich precies zoals het voor u is ingeregeld. Daarmee bepaalt u waar, wanneer en hoe u bereikbaar bent, zonder dat de beller dit weet en moeite hoeft te doen om u te vinden. En hetzelfde geldt natuurlijk als u zelf belt. Toepassing van CSTIP® door beett… is niet beperkt in locatie, platform of techniek: de basis wordt gevormd door internet, TCP en HTML. Maar ook het aantal applicaties dat tegelijk voor één klant wordt bediend, is niet beperkt tot één. De enige voorwaarde die de hantering van CSTIP® stelt is dat zowel de telefooncentrale als de software het protocol moeten ondersteunen. Deze brochure toont u de eenvoudige wijze waarop uw software met die van beett… CloudTelefonie kan worden geïntegreerd. De code wordt u door ons aangereikt. In de code-voorbeelden wordt van van PHP en MySQL uitgegaan. Ook zijn .NET en JAVA mogelijk. U staat er niet alleen voor: beett... zal u als partner ondersteunen bij het realiseren van de gewenste koppelingen. De ervaring leert dat een dergelijke inspanning erg beperkt en niet zelden binnen 1 mandag kan worden gerealiseerd.
van beett… -4-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars Overzicht integratie De communicatie tussen beett… CloudTelefonie en uw software loopt via HTTP(S). De presentatie wordt gerealiseerd op een platform naar keuze. Het meest ideaal is een presentatie in de browser, omdat dan het maximale rendement laagdrempeliger kan worden behaald. Wij leveren u de juiste URL, licentiecode en de code om in uw applicatie in te bouwen. De verzonden en op de PBX opgeslagen data is altijd versleuteld. Het gaat immers niet zelden om gevoelige informatie. Het grote voordeel van CSTIP® is dat u de User Interface (UI) van uw applicatie nauwelijks hoeft aan te passen. Deze aanpassing is beperkt tot een knop om te bellen en het tonen van nieuwe informatie zoals gesprekshistorie. De realtime afhandeling van gesprekken wordt dus niet in uw applicatie gedaan. Daarvoor zijn het UserConsole en de CallInfo-APP bedoeld, die door ons aan de klanten worden aangereikt. U hoeft uw applicatie niet om te bouwen naar een multitransactie systeem (wat als een klantenkaart wordt bewerkt en een telefoontje binnenkomt?). Tevens is het voordeel voor de eindklant dat meerdere applicaties tegelijk worden bediend. De functies die door CSTIP® worden ondersteund en door beett… hier voor u zijn uitgewerkt, zijn: 1. 2. 3. 4. 5.
Initiëren van het telefoongesprek Terugluisteren van een eerder gevoerd gesprek Gesprekshistorie Plaatsen klantenkaart met filters Koppelen gesprek en specifieke klantenkaart
Onderstaand vindt u een schematische weergave van de integratie door toepassing van het protocol.
De functies 1, 2 en 3 hebben te maken met telefoneren. Dit wordt behandeld in het hoofdstuk 'AutoCall'. De functies 4 en 5 hebben betrekking op het presenteren van en koppelen aan informatie in uw software applicatie. Dit wordt behandeld in het hoofdstuk 'AutoInfo'. Het volgende hoofdstuk zet een aantal basisprincipes uiteen. van beett. -5-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars Basisprincipes Een aantal principes hebben betrekking op alle onderdelen van onze toepassing van CSTIP®. Deze staan hier kort uitgewerkt.
HTTP en encryptie De communicatie tussen uw applicatie en beett... is altijd op het HTTP protocol gebaseerd. Het betreft HTTP_GET en HTTP_POST. Het voordeel van deze aanpak is dat u zelden problemen krijgt met de configuratie van router dan wel firewall. Indien gewenst kan ook HTTPS worden ingezet. De communicatie is versleuteld in het kader van beveiliging. Het gevolg is dat zelfs in het geval dat er communicatie wordt onderschept, het nagenoeg onmogelijk is de feitelijke data en aanroepen te achterhalen. Het bericht wordt versleuteld met een sleutel die onder andere is gekoppeld aan het licentienummer. Bijvoorbeeld aes256 ("chaighaepool1si0ath12cpuCheihhehaipu"). Iedere licentiecode is uniek en van meerdere factoren afhankelijk zodat afnemers onderling elkaars gegevens niet kunnen ontsleutelen.
Matching Users Bij CloudTelefonie zullen gesprekken worden gerouteerd naar gebruikers in plaats van naar toestellen. Dit is een cruciaal verschil tussen traditionele telefonie en onze CloudTelefonie. De gebruikers van uw applicatie moeten op logisch niveau worden gekoppeld aan de gebruikers op de PBX. Dit wil zeggen dat binnen uw applicatie bekend moet zijn dat gebruiker A is gekoppeld aan telefonie account 301 (PBXUser=301). Iedere aanroep door gebruiker A, is voor beett... net alsof PBXUser 301 handelt.
Multiple systems CSTIP® maakt het mogelijk om meerdere systemen met één licentie te koppelen, dus ook bij beett.... Zo kunnen de klantenkaarten uit meerdere systemen automatisch worden getoond op het moment dat een gesprek binnenkomt. Zo kunnen op de supportafdeling uit het Planningspakket de onderhoudsmeldingen die er voor een klant lopen worden getoond en daarnaast wat de financiële status (“Meer dan 5.000,- langer dan 60 dagen open, doorverbinden debiteuren afdeling!”) van de betreffende klant is.
Geen directe toegang tot gegevens De gegevens zijn binnen beett… niet oproepbaar op initiatief van een gebruiker. De klantenkaarten zijn alleen beschikbaar binnen het UserConsole of de CallInfo-APP als de filters overeenkomen met het actuele telefoongesprek. Zonder actueel gesprek zijn deze op geen enkele wijze oproepbaar. De historische gegevens zijn alleen in ruwe versleutelde vorm oproepbaar.
van beett… -6-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars AutoCall Onderstaand wordt de communicatie voor het initiëren van een telefoongesprek tussen uw applicatie en de PBX van beett... schematisch weergegeven.
Het betreft het opzetten van een telefoongesprek, het terugluisteren van een gespreksopname en het ophalen van gesprekshistorie. Het initiëren van een gesprek geschiedt in uw applicatie. Als u deze actie en het verband naar het actuele onderwerp in uw software registreert (Your Unique Record ID), dan kan later de link naar het uiteindelijk resultaat worden gerealiseerd. Daartoe moet u dit ID meesturen bij het initiëren van een gesprek. beett... slaat dit ID op en verwerkt die later in de gesprekshistorie. Dit ID is echter niet verplicht. Verplichte velden zijn gebruikerID en telefoonnummer. Het gevolg is dat de gebruiker het telefoonnummer gaat bellen. De centrale zal eerst de gebruiker bellen, en nadat verbinding tot stand is gekomen het telefoonnummer bellen. Het terugluisteren van een gesprek wordt gerealiseerd door een bijzonder telefoonnummer te bellen. Deze bijzondere telefoonnummers worden in de historische data ter beschikking gesteld en bestaan doorgaans uit “rec_
”. Uw applicatie roept de meegeleverde en geregistreerde centrale module “CSTIP® module” op uw server aan. Het uitvoeren van de encryptie en de aanroep naar de PBX server wordt door deze module gerealiseerd. Het ophalen van historische gespreksgegevens wordt met deze zelfde module gerealiseerd, door aan te geven vanaf welk moment de gegevens gewenst zijn.
Opzetten telefoongesprek Onderstaande de PHP code waarmee vanuit uw applicatie een gesprek wordt geïnitieerd. Via dezelfde weg kan er ook een gesprek teruggeluisterd worden. crypt = new crypt(); $code=$crypt->encr$yptData($TENANT."||".$PBXUSER."||".$PHONENO."||”.$MODULE.”||".$GUID,$LICENCEKEY); file_get_contents($PBXAPIURL.'?Callme&Tenant='.$TENANT.'&Code='.$code);
Hierin zijn de volgende velden van belang:
van beett... -7-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars 1. $PBXAPIURL is de URL naar de telefooncentrale. Bij een integratie wordt deze meegeleverd. Deze is per klant verschillend. 2. $LICENCEKEY is de licentie sleutel. Bij een integratie wordt deze meegeleverd. Deze is per klant verschillend. 3. $TENANT is de tenant naam van een klant. Bij het inregelen van een klant is deze bekend en wordt deze aangeleverd. 4. $MODULE is de applicatie of applicatie module waaruit een gesprek gevoerd is. Deze kan dan bij het ophalen van de gespreksinformatie gebruikt worden om gesprekken te filteren. 5. $PBXUSER is het gebruikers belnummer. Bij het aanmaken van het inrichtingsschema, zijn deze nummers bekend. 6. $PHONENO is het telefoonnummer of een recordingid (“rec_1234647”) wat gebeld wordt. 7. $GUID is een unieke applicatie id binnen de applicatie. Deze GUID zal meegestuurd worden op het moment dat er telefoongespreksinformatie wordt opgevraagd.
Ophalen gesprek informatie Er is ook een mogelijkheid om gespreksinformatie op te halen van de telefooncentrale. De gesprekken die geïnitieerd zijn vanuit uw applicatie bevatten uw unieke applicatie id (YourID). Deze id zal weer worden meegestuurd zodat u deze aan de items binnen uw applicatie kunt koppelen. Ook hier de code. Zoals steeds is deze eenvoudig en wordt u door de CloudTelefonie provider, dus ook door beett… aangeboden. $crypt = new crypt(); $encrypteddata = $crypt->encryptData($TENANT."||$TIMESTAMP||$MODULE", $LICENCEKEY); $ret_val = file_get_contents($PBXAPIURL.'?getCalls&Tenant='.$TENANT.'&Code='.$encrypteddata); if($ret_val!=""){ $DATA=$crypt->decryptdata(urldecode($ret_val),$LICENCEKEY); endif
De volgende velden spelen voor u een rol: 1. $PBXAPIURL is de URL naar de telefooncentrale. Bij een integratie word deze meegeleverd. Deze kan per klant verschillend zijn. 2. $LICENCEKEY is de licentie sleutel. Bij een integratie wordt deze meegeleverd. Deze is per klant verschillend. 3. $TENANT is de tenant naam van een klant. Bij het inregelen van een klant is deze bekend en wordt deze aangeleverd. 4. $MODULE is de filter voor het ophalen van de gesprekken. 5. $TIMESTAMP bevat de datum tijd in het “yyyy-mm-dd HH:ii:ss” formaat. Vanaf deze timestamp worden de volgende 100 gesprekken opgehaald. Als resultaat ontvangt u de historische gespreksgegevens. Een record is één gesprek en bevat 13 velden. Het einde van iedere gesprek wordt gescheiden door een “\r\n”. Uiteraard ontvangt u bij uw licentie de veldnamen, formaat en hun betekenis.
Matching Nadat de historische gespreksgegevens zijn opgehaald, kunnen deze op diverse manieren worden gekoppeld aan de gegevens binnen uw applicatie. De eerste methode is het uitsluitend gebruik maken van het veld met de externe unieke applicatie ID (onderwerp), waarmee het gesprek is geïnitieerd. Deze is bij het opzetten van het gesprek vastgelegd. Het is daarmee zeker dat er een relatie is tussen het gesprek en het onderwerp dat is gekoppeld aan het onderwerp. Daarnaast kan tijdens een gesprek ook een relatie zijn gelegd tussen dat specifieke gesprek en een onderwerp. Uiteraard kan ook hierop worden gematcht. In dit geval is het ook zeker dat er een relatie is. van beett… -8-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars Een minder zekere methode is het matchen op basis van telefoonnummer (outbound). Als u de contactgegevens van de klant in uw systeem vergelijkt met de gegevens uit de gesprekshistorie, dan is deze relatie te maken. Het is praktisch dat inbound en outbound altijd in hetzelfde formaat worden weergegeven (+31402180800). Zodoende kunt u door de voorloopnul in uw data weg te laten met LIKE %uwdata% matchen.
van beett... -9-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars AutoInfo De applicaties UserConsole en de CallInfo-APP kunnen klantenkaarten tonen. Beide zijn op alle nu bekende platformen (Android, iPhone, iTab, Linux, Windows, Apple, ...) beschikbaar. Het UserConsole is de webbased bedienpost, welke automatisch de klantenkaarten van het actuele gesprek toont. De CallInfo-APP toont op afroep de klantenkaarten van het actuele gesprek, ook voordat het gesprek is aangenomen. Een klantenkaart is de relevante informatie van de klant in samenvatting. De inhoud van de klantenkaart is volledig vrij. Zo kunt u vanuit bijvoorbeeld CRM een overzicht presenteren met bedrijfsnaam, accountmanager en lopende offertes, of bedrijfsnaam, crediteurenbeheerder, accountmanager, en openstaande facturen. De technische uitvoering van een klantenkaart is HTML die wordt ingebed in een DIV (content
) met een voorgeschreven CSS. De klantenkaart mag URLs bevatten, maar geen JavaScript. Binnen CSTIP® wordt geconfigureerd welke gebruikers toegang hebben tot deze functionaliteit. Alle gebruikers moeten lid zijn van dezelfde Tenant (=bedrijf). Deze Tenant wordt gekoppeld aan de licentiecode. Bij activatie ontvangt u zowel de Tenant als de licentiecode. De server wordt op basis van IP gekoppeld aan de licentiecode. Een juiste combinatie van serverIP, licentiecode, Tenant, en afhankelijk van functionaliteit GebruikerID, zijn voorwaarde voor het correct verlopen van de communicatie. In het volgende diagram wordt de integratie van de applicatie getoond:
Klantenkaarten worden ten behoeve van een optimale respons centraal op de PBX klaargezet. Het versturen van klantenkaarten gebeurt door middel van meerdere HTTP_GET Requests. Bij iedere klantenkaart dienen 1 of meer filters gedefinieerd te worden. Deze filters bepalen wanneer de klantenkaart getoond wordt. Zonder filters worden klantenkaarten NOOIT getoond. Deze filters bestaan uit datumtijd van/tot (denk aan een marketing-actie) en inbound (binnennummer) en outbound (buitennummer). Inbound en outbound worden gefilterd op het opgegeven deel van het nummer.
van beett… -10-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars De strategie om de klantenkaarten te verversen bepaalt u, dus of alles periodiek vervangen en/of op basis van gebeurtenis (event based) alleen het gewijzigde vervangen wordt. In dat laatste geval wordt uitsluitend dat vervangen wat gewijzigd is. Dit is mogelijk omdat een klantenkaart kan worden voorzien van een unieke identificatie. Stel dat in CRM een klant het unieke ID “123” heeft, dan kan de klantenkaart het ID=”yoursystem.123” hebben. De kwaliteit van klantenkaarten is bij event based beter, omdat deze dan altijd actueel zijn. Bij periodiek zijn de klantenkaarten gemiddeld een halve cyclus (bijvoorbeeld een kwartier) oud. Om de datalijnen niet vol te laten lopen, is de maximale update-periode 1 minuut.
Data overdracht Hierbij zijn ondermeer de volgende velden voor u van belang: 1. $PBXAPIURL is de URL naar de telefooncentrale. Bij een integratie wordt deze meegeleverd. Deze kan per klant verschillend zijn. 2. $LICENCEKEY is de licentie sleutel. Bij een integratie wordt deze meegeleverd. Deze is per klant verschillend. 3. $TENANT is de tenant naam van een klant. Bij het inregelen van een klant is deze bekend en wordt deze aangeleverd. 4. $CONTENT is het bericht of berichten die verstuurd worden; Dit zal in de volgende hoofdstukken beschreven worden.
Bericht inhoud Onderstaand ‘n voorbeeld van een eenvoudige klantenkaart die in het UserConsole wordt getoond.
Alle noodzakelijke code om een en ander naar de centrale te pushen wordt u door beett… aangereikt. Wij helpen u bij het inbouwen van de door ons aangereikte code. Het totaal neemt niet zelden minder dan één werkdag in beslag.
van beett... -11-
beschrijving C
S T I P ®
toepassing
voor software-ontwikkelaars
Graafschap Hornelaan 137 A 6001 AC WEERT +31 (0)40 21 80 800 www.beett.eu [email protected]