Mreža ima različite opcije za integraciju IP-PBX Asterisk i CRM Bitrix24, ali smo ipak odlučili da napišemo svoju.
Funkcionalno, sve je standardno:
Klikom na link sa telefonskim brojem klijenta u Bitrix24, Asterisk povezuje interni broj korisnika u čije ime je ovaj klik napravljen sa telefonskim brojem klijenta. U Bitrix24 se snima zapis o razgovoru, a na kraju razgovora se povlači zapis razgovora.
Asterisk stiže poziv spolja - u Bitrix24 interfejsu pokazujemo klijentsku karticu zaposleniku na čiji je poziv stigao.
Ako takvog klijenta nema, otvorite karticu za kreiranje novog potencijalnog klijenta.
Čim se poziv završi, to odražavamo na kartici i izvlačimo snimak razgovora.
Ispod reza ću vam reći kako sve sami podesiti i dati link na github - da, da, uzmi i koristi!
Opšti opis
Našu integraciju smo nazvali CallMe. CallMe je mala web aplikacija napisana u PHP-u.
Analizu konfiguracije, sigurnosne probleme, dobijanje sertifikata, pa čak i odabir web servera ostaviću van okvira članka - o tome je dosta pisano. Aplikacija nema ograničenja, radi i na http i https.
Imamo https, šifrirajmo certifikat.
Ako ste sve uradili kako treba, onda bi klikom na link trebali vidjeti ovako nešto
Imam ga xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Takođe ga morate kopirati na sebe, potrebno je za odlazne pozive.
Važno!
Ssl sertifikat mora biti konfigurisan na Bitrix24 serveru (možete koristiti letsencrypt), inače BitrixXNUMX API neće raditi. Ako imate verziju u oblaku, ne brinite - ssl je već tu.
Važno!
U polju "Adresa procesora" mora se navesti adresa dostupna sa Interneta!
I sa završnim dodirom, instalirajmo naš CallMeOut kao aplikaciju za pozivanje (tako da će klikom na broj na PBX-u poletjeti komanda za upućivanje poziva).
U meniju odaberite: Više -> Telefonija -> Više -> Postavke, postavite na "Broj za odlazne pozive prema zadanim postavkama" Aplikacija: CallMeOut i kliknite "Sačuvaj"
podešavanje zvjezdice
Za uspješnu interakciju između Asterisk i Bitrix24, moramo dodati callme AMI korisnika u manager.conf:
isključite unos u CDR tablici za ovaj lokal (tamo nije potreban), postavite vrijeme završetka poziva, izračunajte trajanje, ako rezultat poziva nije poznat - postavite (varijabilna Zovite me DISPOSITION) i, posljednji korak, pošaljite sve u Bitrix kroz sistemski curl.
I još malo magije - dolazni poziv:
888999 => {
&recording(${CALLERID(number)},${EXTEN});
Answer();
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // выставляем CallerID если узнали его у Битрикс24
Set(CallStart=${STRFTIME(epoch,,%s)}); // начинаем отсчет времени звонка
Queue(Q1,tT);
Set(CallMeDISPOSITION=${CDR(disposition)});
Hangup();
}
Kaže da instaliram PBX ID pozivaoca (ime) varijabla CallMeCallerIDName.
Samu varijablu CallMeCallerIDName, pak, postavlja CallMe aplikacija (ako Bitrix24 ima puno ime za broj pozivaoca, mi ćemo ga postaviti kao ID pozivaoca (ime), ne - nećemo ništa učiniti).
CallMeDEBUG - ako je 1, tada će svi događaji koje obrađuje aplikacija biti upisani u datoteku dnevnika, 0 - ne upisujemo ništa
tech SIP/PJSIP/IAX/itd
authToken — Bitrix24 token autorizacije, odlazni webhook autorizacijski kod
bitrixApiUrl — URL dolaznog webhooka, bez profila/
ekstenzije — lista eksternih brojeva
kontekst — kontekst za pokretanje poziva
listener_timeout - brzina obrade događaja iz zvjezdice
asterisk - niz sa postavkama veze sa zvjezdicom:
domaćin - ip ili ime hosta servera asterisk
šema — dijagram povezivanja (tcp://, tls://)
luka - luka
korisničko ime - Korisničko ime
tajna - lozinka
connect_timeout - vremensko ograničenje veze
read_timeout - istek vremena za čitanje
primjer fajla postavki:
<?php
return array(
'CallMeDEBUG' => 1, // дебаг сообщения в логе: 1 - пишем, 0 - не пишем
'tech' => 'SIP',
'authToken' => 'xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6', //токен авторизации битрикса
'bitrixApiUrl' => 'https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/', //url к api битрикса (входящий вебхук)
'extentions' => array('888999'), // список внешних номеров, через запятую
'context' => 'dial_out', //исходящий контекст для оригинации звонка
'asterisk' => array( // настройки для подключения к астериску
'host' => '10.100.111.249',
'scheme' => 'tcp://',
'port' => 5038,
'username' => 'callme',
'secret' => 'JD3clEB8_f23r-3ry84gJ',
'connect_timeout' => 10000,
'read_timeout' => 10000
),
'listener_timeout' => 300, //скорость обработки событий от asterisk
);
Postavljanje nadzornika
Supervizor se koristi za pokretanje procesa obrade događaja Asterisk CallMeIn.php, koji prati dolazne pozive i komunicira sa Bitrix24 (prikaži karticu, sakrij karticu, itd.).
Pitanja, prijedlozi - molimo u komentarima. Također, ako vas zanima kako je tekao razvoj ove integracije, napišite, a u sljedećem članku pokušat ću sve detaljnije otkriti.