[XiVO] Problème d’affichage de l’heure sur Cisco 7941 en cas de redémarrage d’Asterisk
Quel plaisir d’avoir votre système de téléphonie qui marche bien, les téléphones qui se configurent sans intervention physique, des groupes, des messageries, etc.
Le problème c’est que certains détails me chagrinent parfois à en perdre le sommeil. Si vous êtes aussi névrosé que moi, je vais peut-être pouvoir vous aider.
Nous avons trois types de postes. Les Cisco IP Phone 7960, les postes des bureaux du siège, les 7940 qui sont réservés à l’infrastructure, au local technique des agences, et éventuellement pour des lignes secondaires d’utilisateurs, et enfin, les 7941, les postes utilisateurs on-site.
Nous provisionnons nos téléphones directement dans XiVO, je reviendrai la dessus dans un futur billet, et tous les paramètres sont injectés automatiquement sans intervention dans chaque téléphone. Il me suffit de dire que le téléphone X ait telle ligne, et quelques secondes plus tard, le téléphone en question se voit affublé de la ligne demandée. Quelques clics, et quel plaisir de ne plus avoir à se déplacer et configurer manuellement, et surtout sans avoir à mettre les mains dans le cambouis.
Dans les différentes pages de configuration de XiVO, on paramètre la langue et le fuseau horaire, et si on fait bien les choses, les téléphones affichent bien la date et l’heure pour la France, dans le format suivant:

Cisco IP Phone 7941 avec affichage en 24h, juste après une synchronisation de la ligne
Lorsque vous provisionnez les téléphones, tout va bien, mais j’ai remarqué que de temps en temps, certains téléphones perdaient le format d’affichage de l’heure et la date. En effet, on demandait à afficher la date en français, et au bout de quelques heures (après un changement d’adresse IP WAN de l’agence ou un redémarrage d’Asterisk) l’heure se remettait à s’afficher sous la forme:

Cisco IP Phone 7941 en mode 12h, après avoir redémarré Asterisk
Cela semble venir non pas de XiVO mais des téléphones eux-mêmes qui vont chercher leur configuration dans le traditionnel fichier XML généré automatiquement pour chaque téléphone et non pas la configuration que l’utilisateur a choisi dans l’interface Web de XiVO.
Pour corriger le problème, il faut déjà comprendre comment est fait le greffon Cisco, en voici l’arborescence:
Vous pouvez visualiser cela directement en console. Connectez vous en SSH à votre serveur XiVO. Puis rendez vous dans le dossier qui contient les greffons:
ssh -l root <<votre serveur>>
Puis entrez votre mot de passe. On accède ensuite au dossier du greffon:
cd /var/lib/xivo-provd/plugins/xivo-cisco-sccp-9.0.3
Maintenant qu’on est là, je vous explique. Pour générer un fichier de configuration pour les téléphones, des fichiers de template sont utilisés. Dans notre cas, pour les 7941, ce sont les fichiers 7941G.tpl et base.tpl qui sont utilisés. Ce dernier contient en effet les réglages de base. C’est lui qu’on va modifier.
Pour cela, on va utiliser nano:
nano templates/base.tpl
Voici à quoi ressemble le fichier:

Fichier base.tpl avant édition
On va éditer la zone entourée en rouge. Après quelques tentatives, j’ai découvert qu’il suffit de modifier la syntaxe. Pour passer de 17-02-15 à 17/02/15, il suffit tout simplement de remplacer D-M-YA par D/M/YA. En ce qui concerne l’affichage de l’heure, il est conditionné par le A final. Dans le cas présent, le A provoque l’affichage en mode 12h. Il suffit donc de le retirer comme dans la capture suivante pour passer en mode 24h.

Fichier base.tpl modifié.
Une fois que c’est fait, vous pouvez enregistrer. Pour cela, pressez Control X, puis la lettre O et enfin Return pour valider.
Il reste maintenant une étape. Nous avons effectivement modifié le template mais les fichiers déjà générés contiennent toujours l’erreur et provoqueront le même dysfonctionnement. On va donc les régénérer.
On va donc envoyer maintenant cette commande:
provd_pycli -c 'devices.using_plugin("xivo-cisco-sccp-9.0.3").reconfigure()'
Vous allez voir apparaître autant de lignes absconses que vous avez de ces modèles de téléphones déjà enregistrés dans XiVO. Et ensuite… C’est terminé. Faites le test à froid pour être sûr. Redémarrez tout, serveur, téléphones et laissez le tout s’initialiser. Puis redémarrez Asterisk via l’interface de XiVO, et une fois les téléphones réenregistrés, la date et l’heure devraient s’afficher correctement là où ils affichaient l’heure au format 12h avant la modification.
Cela fait maintenant quelques semaines que cette solution fonctionne chez nous. Si vous avez mieux, plus simple, plus efficace à proposer, je serai ravi de modifier ce tutoriel.
Edition du 16 février 2015 :
Comme indiqué dans les commentaires par quelqu’un de chez XiVO, que je remercie chaleureusement au passage, il est préférable de ne pas éditer directement le fichier base.tpl car une mise à jour du greffon supprimera vos modifications. Copiez donc ce fichier dans le dossier var/templates (à l’intérieur du greffon) et éditez celui-là. Les indications nécessaires sont indiquées en commentaire.
Intéressant.
Par contre, pour « bien faire les choses », tu devrais créer un custom template :
http://xivo.readthedocs.org/en/stable/administration/provisioning/adv_configuration.html#creating-custom-templates
Pourquoi ?
Parce que si un jour tu mets à jour ton greffon Cisco, et que la mise à jour contient une nouvelle version du fichier base.tpl, ta modification sera effacée.
Ce qui, dans ton cas donne :
cd /var/lib/xivo-provd/plugins/xivo-cisco-sccp-9.0.3
Copie du template de base de le répertoire ‘custom’ :
cp template/base.tpl var/template/base.tpl
cd var/template
Et puis le reste, c’est pareil (édition du custom template, le reconfigure etc.).
Et du coup, si tu mets à jour le greffon (j’ai posté mon commentaire précédent trop vite), il faudra juste « rafraichir » le custom template i.e. comparer
template/base.tpl (le nouveau)
et
var/template/base.tpl (ton custom template)
et pousser dans ton custom-template d’éventuels changement du template de base.
(j’espère que tout ça est clair …)
Hello ! Tout d’abord, merci beaucoup pour ton commentaire.
Effectivement, très bonne remarque. Juste que, au moment de faire :
provd_pycli -c ‘devices.using_plugin(« xivo-cisco-sccp-9.0.3 »).reconfigure()’
La prise en compte de ce qui se trouve dans var/template se fait automatiquement? La commande utilisant en priorité ce qui est dans var/template et si c’est vide, ce qui est dans template?
> La prise en compte de ce qui se trouve dans var/template
> se fait automatiquement?
Oui
> La commande utilisant en priorité ce qui est
> dans var/template et si c’est vide, ce qui est dans template?
et oui aussi.
provd génère la conf à partir des custom-template puis à partir des template (s’il n’y a pas de custom-template – où s’ils sont mal nommés)
Mais c’est la classe ! 😀 Tu travailles pour XiVO?
Effectivement, pour l’ordre, c’était indiqué dans la doc mais je ne l’avais pas compris comme ça. Merci pour les infos en tout cas. C’est toujours appréciable. Je remettrai tout ça en forme et ferai une mise à jour du billet éventuellement en te citant.
Oui, je suis un avencallien
mais t’embête pas à me citer …
bonne suite avec XiVO !
De toutes façons je vais laisser les commentaires donc…
Cool ça fait plaisir d’avoir des gens de chez vous. Vous êtes à priori la meilleure source d’informations ! Un de tes collègues sur IRC tout a l’heure disait justement que le coup du custom template était mieux juste avant de remarquer le commentaire ! 😀
Bonjour,
Tu peux aussi synchroniser une serveur NTP. Pour moi ça à fonctionné pour un parc de Cisco 7975.
Et aussi (rien à voir avec l’heure) c’est pas du luxe de rajouter dans les templates la ligne (entre les balises) « vendorConfig » :
1
Cela sert à activer le décrochage déporté avec une oreillette externe du type « Plantronic CS540 » branché sur le téléphone.
« 1 »
« —« 1 »—«
ça à du mal les balises dans les commentaires :
« ehookEnable »1″/ehookEnable »
» = > ou <