FreePBX
FreePBX est un système téléphonique libre qui permet de gérer les appels au sein d'une entreprise.
Fonctionnalités
- Appels téléphoniques sur Internet: utilise la technologie VoIP, permettant les appels via Internet au lieu du réseau téléphonique classique.
- Répartition automatique des appels: aide à acheminer automatiquement les appels entrants vers les bons numéros ou services de l'entreprise.
- Menus vocaux interactifs (IVR): vous pouvez configurer des menus vocaux interactifs afin que l'appelant choisisse le service souhaité en appuyant sur des touches.
- Messagerie vocale: si personne ne peut répondre à un appel, FreePBX peut enregistrer un message vocal qui pourra être consulté ultérieurement.
- Conférences téléphoniques: vous pouvez organiser des conférences téléphoniques permettant à plusieurs personnes de participer simultanément.
- Enregistrement des appels: vous pouvez enregistrer les conversations téléphoniques pour les réécouter ou les analyser ultérieurement.
- Intégration avec d'autres systèmes: FreePBX peut être intégré à divers CRM, y compris Planfix.
Connexion
Vous pouvez connecter FreePBX à Planfix de deux manières :
Notez que l'équipe Planfix ne configure pas Asterisk chez le client et ne fournit pas de consultations à ce sujet.
API Planfix pour la téléphonie
- Avec cette méthode, vous pouvez seulement recevoir les événements d'appel dans Planfix, c'est‑à‑dire qu'à chaque appel une fiche d'appel apparaîtra dans l'onglet actif de Planfix.
- Vous ne pouvez pas passer d'appels depuis Planfix.
- Pour obtenir les enregistrements d'appels, vous devez en outre configurer apache/nginx (étape 5).
Étape 1
Sur le serveur, éditez /etc/asterisk/extensions_override_freepbx.conf (fichier d'exemple) afin qu'il contienne les 3 contextes suivants :
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
Pour [macro-hangupcall], la forme exacte n'est pas obligatoire comme dans l'exemple.
Trouvez le contexte [macro-hangupcall] dans extensions_additional.conf — copiez‑le — et ajoutez la ligne suivante tout au début :
exten => s,1,Macro(hangupcall-send-post)
Étape 2
Copiez tous les contextes depuis l'exemple dans extension_custom.conf. Cela peut également être fait via l'interface FreePBX.
Étape 3
Ajoutez 3 lignes à globals_custom.conf et remplacez {…} par les valeurs appropriées :
- PBX_URL = {…} — URL de votre PBX
- PF_URL = {…} — adresse pour recevoir les requêtes
- PF_KEY = {…} — jeton d'autorisation Planfix
Étape 4
- Dans Planfix, allez dans Account management — Integrations — Virtual PBXs — Planfix API for telephony.
- Renseignez l'adresse du PBX afin que Planfix accepte les événements provenant de ce site ou de cette adresse.
Étape 5
Pour obtenir les enregistrements, vous devez les rendre accessibles depuis l'extérieur via un serveur web. Pour ce faire avec l'Apache inclus dans FreePBX, créez un lien vers le dossier des enregistrements. Le dossier doit avoir le propriétaire, le groupe et les permissions corrects — 775.
- Créez le lien :
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Modifiez les permissions et le propriétaire :
chmod -R 775 /var/www/html/monitor/chown -R asterisk:asterisk /var/www/html/monitor/
Si vous utilisez une distribution sans Apache — configurez une installation équivalente pour votre serveur web.
Intégration FreePBX
(FreePBX 16+ / Asterisk 18+)
Avant de commencer, insérez ce qui suit dans votre fichier de paramètres personnalisés extensions_override_freepbx.conf :
[macro-dialout-trunk-predial-hook]
exten => s,1,Gosub(planfix-mark-outbound,s,1)
same => n,MacroExit()
[planfix-mark-outbound]
exten => s,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN})
same => n,Set(__CRM_DIRECTION=OUTBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
[macro-dialout-one-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[macro-dial-ringall-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[planfix-mark-inbound]
exten => s,1,NoOp(Incoming call to ${EXTEN} from ${CALLERID(all)})
same => n,Set(__CRM_DIRECTION=INBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
Étape 1
Ouvrez FreePBX et ajoutez un utilisateur : Settings — Asterisk REST Interface Users — Add User.
Remplissez les champs suivants :
- REST Interface User Name: nom d'utilisateur
- REST Interface User Password: mot de passe
- Password Type: Plain Text
- Read Only: No
Copiez (nécessaire à l'étape 4) et enregistrez.
Étape 2
Ajoutez un manager : Settings — Asterisk Manager Users — Add Manager :
- Name: nom
- Secret: laissez par défaut ou définissez le vôtre
- Il est préférable de ne pas modifier les autres paramètres.
Copiez (nécessaire aux étapes 4 et 6) et enregistrez.
Étape 3
Enregistrez les paramètres en cliquant sur Apply Config en haut à droite.
Étape 4
Dans Planfix, allez à Primary Account Admin — Integrations — Virtual PBXs — FreePBX.
Renseignez :
- PBX address: l'URL de votre PBX (incluant le protocole et le port où ARI est accessible)
- ARI User Name: Nom de l'étape 1
- ARI User Password: Mot de passe de l'étape 1
Copiez l'URL du script récepteur et enregistrez l'intégration.
Étape 5
Sur le serveur :
- Dans /var/spool/asterisk/ créez un lien symbolique nommé recording vers le dossier monitor (dans le même répertoire). Commande :
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
Étape 6
- Allez dans /etc/asterisk/
- Créez un dossier scripts s'il n'existe pas
- Dans le dossier scripts, créez un fichier ami_listener.py
Étape 7
Remplissez ami_listener.py en vous basant sur l'exemple, en remplaçant :
- Your_user_name: par le Name de l'étape 2
- Your_user_password: par le Secret de l'étape 2
- Your_planfix_endpoint_url: par l'URL du script récepteur de l'étape 4
Étape 8
Rendez le fichier exécutable avec :
chmod +x /etc/asterisk/scripts/ami_listener.py
Étape 9
- Allez dans /lib/systemd/system/
- Créez un fichier crm-asterisk-listener.service
- Remplissez crm-asterisk-listener.service selon l'exemple
Étape 10
Ajoutez le fichier au démarrage automatique et lancez le service avec les commandes suivantes :
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Travail avec les versions plus anciennes d'Asterisk
Pour Asterisk 13+ vous devez ajouter des propriétés supplémentaires aux fichiers de configuration.
Pour /etc/asterisk/cdr.conf
[general] enable = yes batch = no unanswered = yes
Pour /etc/asterisk/cdr_manager.conf
[general] enable = yes unanswered = yes
Notez que la récupération des enregistrements d'appels ne fonctionnera que pour Asterisk 14+.
Méthodes additionnelles
Vous pouvez appeler ces méthodes vous‑même depuis le dialplan.
Obtenir des informations sur les superviseurs
Vous pouvez envoyer une requête POST à l'URL spécifiée dans l'intégration contenant :
Content-type: application/json
Vous recevrez en réponse :
OU
Si pour le contact :
- il n'y a pas de superviseurs
- les numéros courts ne sont pas assignés
- le superviseur est l'employé dont le numéro a été appelé ("short_PBX_extension")
Alors la réponse contiendra :
Notification d'appel manqué
- Pour utiliser cette méthode, dans les paramètres de l'intégration sélectionnez — « Record missed calls only by a separate special request » :
Vous pouvez envoyer une requête POST à l'URL spécifiée dans l'intégration contenant :
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension_to_receive_missed_call_notification", "extNum": "external_subscriber_number"}
Si un employé avec ce numéro court existe, il recevra une notification d'appel manqué.
La réponse à la requête POST sera vide.
Remarques de fonctionnement
- Assurez‑vous que la bibliothèque "panoramisk" est installée pour que le script fonctionne. Elle peut être installée avec 'pip install panoramisk'.
- Si le script ne démarre pas immédiatement ou si vous avez apporté des modifications à ami_listener après l'exécution des commandes, les actions suivantes peuvent aider :
sudo systemctl daemon-reloadsudo systemctl restart crm-asterisk-listener
- Pour désactiver l'intégration, exécutez :
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- Dans toutes les méthodes de connexion vous devez avoir configuré :
- extensions internes (Extensions)
- routage entrant et sortant (Inbound/Outbound Routes)