У сетцы ёсць розныя варыянты інтэграцыі IP-АТС Asterisk і CRM Битрикс24, але мы, усё ж такі, вырашылі напісаць сваю.
Па функцыянале ўсё стандартна:
Клікам на спасылку з нумарам тэлефона кліента ў Бітрыкс24, Asterisk злучае ўнутраны нумар карыстальніка, ад імя якога гэты клік здзейснены, з нумарам тэлефона кліента. У Битрикс24 фіксуецца запіс аб званку і па заканчэнні выкліку падцягваецца запіс размовы.
На Asterisk паступае званок звонку - у інтэрфейсе Битрикс24 паказваем картку кліента таму супрацоўніку, на нумар якога гэты званок прыляцеў.
Калі такога кліента няма, адкрыем картку стварэння новага ліда.
Як толькі званок завершаны, адлюстроўваем гэта ў картцы і падцягваем запіс размовы.
Пад катом распавяду як усё наладзіць у сябе і дам лінк на github - так-так, забірайце і карыстайцеся!
агульнае апісанне
Сваю інтэграцыю мы назвалі CallMe. CallMe - гэта невялікае вэб-дадатак, напісанае на PHP.
Разбор канфіга, пытанні бяспекі, атрыманне сертыфіката і нават выбар web-сервера я пакіну за рамкамі артыкула - пра гэта шмат напісана. У дадатку няма абмежаванняў, яно працуе і па http і па https.
У нас - https, сертыфікат let's encrypt.
Калі вы ўсё зрабілі правільна, то перайшоўшы па спасылцы павінны ўбачыць нешта падобнае
Настройка Битрикс24
Створым два вебхука.
Уваходны вебхук.
Пад уліковым запісам адміністратара (з id 1) ідзем па шляху: Прыкладанні -> Вэбхукі -> Дадаць вебхук -> Уваходны вебхук
Запаўняем параметры ўваходнага вэбхука як на скрінах:
І ціснем захаваць.
Пасля захавання Битрикс24 прадаставіць URL уваходнага вэбхука, напрыклад:
Захавайце сабе ваш варыянт URL без завяршальнага /profile/ - ён будзе выкарыстоўвацца ў дадатку для працы з уваходнымі званкамі.
У мяне гэта https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
У мяне гэта xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Яго таксама трэба скапіяваць сабе, ён патрэбен для здзяйснення выходных званкоў.
Важна!
На серверы Битрикс24 павінен быць наладжаны ssl-сертыфікат (можна выкарыстоўваць letsencrypt), інакш api бітрыкса не будзе працаваць. Калі ў вас хмарная версія, можаце не хвалявацца - там ужо ёсць ssl.
Важна!
У полі «Адрас апрацоўшчыка» павінен быць указаны даступны з сеткі Інтэрнет адрас!
І апошняй рыскай усталюем наш CallMeOut у якасці прыкладання для здзяйснення званкоў (каб па кліку на нумар на АТС ляцела каманда для арыгіналы званка).
У меню выбіраемы: Яшчэ -> Тэлефонія -> Яшчэ -> Налады, ставім у «Нумар для выходнага званка па-змаўчанні» Дадатак: CallMeOut і ціснем «Захаваць»
Настройка asterisk
Для паспяховага ўзаемадзеяння Asterisk і Bitrix24 нам трэба дадаць AMI-карыстальніка callme у manager.conf:
адключаем запіс у табліцу CDR для гэтага экстэншэна (не трэба яно там), выстаўляем час завяршэння званка, вылічаем працягласць, калі вынік званка не вядомы - ставім (пераменная) CallMeDISPOSITION) і, апошнім крокам, шлем ўсё бітрыкс праз сістэмны curl.
І яшчэ крыху магіі – уваходны званок:
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();
}
Яна кажа АТС ўсталяваць CallerID(name) роўным зменнай CallMeCallerIDName.
Сама зменная CallMeCallerIDName, у сваю чаргу, усталёўваецца дадаткам CallMe (калі ў Bitrix24 ёсць прозвішча, імя па нумары патэлефанаваўшага - усталюем у якасці CallerID(name), не - нічога не будзем рабіць).
CallMeDEBUG - калі 1, то ў лог файл будуць пісацца ўсе падзеі, апрацоўваныя дадаткам, 0 - нічога не пішам
тэхналогіі - SIP/PJSIP/IAX/etc
authToken - токен аўтарызацыі бітрыкс24, код аўтарызацыі выходнага вэбхука
bitrixApiUrl — URL уваходнага вэбхука, без profile/
extentions - спіс знешніх нумароў
кантэкст - кантэкст для арыгіналу званка
listener_timeout - хуткасць апрацоўкі падзей ад asterisk
зорачка - масіў з наладамі падлучэння да астэрыску:
гаспадар - ip або hostname сервера астэрыск
схема - схема падлучэння (tcp://, tls://)
порт - порт
імя карыстальніка - Імя карыстальніка
таямніца - пароль
тайм-аўт падлучэння - таймаўт падключэння
час чакання_чытання - таймаўт чытання
прыклад файла настроек:
<?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
);
Настройка supervisor
Supervisor служыць для запуску працэсу-апрацоўшчыка падзей ад Asterisk CallMeIn.php, які адсочвае ўваходныя званкі і ўзаемадзейнічае з Битрикс24 (паказаць картку, схаваць картку і г.д.).
Пытанні, пажаданні - прашу ў каментары. Таксама калі цікава як ішла распрацоўка гэтай інтэграцыі, напішыце, а ў чарговым артыкуле я пастараюся расчыніць усё больш дэталёва.