Nätverket har olika alternativ för att integrera IP-PBX Asterisk och CRM Bitrix24, men vi bestämde oss ändå för att skriva vårt eget.
Funktionellt är allt standard:
Genom att klicka på länken med kundens telefonnummer i Bitrix24 kopplar Asterisk det interna numret till den användare på uppdrag av vilken detta klick gjordes med kundens telefonnummer. I Bitrix24 spelas en registrering av samtalet in, och i slutet av samtalet dras konversationsposten upp.
Ett samtal kommer till Asterisk utifrån - i Bitrix24-gränssnittet visar vi klientkortet för den anställde till vars nummer detta samtal kom.
Om det inte finns någon sådan klient, öppna kortet för att skapa en ny potentiell kund.
Så fort samtalet är klart speglar vi detta i kortet och drar upp inspelningen av samtalet.
Under klippet ska jag berätta hur du ställer in allt för dig själv och ger en länk till github - ja, ja, ta den och använd den!
Allmän beskrivning
Vi kallade vår integration CallMe. CallMe är en liten webbapplikation skriven i PHP.
Jag kommer att lämna analysen av konfigurationen, säkerhetsproblem, att skaffa ett certifikat och till och med välja en webbserver utanför artikelns ram - mycket har skrivits om detta. Applikationen har inga begränsningar, den fungerar på både http och https.
Vi har https, låt oss kryptera certifikat.
Om du gjorde allt korrekt, så bör du se något liknande detta genom att klicka på länken
Konfigurera Bitrix24
Låt oss skapa två webhooks.
Inkommande webhook.
Under administratörskontot (med id 1) gå längs sökvägen: Applications -> Webhooks -> Add webhook -> Incoming webhook
Fyll i parametrarna för den inkommande webhook som i skärmdumparna:
Och klicka på spara.
Efter att ha sparat kommer Bitrix24 att tillhandahålla webbadressen till den inkommande webhook, till exempel:
Spara din version av URL:en utan den efterföljande /profilen/ - den kommer att användas i applikationen för att arbeta med inkommande samtal.
jag har det https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Utgående webhook.
Applikationer -> Webhooks -> Lägg till Webhook -> Utgående Webhook
Detaljer finns på skärmdumparna:
Spara och hämta auktoriseringskoden
jag har det xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Du behöver också kopiera den till dig själv, den behövs för att ringa utgående samtal.
Viktigt!
Ett ssl-certifikat måste konfigureras på Bitrix24-servern (du kan använda letsencrypt), annars fungerar inte BitrixXNUMX-api. Om du har en molnversion, oroa dig inte - ssl finns redan där.
Viktigt!
I fältet "Processorns adress" måste en adress som är tillgänglig från Internet anges!
Och med sista handen, låt oss installera vår CallMeOut som en applikation för att ringa samtal (så att genom att klicka på numret på telefonväxeln, kommer ett kommando att flyga för att starta samtalet).
I menyn väljer du: Mer -> Telefoni -> Mer -> Inställningar, ställ in på "Nummer för utgående samtal som standard" Applikation: CallMeOut och klicka på "Spara"
asterisk inställning
För framgångsrik interaktion mellan Asterisk och Bitrix24 måste vi lägga till callme AMI-användaren till manager.conf:
stäng av posten i CDR-tabellen för denna anknytning (det behövs inte där), ställ in sluttiden för samtalet, beräkna varaktigheten, om resultatet av samtalet inte är känt - ställ in (variabel Kalla mig DISPOSITION) och, det sista steget, skicka allt till Bitrix genom systemcurlen.
Och lite mer magi - ett inkommande samtal:
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();
}
Hon säger PBX installera Nummerpresentation (namn) variabel CallMeCallerIDName.
Själva CallMeCallerIDName-variabeln ställs i sin tur in av CallMe-applikationen (om Bitrix24 har ett fullständigt namn för uppringarens nummer kommer vi att ställa in det som Nummerpresentation (namn), nej - vi kommer inte att göra någonting).
bitrixApiUrl — URL till den inkommande webhook, utan profil/
förlängningar — lista över externa nummer
sammanhang — sammanhang för samtalsuppkoppling
listener_timeout - Händelsebearbetningshastighet från asterisk
asterisk - en array med anslutningsinställningarna till asterisken:
värd - ip eller värdnamn för asteriskservern
ordningen — anslutningsschema (tcp://, tls://)
port - hamn
Användarnamn - Användarnamn
hemligt - Lösenord
connect_timeout - timeout för anslutning
read_timeout - läs timeout
exempel inställningsfil:
<?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
);
Arbetsledare inställning
Supervisor används för att starta händelsehanterarprocessen Asterisk CallMeIn.php, som övervakar inkommande samtal och interagerar med Bitrix24 (visa kortet, dölj kortet, etc.).
Frågor, förslag - vänligen i kommentarerna. Dessutom, om du är intresserad av hur utvecklingen av denna integration gick, skriv, och i nästa artikel kommer jag att försöka avslöja allt mer i detalj.