Daar is verskillende opsies om IP-PBX Asterisk en CRM Bitrix24 op die netwerk te integreer, maar ons het steeds besluit om ons eie te skryf.
Wat funksionaliteit betref, is alles standaard:
Deur op 'n skakel met 'n kliënt se telefoonnommer in Bitrix24 te klik, verbind Asterisk die interne nommer van die gebruiker namens wie die klik gemaak is met die kliënt se telefoonnommer. In Bitrix24 word 'n rekord van die oproep opgeneem en aan die einde van die oproep word 'n opname van die gesprek opgetrek.
Asterisk ontvang 'n oproep van buite - in die Bitrix24-koppelvlak wys ons die kliëntkaart aan die werknemer na wie se nommer hierdie oproep aangekom het.
As daar nie so 'n kliënt is nie, sal ons die kaart oopmaak om 'n nuwe lood te skep.
Sodra die oproep voltooi is, reflekteer ons dit op die kaart en trek 'n opname van die gesprek op.
Onder die snit sal ek jou vertel hoe om alles vir jouself op te stel en vir jou 'n skakel na github gee - ja, ja, neem dit en gebruik dit!
Algemene beskrywing
Ons het ons integrasie CallMe genoem. CallMe is 'n klein webtoepassing wat in PHP geskryf is.
Ek sal die ontleding van die konfigurasie, sekuriteitskwessies, die verkryging van 'n sertifikaat en selfs die keuse van 'n webbediener buite die bestek van die artikel laat - baie is hieroor geskryf. Die toepassing het geen beperkings nie, dit werk oor beide http en https.
Ons gebruik https, kom ons enkripteer sertifikaat.
As jy alles reg gedoen het, sal jy so iets sien deur op die skakel te klik
Stel Bitrix24 op
Kom ons skep twee webhooks.
Inkomende webhaak.
Onder die administrateur rekening (met id 1), volg die pad: Toepassings -> Webhooks -> Voeg webhook by -> Inkomende webhook
Vul die parameters van die inkomende webhook in soos in die skermkiekies:
En klik op stoor.
Nadat dit gestoor is, sal Bitrix24 die URL van die inkomende webhook verskaf, byvoorbeeld:
Stoor jou weergawe van die URL sonder die finale /profiel/ - dit sal in die toepassing gebruik word om met inkomende oproepe te werk.
Ek het hierdie https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Uitgaande webhaak.
Toepassings -> Webhooks -> Voeg webhook by -> Uitgaande webhook
Besonderhede is weer op die skermkiekies:
Stoor en ontvang die magtigingskode
Ek het hierdie xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Jy moet dit ook vir jouself kopieer; jy het dit nodig om uitgaande oproepe te maak.
Belangrik!
'n SSL-sertifikaat moet op die Bitrix24-bediener gekonfigureer word (jy kan letsencrypt gebruik), anders sal die Bitrix-api nie werk nie. As jy 'n wolkweergawe het, moenie bekommerd wees nie - dit het reeds ssl.
Belangrik!
Die "Verwerkeradres"-veld moet 'n adres bevat wat toeganklik is vanaf die internet!
En as 'n laaste aanraking, kom ons installeer ons CallMeOut as 'n toepassing om oproepe te maak (sodat wanneer jy op die nommer op die PBX klik, die opdrag vir die oorsprong van die oproep weg sal vlieg).
In die kieslys, kies: Meer -> Telefonie -> Meer -> Instellings, stel in "Verstek uitgaande oproepnommer" Toepassing: CallMeOut en klik "Stoor"
Stel asterisk op
Vir suksesvolle interaksie tussen Asterisk en Bitrix24, moet ons die AMI-gebruiker callme by manager.conf voeg:
deaktiveer toegang tot die CDR-tabel vir hierdie uitbreiding (dit is nie daar nodig nie), stel die eindtyd van die oproep in, bereken die duur, as die resultaat van die oproep nie bekend is nie - stel (veranderlik CallMeDISPOSITION) en, die laaste stap, stuur alles na Bitrix via die stelselkrul.
En 'n bietjie meer magie - 'n inkomende oproep:
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();
}
Sy sê vir die PBX om te installeer Beller-ID (naam) gelyk aan veranderlike CallMeCallerIDName.
Die CallMeCallerIDName-veranderlike self word op sy beurt deur die CallMe-toepassing gestel (as Bitrix24 'n volle naam vir die beller se nommer het, stel dit as Beller-ID (naam), nee - ons sal niks doen nie).
bitrixApiUrl - URL van die inkomende webhook, sonder profiel/
uitbreidings — lys van eksterne nommers
konteks — konteks vir die skep van 'n oproep
listener_timeout - spoed van gebeurtenisverwerking vanaf asterisk
asterisk - 'n skikking met instellings om aan die asterisk te koppel:
gasheer - ip of gasheernaam van die asterisk-bediener
skema - verbindingsdiagram (tcp://, tls://)
hawe - hawe
Gebruikersnaam - Gebruikersnaam
geheim - wagwoord
connect_timeout — Verbindingstydperk
read_timeout - lees time-out
voorbeeld instellings lêer:
<?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
);
Toesighouer opstelling
Toesighouer word gebruik om die gebeurtenishanteerderproses vanaf Asterisk CallMeIn.php te begin, wat inkomende oproepe monitor en met Bitrix24 interaksie het (wys kaart, versteek kaart, ens.).
Vrae, voorstelle - laat dit asseblief in die kommentaar. Ook, as jy belangstel in hoe die ontwikkeling van hierdie integrasie verloop het, skryf, en in die volgende artikel sal ek probeer om alles in meer besonderhede te openbaar.