Der er forskellige muligheder for at integrere IP-PBX Asterisk og CRM Bitrix24 på netværket, men vi besluttede alligevel at skrive vores egen.
Med hensyn til funktionalitet er alt standard:
Ved at klikke på et link med en klients telefonnummer i Bitrix24 forbinder Asterisk det interne nummer på den bruger, på hvis vegne klikket blev foretaget, med klientens telefonnummer. I Bitrix24 optages en optagelse af opkaldet, og ved afslutningen af opkaldet trækkes en optagelse af samtalen op.
Asterisk modtager et opkald udefra - i Bitrix24-grænsefladen viser vi klientkortet til den medarbejder, til hvis nummer dette opkald kom.
Hvis der ikke er en sådan klient, åbner vi kortet for at oprette et nyt kundeemne.
Så snart opkaldet er afsluttet, afspejler vi dette på kortet og trækker en optagelse af samtalen frem.
Under klippet fortæller jeg dig, hvordan du sætter alt op for dig selv og giver dig et link til github - ja, ja, tag det og brug det!
Generel beskrivelse
Vi kaldte vores integration CallMe. CallMe er en lille webapplikation skrevet i PHP.
Jeg vil lade parsing af konfigurationen, sikkerhedsproblemer, få et certifikat og endda vælge en webserver uden for artiklens rammer - der er skrevet meget om dette. Applikationen har ingen begrænsninger, den fungerer over både http og https.
Vi bruger https, lad os kryptere certifikatet.
Hvis du gjorde alt rigtigt, så ved at klikke på linket skulle du se noget som dette
Opsætning af Bitrix24
Lad os oprette to webhooks.
Indgående webhook.
Under administratorkontoen (med id 1), følg stien: Applications -> Webhooks -> Add webhook -> Incoming webhook
Udfyld parametrene for den indgående webhook som på skærmbillederne:
Og klik på Gem.
Efter at have gemt, vil Bitrix24 give URL'en på den indgående webhook, for eksempel:
Gem din version af URL'en uden den endelige /profil/ - den vil blive brugt i applikationen til at arbejde med indgående opkald.
jeg har det https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
jeg har det xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Du skal også kopiere det til dig selv; du skal bruge det til at foretage udgående opkald.
Vigtigt!
Et SSL-certifikat skal konfigureres på Bitrix24-serveren (du kan bruge letsencrypt), ellers vil Bitrix-api'et ikke fungere. Hvis du har en cloud-version, skal du ikke bekymre dig - den har allerede ssl.
Vigtigt!
Feltet "Processor Address" skal indeholde en adresse, der er tilgængelig fra internettet!
Og som en sidste touch, lad os installere vores CallMeOut som et program til at foretage opkald (så når du klikker på nummeret på PBX, vil kommandoen til at starte opkaldet flyve væk).
I menuen, vælg: Mere -> Telefoni -> Mere -> Indstillinger, indstil i "Standard udgående opkaldsnummer" Applikation: CallMeOut og klik på "Gem"
Opsætning af stjerne
For vellykket interaktion mellem Asterisk og Bitrix24 skal vi tilføje AMI-brugeren callme til manager.conf:
deaktiver adgang til CDR-tabellen for dette lokalnummer (det er ikke nødvendigt der), indstil sluttidspunktet for opkaldet, beregn varigheden, hvis resultatet af opkaldet ikke er kendt - indstil (variabel CallMeDISPOSITION) og, det sidste trin, send alt til Bitrix via systemkrøllen.
Og lidt mere magi - et indgående opkald:
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();
}
Hun beder PBX'en om at installere Opkalds-id (navn) lig med variabel CallMeCallerIDName.
Selve CallMeCallerIDName-variablen indstilles igen af CallMe-applikationen (hvis Bitrix24 har et fulde navn til den, der ringer op, skal du indstille det som Opkalds-id (navn), nej - vi gør ikke noget).
bitrixApiUrl — URL på den indgående webhook, uden profil/
udvidelser — liste over eksterne numre
sammenhæng — kontekst for at starte et opkald
listener_timeout — hastighed af hændelsesbehandling fra stjerne
stjerne — et array med indstillinger for tilslutning til stjernen:
host — ip eller værtsnavn på stjerneserveren
Ordningen — forbindelsesdiagram (tcp://, tls://)
port - Havn
brugernavn - Brugernavn
hemmelighed - adgangskode
connect_timeout — timeout for forbindelsen
read_timeout - læse timeout
eksempel på indstillingsfil:
<?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 opsætning
Supervisor bruges til at starte hændelseshåndteringsprocessen fra Asterisk CallMeIn.php, som overvåger indgående opkald og interagerer med Bitrix24 (vis kort, skjul kort osv.).
Det viste sig at være ret kompliceret, men jeg er sikker på, at en erfaren administrator vil være i stand til at implementere det og glæde sine brugere.
Spørgsmål, forslag - læg dem venligst i kommentarerne. Også, hvis du er interesseret i, hvordan udviklingen af denne integration gik, så skriv, og i den næste artikel vil jeg forsøge at afsløre alt mere detaljeret.