Existen diferentes opcións para integrar a IP-PBX Asterisk e CRM Bitrix24 na rede, pero aínda así decidimos escribir a nosa.
En canto á funcionalidade, todo é estándar:
Ao facer clic nunha ligazón co número de teléfono dun cliente en Bitrix24, Asterisk conecta o número interno do usuario en cuxo nome se fixo o clic co número de teléfono do cliente. En Bitrix24, grávase un rexistro da chamada e, ao final da chamada, tírase unha gravación da conversa.
Asterisk recibe unha chamada desde fóra: na interface de Bitrix24 mostrámoslle a tarxeta do cliente ao empregado a cuxo número chegou esta chamada.
Se non hai tal cliente, abriremos a tarxeta para crear un novo cliente potencial.
En canto finaliza a chamada, reflectímolo na tarxeta e extraemos unha gravación da conversa.
Debaixo do corte vouche dicir como configuralo todo por ti mesmo e darche unha ligazón a github: si, si, tómao e úsao!
Descrición xeral
Chamamos a nosa integración CallMe. CallMe é unha pequena aplicación web escrita en PHP.
Vou deixar analizar a configuración, os problemas de seguridade, a obtención dun certificado e mesmo elixir un servidor web fóra do ámbito do artigo - escribiuse moito sobre isto. A aplicación non ten restricións, funciona tanto en http como en https.
Usamos https, imos cifrar o certificado.
Se fixeches todo correctamente, premendo na ligazón deberías ver algo así
Configuración de Bitrix24
Imos crear dous webhooks.
Webhook entrante.
Baixo a conta de administrador (con id 1), siga o camiño: Aplicacións -> Webhooks -> Engadir webhook -> Webhook entrante
Encha os parámetros do webhook entrante como nas capturas de pantalla:
E fai clic en gardar.
Despois de gardar, Bitrix24 proporcionará o URL do webhook entrante, por exemplo:
Garda a túa versión do URL sen o /profile/ final: empregarase na aplicación para traballar coas chamadas entrantes.
Teño isto https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Webhook saínte.
Aplicacións -> Webhooks -> Engadir webhook -> Webhook de saída
Os detalles están de novo nas capturas de pantalla:
Garda e recibe o código de autorización
Teño isto xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Tamén debes copialo por ti mesmo; precisas para facer chamadas saíntes.
Importante!
Débese configurar un certificado SSL no servidor Bitrix24 (podes usar letsencrypt), se non, a API de Bitrix non funcionará. Se tes unha versión na nube, non te preocupes: xa ten ssl.
Importante!
O campo "Enderezo do procesador" debe conter un enderezo accesible desde Internet.
E como toque final, imos instalar o noso CallMeOut como unha aplicación para facer chamadas (de xeito que cando faga clic no número da central, o comando para orixinar a chamada vaia voando).
No menú, seleccione: Máis -> Telefonía -> Máis -> Configuración, configure "Número de chamada saínte predeterminado" Aplicación: CallMeOut e prema en "Gardar".
Configurando asterisco
Para unha interacción exitosa entre Asterisk e Bitrix24, necesitamos engadir o usuario AMI callme a manager.conf:
desactivar a entrada na táboa CDR para esta extensión (non é necesaria alí), establecer a hora de finalización da chamada, calcular a duración, se non se coñece o resultado da chamada - establecer (variable CallMeDISPOSITION) e, o último paso, envía todo a Bitrix a través do curl do sistema.
E un pouco máis de maxia: unha chamada entrante:
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();
}
Ela dille ao PBX que se instale ID de chamada(nome) igual a variable CallMeCallerIDName.
A propia variable CallMeCallerIDName, á súa vez, establécese pola aplicación CallMe (se Bitrix24 ten un nome completo para o número da persoa que chama, configúrao como ID de chamada(nome), non, non faremos nada).
Configuración da aplicación
Ficheiro de configuración da aplicación - /var/www/pbx.vistep.ru/config.php
Descrición dos parámetros de aplicación:
Chama aMeDEBUG — se é 1, todos os eventos procesados pola aplicación escribiranse no ficheiro de rexistro, 0 — non escribimos nada
tecnoloxía - SIP/PJSIP/IAX/etc
authToken — Token de autorización Bitrix24, código de autorización de webhook saínte
bitrixApiUrl — URL do webhook entrante, sen perfil/
extensións - Lista de números externos
contexto - contexto para a orixe dunha chamada
listener_timeout — Velocidade de procesamento de eventos desde asterisco
asterisco — unha matriz con axustes para conectarse co asterisco:
anfitrión — ip ou nome de host do servidor asterisco
esquema - Diagrama de conexión (tcp://, tls://)
porto - Porto
nome de usuario - Nome de usuario
segredo - contrasinal
connect_timeout - tempo de espera da conexión
read_timeout - tempo de espera de lectura
exemplo de ficheiro de configuración:
<?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
);
Configuración do supervisor
O supervisor úsase para iniciar o proceso de xestión de eventos desde Asterisk CallMeIn.php, que supervisa as chamadas entrantes e interactúa con Bitrix24 (mostrar tarxeta, ocultar tarxeta, etc.).
Preguntas, suxestións: déixaas nos comentarios. Ademais, se estás interesado en como foi o desenvolvemento desta integración, escribe, e no próximo artigo tentarei desvelar todo con máis detalle.