Nettverket har forskjellige alternativer for å integrere IP-PBX Asterisk og CRM Bitrix24, men vi bestemte oss likevel for å skrive vår egen.
Funksjonelt er alt standard:
Ved å klikke på lenken med klientens telefonnummer i Bitrix24, kobler Asterisk det interne nummeret til brukeren som dette klikket ble gjort på vegne av, med klientens telefonnummer. I Bitrix24 blir en oversikt over samtalen tatt opp, og ved slutten av samtalen trekkes samtaleposten opp.
En samtale kommer til Asterisk utenfra - i Bitrix24-grensesnittet viser vi klientkortet til den ansatte som denne samtalen kom til.
Hvis det ikke finnes en slik klient, åpner du kortet for å opprette en ny kundeemne.
Så snart samtalen er fullført reflekterer vi dette i kortet og trekker opp opptaket av samtalen.
Under kuttet skal jeg fortelle deg hvordan du setter opp alt for deg selv og gir en lenke til github - ja, ja, ta den og bruk den!
Generell beskrivelse
Vi kalte vår integrasjon CallMe. CallMe er en liten nettapplikasjon skrevet i PHP.
Jeg vil la analysen av konfigurasjonen, sikkerhetsproblemer, innhenting av et sertifikat og til og med valg av webserver ligge utenfor rammen av artikkelen - mye er skrevet om dette. Applikasjonen har ingen begrensninger, den fungerer på både http og https.
Vi har https, la oss kryptere sertifikatet.
Hvis du gjorde alt riktig, bør du se noe slikt ved å klikke på lenken
Konfigurere Bitrix24
La oss lage to webhooks.
Innkommende webhook.
Under administratorkontoen (med id 1) gå langs stien: Programmer -> Webhooks -> Legg til webhook -> Innkommende webhook
Fyll inn parametrene for den innkommende webhook som i skjermbildene:
Og klikk lagre.
Etter lagring vil Bitrix24 oppgi URL-en til den innkommende webhook, for eksempel:
Lagre din versjon av URL-en uten den etterfølgende /profilen/ - den vil bli brukt i applikasjonen for å jobbe med innkommende anrop.
jeg har det https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Utgående webhook.
Applikasjoner -> Webhooks -> Legg til Webhook -> Utgående Webhook
Detaljer er på skjermbildene:
Lagre og få autorisasjonskoden
jeg har det xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Du må også kopiere det til deg selv, det er nødvendig for å foreta utgående anrop.
Viktig!
Et ssl-sertifikat må konfigureres på Bitrix24-serveren (du kan bruke letsencrypt), ellers vil ikke BitrixXNUMX-api fungere. Hvis du har en skyversjon, ikke bekymre deg - ssl er der allerede.
Viktig!
I feltet "Processor's address" skal en adresse som er tilgjengelig fra Internett angis!
Og med siste touch, la oss installere vår CallMeOut som et program for å ringe (slik at ved å klikke på nummeret på PBX, vil en kommando fly for å starte anropet).
I menyen velger du: Mer -> Telefoni -> Mer -> Innstillinger, sett til "Nummer for utgående samtaler som standard" Applikasjon: CallMeOut og klikk "Lagre"
stjerneoppsett
For vellykket interaksjon mellom Asterisk og Bitrix24, må vi legge til callme AMI-brukeren til manager.conf:
slå av oppføringen i CDR-tabellen for denne utvidelsen (det er ikke nødvendig der), angi sluttid for samtalen, beregn varigheten, hvis resultatet av samtalen ikke er kjent - angi (variabel Kall meg DISPOSISJON) og, det siste trinnet, send alt til Bitrix gjennom systemkrøllen.
Og litt mer magi - en innkommende samtale:
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 sier PBX installere Anrops-ID (navn) variabel CallMeCallerIDName.
Selve CallMeCallerIDName-variabelen settes på sin side av CallMe-applikasjonen (hvis Bitrix24 har et fullt navn for innringerens nummer, vil vi sette det som Anrops-ID (navn), nei - vi vil ikke gjøre noe).
bitrixApiUrl — URL til den innkommende webhook, uten profil/
utvidelser — liste over eksterne numre
kontekst — kontekst for samtaleoriginering
listener_timeout - hendelsesbehandlingshastighet fra stjerne
stjernen - en matrise med tilkoblingsinnstillingene til stjernen:
vert - IP eller vertsnavn for stjerneserveren
ordningen — koblingsskjema (tcp://, tls://)
havn - havn
brukernavn - Brukernavn
hemmelig - passord
connect_timeout - tidsavbrudd for tilkobling
read_timeout - les timeout
eksempel innstillingsfil:
<?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
);
Oppsett av veileder
Supervisor brukes til å starte Asterisk CallMeIn.php hendelsesbehandlerprosessen, som overvåker innkommende anrop og samhandler med Bitrix24 (vis kortet, skjul kortet osv.).
Spørsmål, forslag - vennligst i kommentarene. Også, hvis du er interessert i hvordan utviklingen av denne integrasjonen gikk, skriv, og i neste artikkel vil jeg prøve å avsløre alt mer detaljert.