Taxation externe sur Asterisk
Les informations de taxation sont disponibles depuis l’origine dans les configurations Asterisk, notamment sous forme de ‘fichiers CDR’ puis de plus en plus dans la base de données.
La prise en compte des fichiers est assez simple mais la gestion par base de données devient la plus courante, notamment pour des problèmes de sécurité. On partira donc du principe que la base de données est MySQL/MariaDB et que les tickets sont stockés dans la table CDR.
Configuration du PABX & de la table CDR
Il est utile de se reporter à la documentation (ex : https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=5242894) de la version d’Asterisk,
Après mise en place de la table et vérification des prise en compte des communications il y a un certain nombre d’étapes :
- Créer (ou noter) un utilisateur ayant les droits d’accès en lecture à la table, y compris à travers le réseau.
- Il faut impérativement vérifier que l’on a accès en lecture à la table CDR du PC ‘externe’ où est installé le logiciel de taxation avec un logiciel ‘Client MySQL’ de type MySQLWorkBench ou HeidiSQL.
- Attention :
- L’accès ‘externe’ à la base de données doit être configuré à plusieurs endroits notamment dans la base elle même (droit de l’utilisateur), dans le fichier de configuration de MySQL et dans les différents pare feux.
- IL est impératif pour des raison de sécurité de limiter les droits notamment : uniquement en LECTURE, uniquement sur la table CDR, uniquement pour le PC serveur.
- Attention :
- Modifier, avec un utilisateur root sur MySQL, la table CDR pour lui ajouter une colonne autoincrémentée (permet de savoir quelles communications ont déjà été traitées). Typiquement avec une requête ressemblant à :
ALTER TABLE cdr ADD COLUMN id int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT ;
- Configurer le PBX pour que le champ AMAFlags soit à 2 (bIlling) pour les communications sortantes et 3 (documentation) pour les communications entrantes.
- Faire quelques communications et vérifier, avec le logiciel ‘Client MySQL’ que celles ci apparaissent bien dans la table et que les champs rajoutés sont présents et corrects.
Distributions Asterisk : éléments de configuration
Ouverture du port MySQL
Par défaut le port n’est pas ouvert, on peut tester avec la ligne :
> telnet <adresse IP du serveur> 3306
Pour ouvrir le port, puis sauvegarder la modification :
> iptables -A INPUT -m state --state -m tcp -p tcp --dport 3306 -j ACCEPT > service iptables save
Remarque : on peut utiliser la commande >netstat -lntu pour identifier les ports ouverts
Modifications des droits dans MySQL
Accéder à MySQL (si root n’a pas de mot de passe sur MySQL) : > mysql -u root donne accès au prompt MySQL:
Créer un user (comtrafic/comtrafic) avec les bons droits (attention de limiter les droits après les modifications de base) :
-
MySQL > CREATE USER 'comtrafic'@'%' IDENTIFIED BY 'comtrafic';
-
MySQL > GRANT SELECT,ALTER ON * . * TO 'comtrafic'@'%';
-
MySQL > FLUSH PRIVILEGES;
FreePBX
Dans FreePBX la base de donnée MySQL :
- se nomme asteriskcdrdb et la table CDR
- l’utilisateur MySQL est freepbxuser son mot de passe est indiqué dans /etc/amportal.conf ligne AMPDBPASS=
Configuration de Comtrafic.
Installer le logiciel par le setup, dans ‘type d’installation’ choisissez ‘Réelle’ et dans ‘Modèle de Pabx’ choisissez ‘Asterisk_MySQLIndex‘ à la fin du setup lancer ComTrafic pour initialiser la base de données, puis fermez le.
Lancer le logiciel ‘lien.exe’ par le raccourci créé sur le bureau.
Vérifier les paramètres (onglet paramètres, bouton ‘Modifier‘ dans interface avec le PABX) :
- Indiquer l’adresse du PABX dans ‘Adresse IP du Serveur’
- Vérifier le nom de la base de donnée.
- Indiquer un nom d’utilisateur et son mot de passe permettant d’accéder à la base.
Validez par ‘OK’ puis ‘Valider’ dans le menu précédent. On doit voir les tickets défiler à l’écran.
Remarque : Les principes précédentes sont correctes pour la plupart des ‘distributions’ Asterisk : FreePBX, Elastix, Tribox, Xivo, Wazo, Wildix…mais le principe exact de connexion est à étudier pour chacune d’entre elle.