Wazo Phonebook SnomDECT : Différence entre versions
(18 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 4 : | Ligne 4 : | ||
[[Fichier:wazo-m900snom-limitation.jpg]] | [[Fichier:wazo-m900snom-limitation.jpg]] | ||
− | Après vérification, la raison | + | Après vérification, la raison communiquée par l'éditeur wazo est exact :). |
J'ai tenté de contourner cette limitation via une redirection 301, mais sans succès. | J'ai tenté de contourner cette limitation via une redirection 301, mais sans succès. | ||
− | + | Nous allons donc télécharger le répertoire sur le serveur wazo et de le mettre à disposition sur un autre serveur avec une URL de taille accepté par les bornes. | |
Environnement de test: | Environnement de test: | ||
Ligne 40 : | Ligne 40 : | ||
=== Choix du type de serveur === | === Choix du type de serveur === | ||
− | De base, wazo est fait pour fonctionner avec XML Minibrowser Server, mais lors de mes différents | + | De base, wazo est fait pour fonctionner avec XML Minibrowser Server, mais lors de mes différents tests j'ai pu constater qu'un annuaire de plus de 160 contacts n'était pas accepté. |
Le mode Local n'ayant pas cette limitation nous adapteront le fichier xml afin de lui convenir. | Le mode Local n'ayant pas cette limitation nous adapteront le fichier xml afin de lui convenir. | ||
Ligne 52 : | Ligne 52 : | ||
Sur laquelle j'ai installé une Debian 11.6 minimal avec serveur web (apache2) + php | Sur laquelle j'ai installé une Debian 11.6 minimal avec serveur web (apache2) + php | ||
− | === | + | === Dépendance === |
− | + | Pour le traitement des données Json | |
− | + | apt-get install jq | |
− | + | === Installation === | |
− | + | cloner le projet git: | |
− | + | git clone https://github.com/slemoal51/Wazo---Phonebook.git | |
− | + | Déplacer le contenu du répertoire html en racine de votre répertoire apache. | |
− | |||
− | |||
− | + | Dans mon exemple: /var/www/html/ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Déplacer le contenu du répertoire scripts ou vous le souhaitez. | |
− | |||
− | + | Dans mon exemple: /etc/phonebook/ | |
− | |||
− | + | Modifier le mot de passe dans le fichier: | |
− | + | /var/www/html/login.php | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Adapter le chemin des répertoires dans le fichiers: | |
− | + | /etc/phonebook/download.sh | |
− | + | /etc/phonebook/custom.sh | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Donner les droits d'exécution | Donner les droits d'exécution | ||
chmod +x /etc/phonebook/download.sh | chmod +x /etc/phonebook/download.sh | ||
+ | chmod +x /etc/phonebook/custom.sh | ||
− | + | Modifier crontab pour lancer les scripts toutes les 5minutes | |
− | + | crontab -e | |
− | < | + | <nowiki># Télécharger les répertoires |
− | + | */5 * * * * bash /etc/phonebook/download.sh > /dev/null | |
− | + | # Adapter les répertoires | |
+ | */5 * * * * bash /etc/phonebook/custom.sh > /dev/null</nowiki> | ||
− | + | == Configuration page Web == | |
− | + | Se connecter sur votre page web | |
− | |||
− | + | https://phonebook.slemoal | |
− | |||
− | |||
− | + | Renseigner votre mot de passe, valider. | |
− | |||
− | + | === Récuperer l'URL de l'annuaire Wazo === | |
− | + | La 1ère étape consiste à récupérer le lien de l'annuaire du serveur wazo | |
− | + | [[Fichier:phonebook-geturl.png]] | |
− | |||
− | |||
− | + | # Choisir la stack | |
− | + | # Saisir une mac adresse lié à un poste Yealink de l’installation. | |
+ | [[Fichier:phonebook-geturl1.png]] | ||
− | + | [[Fichier:phonebook-geturl2.png]] | |
− | |||
− | |||
− | + | === Saisie d'un client === | |
− | + | Sur la page principale : | |
+ | # Activer | ||
+ | # Saisir un nom de client | ||
+ | # Coller l’URL précédemment obtenu | ||
+ | # L’ID est automatiquement généré après avoir sauvegardé en fonction du nom de client. | ||
− | + | /!\ Modifier le nom du client obligera à modifier l'ID sur les bornes SNOM lié au client | |
− | |||
− | + | [[Fichier:phonebook-index.png]] | |
− | |||
− | + | === Principe de fonctionnement === | |
+ | Toute les 5minutes, un script télécharge l’annuaire officiel de serveur wazo | ||
− | + | Dans notre exemple : | |
+ | http://wazo01.XXXXX.XXX:9498/0.1/directories/lookup/default/snom?xivo_user_uuid=e5d6a27c-fa64-4a7b-9939-XXXXXXXXXXcdf&term | ||
− | + | Une fois téléchargé, un second script adapte les balises xml afin de correspondre à l’annuaire des bornes snom, supprime les accents, caractères spéciaux, et le met à disposition sous un lien lié à l’ID: | |
− | + | https://phonebook.slemoal.fr/phonebook/ZjY2NzkwMXXXXXXXX | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Configuration des bornes snom == | == Configuration des bornes snom == | ||
=== Méthode Manuel === | === Méthode Manuel === | ||
Voici les paramètres à configurer sur la borne maitre afin que la borne à télécharger son annuaire toute les 5minutes | Voici les paramètres à configurer sur la borne maitre afin que la borne à télécharger son annuaire toute les 5minutes | ||
+ | |||
+ | Coller l'id généré précédemment dans le champ "nom du fichier" | ||
Attention, si le provisionning est activé avec une configuration différente, les paramètres seront écrasés. | Attention, si le provisionning est activé avec une configuration différente, les paramètres seront écrasés. | ||
Ligne 366 : | Ligne 148 : | ||
Les champs nous intéressant sont: | Les champs nous intéressant sont: | ||
− | en ligne 56 le type de | + | en ligne 56 le type de répertoire (O = Local, 1 LDAP, 2 XML Server, 3 XML browser server) |
<phonebook_server_location perm="R">0</phonebook_server_location> | <phonebook_server_location perm="R">0</phonebook_server_location> | ||
en ligne 57 l'adresse du serveur | en ligne 57 l'adresse du serveur | ||
− | <phonebook_location perm="R">https://phonebook.slemoal.fr/</phonebook_location> | + | <phonebook_location perm="R">https://phonebook.slemoal.fr/phonebook/</phonebook_location> |
le nouveau fichier M900.tpl devra ressembler à celui la: | le nouveau fichier M900.tpl devra ressembler à celui la: | ||
Ligne 431 : | Ligne 213 : | ||
{% if XX_xivo_phonebook_url -%} | {% if XX_xivo_phonebook_url -%} | ||
<phonebook_server_location perm="R">0</phonebook_server_location> | <phonebook_server_location perm="R">0</phonebook_server_location> | ||
− | <phonebook_location perm="R">https://phonebook.slemoal.fr/</phonebook_location> | + | <phonebook_location perm="R">https://phonebook.slemoal.fr/phonebook/</phonebook_location> |
{% endif -%} | {% endif -%} | ||
Ligne 445 : | Ligne 227 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Une fois la borne | + | Une fois la borne autoprovisionnée, vous devrez vous connecter sur la borne maitre et Coller l'id généré précédemment dans le champs "nom du fichier" |
[[Fichier:wazo-m900snom-auto.jpg]] | [[Fichier:wazo-m900snom-auto.jpg]] |
Version actuelle datée du 1 mai 2023 à 20:42
Sommaire
Présentation
L'annuaire Wazo n'est pas pris en charge sur les bornes M900 en raison d'une URL Trop grande.
Après vérification, la raison communiquée par l'éditeur wazo est exact :).
J'ai tenté de contourner cette limitation via une redirection 301, mais sans succès.
Nous allons donc télécharger le répertoire sur le serveur wazo et de le mettre à disposition sur un autre serveur avec une URL de taille accepté par les bornes.
Environnement de test:
- Wazo version: 23.1
- Borne M900 version: 530.2
- M85 version: 530.2
M900 - Phonebook
Les bornes M900 peuvent gérer le répertoire distant de 4manières.
- Local
- LDAP
- XML Server
- XML MiniBrowser Server
Local
Ce mode télécharge le répertoire à une intervalle prédéfini et le stock dans sa mémoire. les téléphones récupère le répertoire sur la borne.
Documentation: https://service.snom.com/display/wiki/How+to+use+the+Local+Central+Directory+on+M300%2C+M700%2C+M900+DECT+base
LDAP
L'annuaire central du serveur LDAP permet de configurer tous les paramètres spécifiques à LDAP afin d'effectuer des recherches sur un serveur LDAP
XML Server
Le choix XML server est spécifique à Broadsoft , ce type de carnet d'adresses utilise une API propriétaire Broadsoft nommée XSI pour accéder aux répertoires.
XML MiniBrowser Server
Dans ce mode, rien n'est stocké sur la borne,
Quand un téléphone souhaite accéder à l'annuaire, il fait une requête http vers le serveur distant et télécharge le répertoire.
Choix du type de serveur
De base, wazo est fait pour fonctionner avec XML Minibrowser Server, mais lors de mes différents tests j'ai pu constater qu'un annuaire de plus de 160 contacts n'était pas accepté.
Le mode Local n'ayant pas cette limitation nous adapteront le fichier xml afin de lui convenir.
Configuration du serveur
VM
Dans mon cas, je suis parti avec une VM:
- Stockage: 4Go
- Rem: 1024Mo
Sur laquelle j'ai installé une Debian 11.6 minimal avec serveur web (apache2) + php
Dépendance
Pour le traitement des données Json
apt-get install jq
Installation
cloner le projet git:
git clone https://github.com/slemoal51/Wazo---Phonebook.git
Déplacer le contenu du répertoire html en racine de votre répertoire apache.
Dans mon exemple: /var/www/html/
Déplacer le contenu du répertoire scripts ou vous le souhaitez.
Dans mon exemple: /etc/phonebook/
Modifier le mot de passe dans le fichier:
/var/www/html/login.php
Adapter le chemin des répertoires dans le fichiers:
/etc/phonebook/download.sh /etc/phonebook/custom.sh
Donner les droits d'exécution
chmod +x /etc/phonebook/download.sh chmod +x /etc/phonebook/custom.sh
Modifier crontab pour lancer les scripts toutes les 5minutes
crontab -e
# Télécharger les répertoires */5 * * * * bash /etc/phonebook/download.sh > /dev/null # Adapter les répertoires */5 * * * * bash /etc/phonebook/custom.sh > /dev/null
Configuration page Web
Se connecter sur votre page web
Renseigner votre mot de passe, valider.
Récuperer l'URL de l'annuaire Wazo
La 1ère étape consiste à récupérer le lien de l'annuaire du serveur wazo
- Choisir la stack
- Saisir une mac adresse lié à un poste Yealink de l’installation.
Saisie d'un client
Sur la page principale :
- Activer
- Saisir un nom de client
- Coller l’URL précédemment obtenu
- L’ID est automatiquement généré après avoir sauvegardé en fonction du nom de client.
/!\ Modifier le nom du client obligera à modifier l'ID sur les bornes SNOM lié au client
Principe de fonctionnement
Toute les 5minutes, un script télécharge l’annuaire officiel de serveur wazo
Dans notre exemple :
http://wazo01.XXXXX.XXX:9498/0.1/directories/lookup/default/snom?xivo_user_uuid=e5d6a27c-fa64-4a7b-9939-XXXXXXXXXXcdf&term
Une fois téléchargé, un second script adapte les balises xml afin de correspondre à l’annuaire des bornes snom, supprime les accents, caractères spéciaux, et le met à disposition sous un lien lié à l’ID:
https://phonebook.slemoal.fr/phonebook/ZjY2NzkwMXXXXXXXX
Configuration des bornes snom
Méthode Manuel
Voici les paramètres à configurer sur la borne maitre afin que la borne à télécharger son annuaire toute les 5minutes
Coller l'id généré précédemment dans le champ "nom du fichier"
Attention, si le provisionning est activé avec une configuration différente, les paramètres seront écrasés.
PI: Le bouton "charger" permet de vider le répertoire actuel
Autoprovisionning Wazo
La méthode "propre" est de créer une template custom pour la borne M900
ci dessous un lien vers la documentation wazo:
https://wazo-platform.org/documentation/overview/provisioning-admin.html
Les champs nous intéressant sont: en ligne 56 le type de répertoire (O = Local, 1 LDAP, 2 XML Server, 3 XML browser server)
<phonebook_server_location perm="R">0</phonebook_server_location>
en ligne 57 l'adresse du serveur
<phonebook_location perm="R">https://phonebook.slemoal.fr/phonebook/</phonebook_location>
le nouveau fichier M900.tpl devra ressembler à celui la:
1 <?xml version="1.0" encoding="utf-8" ?>
2 <settings>
3 <phone-settings>
4 {%- if vlan_enabled %}
5 <vlan_id>{{ vlan_id }}</vlan_id>
6 <vlan_qos>{{ vlan_priority|d('0') }}</vlan_qos>
7 {%- else %}
8 <vlan_id></vlan_id>
9 <vlan_qos></vlan_qos>
10 {%- endif %}
11
12 <codec_tos>184</codec_tos>
13 <codec_priority_list perm="R">pcma,pcmu,g722,g729,telephone-event</codec_priority_list>
14 <signaling_tos>184</signaling_tos>
15
16 {%- if admin_username %}
17 <http_user>{{ admin_username|e }}</http_user>
18 {%- else %}
19 <http_user>guest</http_user>
20 {%- endif %}
21
22 {%- if admin_password %}
23 <admin_mode_password>{{ admin_password|e }}</admin_mode_password>
24 <http_pass>{{ admin_password|e }}</http_pass>
25 {%- else %}
26 <admin_mode_password>12345</admin_mode_password>
27 <http_pass>guest</http_pass>
28 {%- endif %}
29
30 {%- if ntp_enabled %}
31 <ntp_server>{{ ntp_ip }}</ntp_server>
32 {%- else %}
33 <ntp_server></ntp_server>
34 {%- endif %}
35
36 {%- for server in XX_servers.values() %}
37 <srv_sip_server_alias idx="{{ server['id'] }}">Wazo {{ server['id'] }}</srv_sip_server_alias>
38 <user_host idx="{{ server['id'] }}">{{ server['proxy_ip'] }}</user_host>
39 <srv_srtp_auth idx="{{ server['id'] }}">off</srv_srtp_auth>
40 <user_dtmf_info idx="{{ server['id'] }}">{{ server['dtmf_mode'] }}</user_dtmf_info>
41 {%- endfor %}
42
43 {%- for line_no, line in sip_lines.items() %}
44 <user_active idx="{{ line_no }}">on</user_active>
45 <user_name idx="{{ line_no }}">{{ line['username']|e }}</user_name>
46 <user_pname idx="{{ line_no }}">{{ line['auth_username']|e }}</user_pname>
47 <user_pass idx="{{ line_no }}">{{ line['password']|e }}</user_pass>
48 <user_realname idx="{{ line_no }}">{{ line['display_name']|e }}</user_realname>
49 <user_mailbox idx="{{ line_no }}">{{ line['voicemail'] }}</user_mailbox>
50 <subscr_sip_hs_idx idx="{{ line_no }}">{{ line_no }}</subscr_sip_hs_idx>
51 <subscr_dect_ac_code idx="{{ line_no }}">{{ "{0:0>4}".format(line_no) }}</subscr_dect_ac_code>
52 <subscr_sip_ua_data_server_id idx="{{ line_no }}">{{ line['XX_server_id'] }}</subscr_sip_ua_data_server_id>
53 <codec_priority_list idx="{{ line_no }}" perm="R">pcma,pcmu,g722,g729,telephone-event</codec_priority_list>
54 {%- endfor %}
55
56 {% if XX_xivo_phonebook_url -%}
57 <phonebook_server_location perm="R">0</phonebook_server_location>
58 <phonebook_location perm="R">https://phonebook.slemoal.fr/phonebook/</phonebook_location>
59 {% endif -%}
60
61 {%- if XX_lang %}
62 <language>{{ XX_lang[0] }}</language>
63 <web_language>{{ XX_lang[0] }}</web_language>
64 <tone_scheme>{{ XX_lang[1] }}</tone_scheme>
65 {%- endif %}
66
67 {% block settings_suffix %}{% endblock %}
68 </phone-settings>
69 </settings>
Une fois la borne autoprovisionnée, vous devrez vous connecter sur la borne maitre et Coller l'id généré précédemment dans le champs "nom du fichier"