Chez gestion medsécure, nous utilisons le logiciel libre vtiger CRM pour assurer notre suivi de la clientèle. Vtiger CRM offre déja quelques options d’intégration avec la téléphonie IP, mais par défault, AsteriskNow/FreePBX ne peut pas automatiquement aller chercher les informations de l’appellant (CallerID) dans la base de données de vtiger CRM. Pour pallier à ce problème, il est possible de créer une vue regroupant les différents numéros de téléphones en respectant la logique suivante :
- Prioriser le numéro mobile du contact (préfixe : ‘CM:’);
- Pour les entreprises n’ayant qu’un contact associé, afficher son nom (‘CP:’);
- Pour les entreprises ayant plusieurs contacts, afficher le nom de l’entreprise (AP ou AO);
- En dernier recours, valider s’il s’agit d’un prospect (LM ou LP).
La première est de créer une vue que nous nommerons « vtiger_cid » à l’intérieur de la base de données utilisée par vtigerCRM qui sera utilisé pour nous retourner les noms (et leur préfixe) ainsi que les numéros normalisés et coupés à une longueur de 10 caractères.
CREATE VIEW vtiger_cid (name, number) AS select concat('CM:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where mobile is not null and mobile <> '' union select concat('CP:',firstname,' ',lastname) as name, left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_contactdetails where phone is not null and phone <> '' and accountid not in (select accountid from vtiger_contactdetails where accountid <> 0 group by accountid having count(accountid) > 1) union select concat('AP:',accountname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where phone is not null and phone <> "" union select concat('AO:',accountname) as name,left(replace(replace(replace(replace(replace(otherphone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_account where otherphone is not null and otherphone <> ""; union select concat('LP:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(phone,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and phone is not null and phone <> "" union select concat('LM:',firstname,' ',lastname) as name,left(replace(replace(replace(replace(replace(mobile,' ',''),'(',''),')',''),'-',''),'.',''),10) as number from vtiger_leadaddress, vtiger_leaddetails where vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid and mobile is not null and phone <> ""
Par la suite, il suffit d’octroyé un accès en lecture à cette vue pour l’interroger à partir d’Asterisk similaire à la ligne de commandes suivante (qui devra être adapté en fonction du nom de la base de donnée, de l’adresse du serveur Asterisk et du mot de passe complexe que vous sélectionnerez. N’utilisez JAMAIS le compte utilisateur de votre installation de vtiger CRM mais créer un compte limité à cette consultation.
GRANT SELECT ON [Nom_de_la_base_de_donnée].vtiger_cid TO vtiger_cid@[Adresse du serveur Asterisk] IDENTIFIED BY 'Mot de Passe Complexe';
Et ajouter une nouvelle source de CID à votre environ de téléphonie IP sous FreePBX
La requête (Query) est la suivante, le [NUMBER] doit resté tel-quel car Asterisk le replacera par le numéro de l’appelant :
SELECT name FROM vtiger_cid WHERE number = '[NUMBER]'
Finalement il suffit d’indiquer à FreePBX d’utiliser cette nouvelle source d’appelant sur votre route.
Pour valider que tout fonctionne correctement, il est possible de regarder les traces d’exécutions
-- Executing [cidlookup_2@cidlookup:2] MYSQL("IAX2/XXXXXXXX-2658", "Query resultid 1 SELECT name FROM vtiger_cid WHERE number = 'XXXXXXXX'") in new stack
Maintenant sur vos téléphones l’information affichée sera cohérente avec celle saisie dans votre CRM et les informations affichées pourrait être modifiée selon leur pertinence et vos besoins.
Votre entreprise a un projet en téléphonie IP ou désire intégrer sa téléphonie avec des systèmes de gestion tel qu’un dossier patient informatisé ou un système de suivi de la clientèle ? N’hésitez pas à communiquer avec gestion medsécure qui saura vous conseiller dans votre projet.