Hay diferentes opciones para integrar IP-PBX Asterisk y CRM Bitrix24 en la red, pero aun así decidimos escribir la nuestra.
En cuanto a funcionalidad, todo es estándar:
Al hacer clic en un enlace con el número de teléfono de un cliente en Bitrix24, Asterisk conecta el número interno del usuario en cuyo nombre se realizó el clic con el número de teléfono del cliente. En Bitrix24, se graba una grabación de la llamada y al final de la llamada, se abre una grabación de la conversación.
Asterisk recibe una llamada del exterior: en la interfaz de Bitrix24 mostramos la tarjeta del cliente al empleado a cuyo número llegó esta llamada.
Si no existe tal cliente, abriremos la tarjeta para crear un nuevo cliente potencial.
Tan pronto como se completa la llamada, lo reflejamos en la tarjeta y obtenemos una grabación de la conversación.
Debajo del corte te diré cómo configurar todo tú mismo y te daré un enlace a github. Sí, sí, ¡tómalo y úsalo!
descripción general
Llamamos a nuestra integración CallMe. CallMe es una pequeña aplicación web escrita en PHP.
Dejaré el análisis de la configuración, los problemas de seguridad, la obtención de un certificado e incluso la elección de un servidor web fuera del alcance del artículo; se ha escrito mucho sobre esto. La aplicación no tiene restricciones, funciona tanto en http como en https.
Usamos https, cifremos el certificado.
Si hizo todo correctamente, al hacer clic en el enlace debería ver algo como esto
Configurando Bitrix24
Creemos dos webhooks.
Webhook entrante.
En la cuenta de administrador (con ID 1), siga la ruta: Aplicaciones -> Webhooks -> Agregar webhook -> Webhook entrante
Complete los parámetros del webhook entrante como en las capturas de pantalla:
Y haga clic en guardar.
Después de guardar, Bitrix24 proporcionará la URL del webhook entrante, por ejemplo:
Guarde su versión de la URL sin el /perfil/ final; se utilizará en la aplicación para trabajar con las llamadas entrantes.
tengo esto https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Los detalles están nuevamente en las capturas de pantalla:
Guardar y recibir el código de autorización
tengo esto xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. También necesita copiarlo usted mismo; lo necesita para realizar llamadas salientes.
¡Importante!
Se debe configurar un certificado SSL en el servidor Bitrix24 (puede usar letsencrypt); de lo contrario, la API de Bitrix no funcionará. Si tienes una versión en la nube, no te preocupes: ya tiene SSL.
¡Importante!
¡El campo "Dirección del procesador" debe contener una dirección accesible desde Internet!
Y como toque final, instalemos nuestro CallMeOut como aplicación para realizar llamadas (de modo que al pulsar sobre el número en la centralita, el comando para realizar la llamada volará).
En el menú, seleccione: Más -> Telefonía -> Más -> Configuración, configure en “Número de llamada saliente predeterminado” Aplicación: CallMeOut y haga clic en “Guardar”
Configurando asterisco
Para una interacción exitosa entre Asterisk y Bitrix24, necesitamos agregar el usuario AMI callme a manager.conf:
deshabilite la entrada a la tabla CDR para esta extensión (no es necesaria allí), establezca la hora de finalización de la llamada, calcule la duración, si no se conoce el resultado de la llamada - configure (variable CallMeDISPOSICIÓN) y, último paso, enviar todo a Bitrix a través del sistema curl.
Y un poco más de magia: una llamada 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();
}
Ella le dice al PBX que instale Identificador de llamadas (nombre) igual a variable LlámameCallerIDNombre.
La variable CallMeCallerIDName, a su vez, la establece la aplicación CallMe (si Bitrix24 tiene un nombre completo para el número de la persona que llama, configúrelo como Identificador de llamadas (nombre), no, no haremos nada).
Configuración de la aplicación
Archivo de configuración de la aplicación - /var/www/pbx.vistep.ru/config.php
Descripción de los parámetros de la aplicación:
LlámameDEBUG — si es 1, entonces todos los eventos procesados por la aplicación se escribirán en el archivo de registro, 0 — no escribimos nada
tecnología - SIP/PJSIP/IAX/etc.
token de autorización — Token de autorización Bitrix24, código de autorización de webhook saliente
bitrizApiUrl — URL del webhook entrante, sin perfil/
extensiones — lista de números externos
contexto — contexto para originar una llamada
tiempo de espera_escucha — velocidad de procesamiento de eventos desde asterisco
asterisco — una matriz con configuraciones para conectarse al asterisco:
fortaleza — ip o nombre de host del servidor asterisk
esquema — diagrama de conexión (tcp://, tls://)
Puerto - puerto
nombre de usuario - Nombre de usuario
secreto - contraseña
tiempo de espera de conexión - el tiempo de conexión expiro
leer_tiempo de espera - leer el tiempo de espera
archivo de configuración de ejemplo:
<?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 del supervisor
Supervisor se utiliza para iniciar el proceso de manejo de eventos desde Asterisk CallMeIn.php, que monitorea las llamadas entrantes e interactúa con Bitrix24 (mostrar tarjeta, ocultar tarjeta, etc.).
Preguntas, sugerencias: déjelas en los comentarios. Además, si te interesa cómo fue el desarrollo de esta integración, escribe, que en el próximo artículo intentaré desvelarte todo con más detalle.