Všechny modelové řady VoIP ústředen Daktela PBX jsou otevřené systémy s bohatými možnostmi integrací do dalších systémů. Ústředna už dnes v mnoha případech není chápána jako samostatně funkční celek, ale jako jedna z součástí uceleného IT řešení. Ústředny Daktela disponují API rozhraním, které je možné využívat při integracích. Jedná se zejména o přímé vytačení kontaktů jedním stisknutím myši (click & dial ) například z prodejních systémů nebo CRM. Data ustředny jsou uložena v SQL databázi na kterou je možné přistupovat z dalších firemních IT systémů.
V řešeních pro callcentra je možné ústřednu integrovat s již existujícími CRM systémy. Mezi nejběžnější integrační funkce patří automatické otevírání karty zákazníka při příchozím hovoru a vytáčení čísel přímo ze CRM systému.
Máme bohaté zkušenosti z integrací našeho řešení do CRM systémů jako Salesforce, Microsoft Dynamics, Sugar CRM a další.
number=226221245 (veřejné telefonní číslo) exten=100 (číslo linky uživatele)
Příklad požadavku:https://daktela.pbx/apiscripts/call.php?exten=100&number=226211245
Příklad odpovědi: RETURN: OKHTTP_URL - adresa cílového serveru, kam chceme zaslat data nebo notifikace HTTP_PORT - HTTP port cílového serveru HTTP_METHOD - HTTP metoda, která má být pro zaslání informací použita (POST,GET) HTTP_USERNAME - uživatelské jméno cílového serveru HTTP_PASSWORD - heslo pro přístup na cílový server parametry - libovolné množství proměnných, které chceme předat cílovému serveru
Příklad požadavku:Kdekoliv v dialplanu, v sekci uživatelský kontext, je možné zavolat například toto:
AGI(/apiscripts/webhook.php,ssl://crm.cz/storedata.php,443,POST,apiusername,apiheslo,callid=${CALLBACK_CALLERID}, timecnt=${IVR_INPUT},dnd=${FROM_DID},lng=${CALLBACK_LANGUAGE}) Příklad odpovědi: Je nastavená dialplanová proměnná WEBHOOK_RETURN_VALUE na hodnotu 1 (OK) nebo 0 (ERROR)HTTP_URL - adresa cílového serveru, kam chceme zaslat data nebo notifikace HTTP_PORT - HTTP port cílového serveru HTTP_METHOD - HTTP metoda, která má být pro zaslání informací použita (POST,GET) HTTP_USERNAME - uživatelské jméno cílového serveru HTTP_PASSWORD - heslo pro přístup na cílový server parametry - libovolné množství proměnných, které chceme předat cílovému serveru
Příklad požadavku:Kdekoliv v dialplanu, v sekci uživatelský kontext, je možné zavolat například toto:
AGI(/apiscripts/webhook.php,ssl://crm.cz/getcustomername.php,443,POST,apiusername,apiheslo,callid=${CALLERID}) Příklad odpovědi: Pokud getcustomername.php vrátí JSON ve formátu např. {"Name":"David","Surname":"Hajek","Company":Daktela} budou nastavené dialplánové proměnné Name = David, Surname = Hajek, Company = Daktela. Dále je nastavená dialplanová proměnná WEBHOOK_RETURN_VALUE na hodnotu 1 (OK) nebo 0 (ERROR)action=create_agent login=Agent/100 password=heslo name=Petr Novak
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=create_agent&login=Agent/100&password=heslo&name=Petr Novak
Příklad odpovědi: {"action":"create_agent","status":true,"return":[true],"error_str":null}action=delete_agent login=Agent/100
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=delete_agent&login=Agent/100
Příklad odpovědi:{"action":"delete_agent","status":true,"return":[true],"error_str":null}
action=assign_agent_to_campaign login=Agent/100 queues=1000,2000 (čísla front oddělených čárkou, do kterých se agent může přihlásit) priority=main (s jakou prioritou/skillem chceme operátora do fronty příhlásit, hodnoty 0,1,2 nebo textově main,wrap,spill. Pro zakázání přihlašování nastavíme na none)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=assign_agent_to_campaign&login=Agent/100&queues=1000,6000&priority=main
Příklad odpovědi:{"action":"assign_agent_to_campaign","status":true,"return":[true],"error_str":null}
action=log_agent login=Agent/100 extension=223 (číslo linky na kterou chceme operátora přihlásit) priority=0 (s jakou prioritou/skillem chceme operátora do fronty příhlásit, hodnoty 0,1,2) queue=5050 (číslo kampaně do které chceme operátora příhlásit)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=log_agent&login=Agent/100&extension=223&queue=5050&priority=0
Příklad odpovědi: {"action":"log_agent","status":true,"return":[true],"error_str":null}action=logoff_agent login=Agent/100 queue=5050 (číslo kampaně ze které chceme operátora odhlásit)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=logoff_agent&login=Agent/100&queue=5050
Příklad odpovědi: {"action":"logoff_agent","status":true,"return":[true],"error_str":null}action=create_campaign number=5050 (číslo odchozí kampaně) name=Odchozi pruzkum (jméno odchozí kampaně)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=create_campaign&number=5050&name=Odchozi_pruzkum
Příklad odpovědi: {"action":"create_campaign","status":true,"return":[true],"error_str":null}action=delete_campaign number=5050 (číslo odchozí kampaně)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=delete_campaign&number=5050
Příklad odpovědi: {"action":"delete_campaign","status":true,"return":[true],"error_str":null}action=pause_agent login=Agent/100 reason_code=wp (kód pauzy definovaný v call centru)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=pause_agent&login=Agent/100&reason_code=wp
Příklad odpovědi: {"action":"pause_agent","status":true,"return":[true],"error_str":null}action=unpause_agent login=Agent/100
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=unpause_agent&login=Agent/100
Příklad odpovědi: {"action":"unpause_agent","status":true,"return":[true],"error_str":null}action=createoutcall login=Agent/100 number=226211245 (veřejné telefonní číslo na které se má volat) autoanswer=1 (pokud telefon operátora podporuje automatické zvednutí hovoru nastavíme 1, jinak 0) id_outcall=1302529791.2347 (jedinečné ID hovoru pomocí kterého lze získat nahrávku, pokud žádné nepředáme, systém vygeneruje ID za nás a jeho hodnotu vrátí) dialing_time=60 (maximální doba čekání v sekundách, než se volané číslo spojí, pokud žádnou dobu nepředáme, tak je nastaveno 300 sekund)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=createoutcall&login=Agent/100&number=800123456&autoanswer=1&id_outcall=1302529791.2347
Příklad odpovědi: {"action":"createoutcall","status":true,"return":{"id_outcall":"1302529520.2443WS","dialing_time":"300"},"error_str":null}action=monitoring login=Agent/100 (Agent, kterého chceme poslouchat) listener=200 (na které interní lince chceme poslouchat)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=monitoring&login=Agent/100&listener=200
Příklad odpovědi: {"action":"monitoring","status":true,"return":{"calling_direction":"out","calling_number":"468008585","calling_queue":9999,"calling_queue_name":"Outbounder","ringing":2,"billsec":3306},"error_str":null}action=transfer login=Agent/100 (Agent u kterého chceme přesměrovat hovor) blind=no (jaký typ přesměrování chceme provést, možnosti jsou "no" -> s představováním, "yes" -> bez představování) number=200 (na jaké číslo chceme hovor přesměrovat)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=transfer&login=Agent/0987&blind=no&number=200
Příklad odpovědi: {"action":"transfer","status":true,"return":{"calling_direction":"out","calling_number":"468008585","calling_queue":"5999","calling_queue_name":"Daktela TEST","ringing":"1","billsec":"61","agent_exten":"100","transfered_to":"200"},"error_str":null}action=device_states
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=device_states
Příklad odpovědi: Možnosti status jsou:action=get_cdrinfo id_outcall=1302529791.2347 (jedinečné ID hovoru pomocí kterého lze získat informace o hovoru z CDR včetně nahrávky)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_cdrinfo&id_outcall=1304941129.7463WS
Příklad odpovědi: Pokud existuje nahrávka je zakódována pomoci Base64 a předána v políčku recording_data_base64_encode. Název souboru je ve políčku userfield. {"action":"get_cdrinfo","status":true,"return":[{"calldate":"2011-05-09 13:38:51","clid":"\"300\" <300>", "src":"300","dst":"800123456","dcontext":"from-internal", "channel":"Local\/800123456@from-internal-acd1;2","dstchannel":"SIP\/test16-0000005f", "lastapp":"Dial","lastdata":"SIP\/test16\/800123456,300,M(qmagent-answer,1304941129.6715U,1304941129,9999,Agen", "duration":"10","billsec":"3","disposition":"ANSWERED","amaflags":"3","accountcode":"","uniqueid":"1304941131.290", "userfield":"\/RECORDINGS\/2011\/05\/09\/CPMG9999-AG132-800123456-300-20110509-133851-1304941131.290.wav", "real_exten":"300","direction":"out","from_did":null,"id_call":"1304941129.7463WS", "recording_data_base64_encode":"......kódování....."}],"error_str":null}action=hangupoutcall login=Agent/100
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=hangupoutcall&login=Agent/100
Příklad odpovědi: {"action":"hangupoutcall","status":true,"return":[true],"error_str":null}action=get_pauses
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_pauses
Příklad odpovědi: {"action":"get_pauses","status":true,"return": [{"reason_code":"13","billable":true,"name":"Backoffice"}, {"reason_code":"12","billable":true,"name":"Email"}, {"reason_code":"11","billable":false,"name":"Prestavka"}, {"reason_code":"10","billable":false,"name":"Obed"}, {"reason_code":"20","billable":true,"name":"Wrap"}],"error_str":null}action=get_all_extensions
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_all_extensions
Příklad odpovědi: {"action":"get_all_extensions","status":true,"return": [{"extension":"100","name":"WELL Michal"},{"extension":"102","name":"Zoiper"}, {"extension":"200","name":"Xlite"}, {"extension":"333","name":"333"}],"error_str":null}action=get_unused_extensions
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_unused_extensions
Příklad odpovědi: {"action":"get_unused_extensions","status":true,"return": [{"extension":"102","name":"Zoiper"}, {"extension":"333","name":"333"}],"error_str":null}action=get_agent_info login=Agent/100
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_agent_info&login=Agent/100
Příklad odpovědi: {"action":"get_agent_info","status":true,"return": {"logged":true,"on_pause":true,"logged_queues_number": [1000],"logged_queues_name":["Odchozi"],"logged_queues_direction": ["outbound"],"all_queues_number":["1000","5000","1000|2000|5000"],"all_queues_name":["Odchozi","SK","ALL_qm"],"all_queues_direction":["outbound","inbound","outbound"],"reason_pause_name":"Wrap","reason_pause_code" :"20","reason_pause_billable":true,"how_long_pause":12382,"agent_name":"Michal Michal Michal","agent_login":"Agent\/999"},"error_str":null}action=create_project name=Vsechny_Odchozi queues=5000,2000 (Seznam front a kampaní, které mají být součástí projektu)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php? action=create_project&name=Vsechny_odchozi&queues=5000,2000
Příklad odpovědi: {"action":"create_project","status":true,"return":[true],"error_str":null}action=edit_project name=Vsechny_Odchozi queues=5000,2000 (Seznam front a kampaní, které mají být součástí projektu)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php? action=edit_project&name=Vsechny_odchozi&queues=5000,2000
Příklad odpovědi: {"action":"edit_project","status":true,"return":[true],"error_str":null}action=delete_project name=Vsechny_Odchozi
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php? action=delete_project&name=Vsechny_odchozi
Příklad odpovědi: {"action":"delete_project","status":true,"return":[true],"error_str":null}action=print_agents
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=print_agents
Příklad odpovědi: {"action":"print_agents","status":true,"return":{"name": ["Odchozi","Prichozi","\u010cep\u010d\u00e1\u0159","Michal Michal Michal","Hugo Hajek","Agent 200","Agent 203","Agent 202","Agent 201"],"id_agent": ["91","90","89","86","81","82","85","84","83"],"id_user": ["62","61","60","57","52","53","56","55","54"],"passwd": ["222","222","233","999","101","200","203","202","201"],"login": ["Agent\/104","Agent\/103","Agent\/102","Agent\/999","Agent\/101","Agent\/200"," Agent\/203","Agent\/202","Agent\/201"],"class": ["AGENTS","AGENTS","AGENTS","AGENTS","AGENTS","AGENTS","AGENTS","AGENTS","AGENTS "],"id_class":["4","4","4","4","4","4","4","4","4"]},"error_str":null}action=get_all_queues_and_campaigns
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=get_all_queues_and_campaigns
Příklad odpovědi: {"action":"get_all_queues_and_campaigns","status":true,"return":{"number": ["2000","1000"],"name":["Prichozi CZ","Odchozi"],"direction": ["inbound","outbound"],"id":["65","64"],"agents_prio_main": [["Agent\/104","Agent\/103","Agent\/102","Agent\/999","Agent\/101","Agent\/200", "Agent\/203","Agent\/202","Agent\/201"], ["Agent\/102","Agent\/103","Agent\/104"]],"agents_prio_wrap":[[], []],"agents_prio_spill":[[],[]]},"error_str":null}action=import_data_to_campaign number=6008 (číslo aktivní kampaně typu Outbounder) charset=UTF8 (v jaké znakové sadě je uložen CSV soubor, kde jsou uloženy data. Další možnosti: CP1250, ISO8859-2) csv= (obsahuje obsah souboru) HTTP hlavička nastavena na Content-Type: text/csv)
Příklad požadavku:Zde je ukázka použiti v PHP za pomocí knihovny cURL. Soubor CSV je uložen v souboru /tmp/TEST_campaign.csv a je uložen ve znakové sadě UTF-8 <?php // Inicializace cURL - jako parametr predame URL, kde bezi Daktela API $curl_handle = curl_init('https://daktela.pbx/apiscripts/callcenter.php'); // Nastavime POST parametry action, number, charset a cestu k souboru k CSV curl_setopt($curl_handle, CURLOPT_POSTFIELDS, Array('action'=>'import_data_to_campaign', 'number'=>6008, 'charset'=>'UTF8', 'csv'=>'@/tmp/TEST_campaign.csv')); // Odpoved z Daktela API vratime jako string curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); // Provedeme uploadovani dat $return = curl_exec($curl_handle); // Pokud doslo k chybe tak ji vytiskneme if(curl_errno($curl_handle)) echo 'Chyba: '.curl_error($curl_handle); // Zavreme session curl_close($curl_handle); // Vytiskneme vraceny data z Daktela API echo $return; ?>
Příklad odpovědi: {"action":"import_data_to_campaign","status":true,"return":{"count":49},"error_str":null}action=process_missed_call queue=1000 (číslo příchozí fronty, kde vznikl zmeškaný hovor) call_id=123456789.1234 (unikátní číslo hovoru označovaný jako UniqueID) verb=ABANDON (klíčová slovo, které vygenerovala asterisk fronta se stavem hovoru - možnosti: ABANDON, EXITWITHTIMEOUT, EXITWITHKEY, EXITEMPTY, CONNECT) number=603603603 (VOLITELNě tel.číslo zákazníká, systém si to jinak dohledá podle call_id)
Příklad požadavku:https://daktela.pbx/apiscripts/callcenter.php?action=process_missed_call&queue=1000&call_id=123456789.1234&verb=ABANDON
Příklad odpovědi: {"action":"process_missed_call","status":true,"return":{true},"error_str":null}
cmd=send (typ akce, v tomto případě poslání SMS zprávy) numbers=603603603 (seznam čísel oddělených čárkou, na které se má poslat SMS zpráva) text=Dobry%20den (text SMS zprávy) vip=yes (volitelný parametr, který určuje, zda se mají SMS posílat přes vyhrazený VIP modem)
Příklad požadavku:https://daktela.pbx/apiscripts/sms.php?cmd=send&numbers=603603603&text=Dobry%20den
Příklad odpovědi: RETURN: OK nebo ERROR v případě chybycmd=receive (typ akce, v tomto případě získání SMS zprávy) flag=true (při hodnotě true se stahují jen SMS zprávy, které jsme ještě nevraceli, při hodnotě false se vrací všechny SMS zprávy, které jsou uloženy)
Příklad požadavku:https://daktela.pbx/apiscripts/sms.php?cmd=receive&flag=true
Příklad odpovědi: ve formátu CSV: "DATUM A CAS PRIJETI SMS ZPRAVY";"CISLO ODESILATELE";"SMS TEXT" "12.10.2009 9:04:17";"603603603";"POKUS"