Le réseau a différentes options pour intégrer IP-PBX Asterisk et CRM Bitrix24, mais nous avons néanmoins décidé d'écrire la nôtre.
Fonctionnellement, tout est standard :
En cliquant sur le lien avec le numéro de téléphone du client dans Bitrix24, Asterisk associe le numéro interne de l'utilisateur pour le compte duquel ce clic a été effectué au numéro de téléphone du client. Dans Bitrix24, un enregistrement de l'appel est enregistré et à la fin de l'appel, l'enregistrement de la conversation est extrait.
Un appel arrive à Asterisk de l'extérieur - dans l'interface Bitrix24, nous montrons la carte client à l'employé au numéro duquel cet appel est arrivé.
S'il n'y a pas de client de ce type, ouvrez la carte pour créer un nouveau prospect.
Dès que l'appel est terminé, nous le reflétons sur la carte et affichons l'enregistrement de la conversation.
Sous la coupe, je vais vous dire comment tout configurer pour vous-même et donner un lien vers github - oui, oui, prenez-le et utilisez-le !
Description générale
Nous avons appelé notre intégration CallMe. CallMe est une petite application web écrite en PHP.
Je laisserai l'analyse de la configuration, les problèmes de sécurité, l'obtention d'un certificat et même le choix d'un serveur Web en dehors du cadre de l'article - beaucoup a été écrit à ce sujet. L'application n'a aucune restriction, elle fonctionne à la fois sur http et https.
Nous avons https, chiffrons le certificat.
Si vous avez tout fait correctement, alors en cliquant sur le lien, vous devriez voir quelque chose comme ça
Configuration de Bitrix24
Créons deux webhooks.
Webhook entrant.
Sous le compte administrateur (avec l'id 1) suivez le chemin : Applications -> Webhooks -> Ajouter un webhook -> Incoming webhook
Renseignez les paramètres du webhook entrant comme dans les captures d'écran :
Et cliquez sur enregistrer.
Après l'enregistrement, Bitrix24 fournira l'URL du webhook entrant, par exemple :
Enregistrez votre version de l'URL sans la fin /profil/ - elle sera utilisée dans l'application pour traiter les appels entrants.
je l'ai https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Webhook sortant.
Applications -> Webhooks -> Ajouter un Webhook -> Webhook sortant
Les détails sont sur les captures d'écran :
Enregistrez et obtenez le code d'autorisation
je l'ai xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Vous devez également le copier sur vous-même, il est nécessaire pour passer des appels sortants.
Important!
Un certificat ssl doit être configuré sur le serveur Bitrix24 (vous pouvez utiliser letsencrypt), sinon l'api BitrixXNUMX ne fonctionnera pas. Si vous avez une version cloud, ne vous inquiétez pas - SSL est déjà là.
Important!
Dans le champ « Adresse du sous-traitant », une adresse accessible depuis Internet doit être indiquée !
Et avec la touche finale, installons notre CallMeOut comme une application pour passer des appels (de sorte qu'en cliquant sur le numéro sur le PBX, une commande volera pour lancer l'appel).
Dans le menu, sélectionnez : Plus -> Téléphonie -> Plus -> Paramètres, renseignez le "Numéro pour les appels sortants par défaut" Application : CallMeOut et cliquez sur "Enregistrer"
configuration astérisque
Pour une interaction réussie entre Asterisk et Bitrix24, nous devons ajouter l'utilisateur callme AMI à manager.conf :
Variable ENREGISTREMENTS URL stocke l'URL des fichiers d'enregistrement de conversation, selon laquelle Bitrix24 les extraira dans la carte de contact.
Ensuite, nous nous intéressons à la macro macro l'enregistrement.
Ici, en plus d'enregistrer les conversations, nous allons définir la variable NomFcomplet.
désactivez l'entrée dans la table CDR pour cette extension (elle n'est pas nécessaire là-bas), définissez l'heure de fin de l'appel, calculez la durée, si le résultat de l'appel n'est pas connu - définissez (variable Appelez-moi DISPOSITION) et, dernière étape, tout envoyer à Bitrix via le système curl.
Et un peu plus de magie - un appel entrant :
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();
}
Ici, nous ne nous intéressons qu'à une seule ligne.
Elle dit installer PBX ID de l'appelant (nom) variable CallMeCallerIDName.
La variable CallMeCallerIDName elle-même, à son tour, est définie par l'application CallMe (si Bitrix24 a un nom complet pour le numéro de l'appelant, nous le définirons comme ID de l'appelant (nom), non - nous ne ferons rien).
Configuration de l'application
Fichier de paramètres d'application - /var/www/pbx.vistep.ru/config.php
Description des paramètres d'application :
Appelez-moiDEBUG - si 1, alors tous les événements traités par l'application seront écrits dans le fichier journal, 0 - nous n'écrivons rien
bitrixApiUrl — URL du webhook entrant, sans profil/
des extensions — liste des numéros externes
contexte — contexte pour le départ d'appel
écouteur_timeout - vitesse de traitement des événements à partir d'un astérisque
astérisque - un tableau avec les paramètres de connexion à l'astérisque :
hôte - ip ou nom d'hôte du serveur asterisk
programme — schéma de connexion (tcp://, tls://)
port - port
Nom d'utilisateur - Nom d'utilisateur
secret - mot de passe
connexion_timeout - délai de connection dépassé
read_timeout - délai de lecture
exemple de fichier de paramètres :
<?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
);
Configuration du superviseur
Le superviseur est utilisé pour lancer le processus de gestionnaire d'événements Asterisk CallMeIn.php, qui surveille les appels entrants et interagit avec Bitrix24 (afficher la carte, masquer la carte, etc.).
Questions, suggestions - s'il vous plaît dans les commentaires. De plus, si vous êtes intéressé par le déroulement du développement de cette intégration, écrivez, et dans le prochain article, j'essaierai de tout révéler plus en détail.