Het netwerk heeft verschillende opties voor de integratie van IP-PBX Asterisk en CRM Bitrix24, maar we hebben toch besloten om er zelf een te schrijven.
Functioneel is alles standaard:
Door in Bitrix24 op de link met het telefoonnummer van de klant te klikken, verbindt Asterisk het interne nummer van de gebruiker namens wie deze klik is gemaakt met het telefoonnummer van de klant. In Bitrix24 wordt een record van het gesprek opgenomen en aan het einde van het gesprek wordt het gespreksrecord opgehaald.
Er komt een oproep binnen bij Asterisk van buitenaf - in de Bitrix24-interface laten we de klantkaart zien aan de medewerker op wiens nummer deze oproep is binnengekomen.
Als er geen dergelijke klant is, opent u de kaart om een nieuwe lead aan te maken.
Zodra het gesprek is afgerond, reflecteren we dit op de kaart en halen we de opname van het gesprek tevoorschijn.
Onder de snit zal ik je vertellen hoe je alles voor jezelf kunt instellen en een link naar github geven - ja, ja, neem het en gebruik het!
Algemene beschrijving
We noemden onze integratie CallMe. CallMe is een kleine webapplicatie geschreven in PHP.
Ik zal de analyse van de configuratie, beveiligingsproblemen, het verkrijgen van een certificaat en zelfs het kiezen van een webserver buiten het bestek van het artikel laten - hier is veel over geschreven. De applicatie heeft geen beperkingen, het werkt op zowel http als https.
We hebben https, laten we het certificaat versleutelen.
Als je alles goed hebt gedaan, zou je door op de link te klikken zoiets als dit moeten zien
Bitrix24 instellen
Laten we twee webhooks maken.
Inkomende webhook.
Ga onder het beheerdersaccount (met id 1) naar het pad: Toepassingen -> Webhooks -> Webhook toevoegen -> Inkomende webhook
Vul de parameters van de inkomende webhook in zoals in de screenshots:
En klik op opslaan.
Na het opslaan geeft Bitrix24 de URL van de inkomende webhook, bijvoorbeeld:
Sla uw versie van de URL op zonder de /profile/ erna - deze wordt in de toepassing gebruikt om met inkomende oproepen te werken.
ik heb het https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
ik heb het xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Je moet het ook naar jezelf kopiëren, het is nodig om uitgaande gesprekken te voeren.
Belangrijk!
Er moet een ssl-certificaat worden geconfigureerd op de Bitrix24-server (u kunt letsencrypt gebruiken), anders werkt de BitrixXNUMX-api niet. Maak je geen zorgen als je een cloudversie hebt: ssl is er al.
Belangrijk!
In het veld "Adres van de processor" moet een adres worden opgegeven dat toegankelijk is via internet!
En als finishing touch, laten we onze CallMeOut installeren als een applicatie om te bellen (zodat door op het nummer op de PBX te klikken, er een commando zal vliegen om de oproep tot stand te brengen).
Selecteer in het menu: Meer -> Telefonie -> Meer -> Instellingen, stel in op "Nummer voor uitgaande oproepen standaard" Toepassing: CallMeOut en klik op "Opslaan"
sterretje instellen
Voor een succesvolle interactie tussen Asterisk en Bitrix24 moeten we de callme AMI-gebruiker toevoegen aan manager.conf:
schakel de invoer in de CDR-tabel voor deze extensie uit (het is daar niet nodig), stel de eindtijd van het gesprek in, bereken de duur, als het resultaat van het gesprek niet bekend is - stel in (variabel Noem me AARDIGHEID) en stuur als laatste stap alles naar Bitrix via de systeemkrul.
En een beetje meer magie - een 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();
}
Ze zegt PBX installeren BellerID(naam) variabel CallMeCallerIDNaam.
De variabele CallMeCallerIDName zelf wordt op zijn beurt ingesteld door de CallMe-toepassing (als Bitrix24 een volledige naam heeft voor het nummer van de beller, stellen we deze in als BellerID(naam), nee - we zullen niets doen).
bitrixApiUrl — URL van de inkomende webhook, zonder profiel/
uitbreidingen — lijst met externe nummers
verband — context voor gespreksopbouw
luisteraar_timeout - verwerkingssnelheid van gebeurtenissen vanaf sterretje
asterisk - een array met de verbindingsinstellingen naar de asterisk:
gastheer - ip of hostnaam van de asterisk-server
schema — aansluitschema (tcp://, tls://)
port - poort
gebruikersnaam - Gebruikersnaam
geheim - wachtwoord
connect_time-out - time-out verbinding
lees_time-out - lees time-out
voorbeeld instellingenbestand:
<?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
);
Opstelling supervisor
Supervisor wordt gebruikt om het gebeurtenishandlerproces Asterisk CallMeIn.php te starten, dat inkomende oproepen controleert en communiceert met Bitrix24 (toon de kaart, verberg de kaart, enz.).
Vragen, suggesties - graag in de comments. Als je geïnteresseerd bent in hoe de ontwikkeling van deze integratie is verlopen, schrijf dan en in het volgende artikel zal ik proberen alles in meer detail te onthullen.