Différences entre les pages « Wazo Phonebook SnomDECT » et « Xivo dialplan extern »

De SLM - MediaWiki
(Différence entre les pages)
 
 
Ligne 1 : Ligne 1 :
−
== Présentation ==
+
Quelques exemples avec "0" comme préfixe de sortie :
−
L'annuaire Wazo n'est pas pris en charge sur les bornes M900 en raison d'une URL Trop grande.
+
*"0[1-3]XXX" : les numéros spéciaux Français sur 4 chiffres.
 +
*"0118XXX" : les renseignements téléphoniques.
 +
*"00[1-589]XXXXXXXX" : correspond aux numéros fixes français.
 +
*"00[67]XXXXXXXX" : correspond aux numéros de cellulaires français.
 +
*"000XXXXX." : les numéros à l'international.
 +
*"011[23459]" : les numéros d’urgences Européen avec préfixe de sortie.
 +
*"11[23459]" : les numéros d’urgences Européen sans préfixe de sortie
 +
*"01[578]" : les numéros d’urgences Français avec préfixe de sortie.
 +
*"1[578]" : les numéros d’urgences Français sans préfixe de sortie.
  
−
[[Fichier:wazo-m900snom-limitation.jpg]]
+
Quelques exemples sans préfixe de sortie :
 +
*"[1-3]XXX" : les numéros spéciaux Français sur 4 chiffres.
 +
*"118XXX" : les renseignements téléphoniques.
 +
*"0[1-589]XXXXXXXX" : correspond aux numéros fixes français.
 +
*"0[67]XXXXXXXX" : correspond aux numéros de cellulaires français.
 +
*"00XXXXX." : les numéros à l'international.  
 +
*"11[23459]" : les numéros d’urgences Européen
 +
*"1[578]" : les numéros d’urgences Français
  
−
Après vérification, la raison communiqué par l'éditeur wazo est exact :).
+
[[File:Xivo_dialplan_toextern_1.png||450px]]
  
−
J'ai tenté de contourner cette limitation via une redirection 301, mais sans succès.
+
[[File:Xivo_dialplan_toextern_2.png||450px]]
−
 
 
−
La seconde approche, qui elle fonctionne, est de télécharger ce répertoire 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 test 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  ==
 
−
clonner le projet git:
 
−
git clone https://github.com/slemoal51/Wazo---Phonebook.git
 
−
 
 
−
déplacer le contenu du repertoire html en racine de votre repertoire apache.
 
−
 
 
−
Dans mon exemple: /var/www/html/
 
−
 
 
−
 
 
−
Déplacer le contenu du repertoire 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 repertoires dans le fichiers:
 
−
/etc/phonebook/download.sh
 
−
/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>
 
−
 
 
−
=== Script ===
 
−
Nous allons installer 2 scripts
 
−
# Télécharger les répertoires wazo
 
−
# Adapter les répertoires téléchargés
 
−
 
 
−
mkdir /etc/phonebook
 
−
 
 
−
==== Télécharger les répertoires ====
 
−
vi /etc/phonebook/download.sh
 
−
 
 
−
<syntaxhighlight lang="shell" line>#!/bin/bash
 
−
 
 
−
# Charger les données depuis le fichier variables.json
 
−
contenu=$(cat /var/www/html/includes/variables.json)
 
−
donnees=($(echo "$contenu" | jq -r '.[] | "\(.valeur1),\(.valeur2),\(.valeur3),\(.valeur4)"'))
 
−
 
 
−
# Parcourir les données et télécharger les fichiers
 
−
for donnee in "${donnees[@]}"; do
 
−
    # Extraire les valeurs de chaque colonne
 
−
    valeur1=$(echo "$donnee" | cut -d ',' -f 1)
 
−
    valeur3=$(echo "$donnee" | cut -d ',' -f 3)
 
−
    valeur4=$(echo "$donnee" | cut -d ',' -f 4)
 
−
 
 
−
    # Vérifier si la case de la colonne 1 est activée
 
−
    if [ "$valeur1" == "checked" ]; then
 
−
        # Télécharger le fichier avec wget
 
−
        wget "$valeur3" -O "/var/www/html/phonebook/$valeur4"
 
−
        echo "Le fichier $valeur4 a été téléchargé depuis $valeur3."
 
−
    fi
 
−
done
 
−
</syntaxhighlight>
 
−
 
 
−
Donner les droits d'exécution
 
−
chmod +x /etc/phonebook/download.sh
 
−
 
 
−
==== Adapter les répertoires ====
 
−
vi /etc/phonebook/custom.sh
 
−
 
 
−
<syntaxhighlight lang="shell" line>#!/bin/bash
 
−
# Scrypt lancé par crontab
 
−
 
 
−
sleep 5
 
−
 
 
−
#Remplacer les caractères non apprecié
 
−
sed -i 's/&#39;/ /' /var/www/html/phonebook/*
 
−
sed -i 'y/_àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ/ aceeeeiioouuACEEEEIIOOUU/' /var/www/html/phonebook/*
 
−
 
 
−
## Adapter au format Tbook
 
−
sed -i 's#/SnomIPPhoneDirectory#/tbook#' /var/www/html/phonebook/*
 
−
sed -i 's/SnomIPPhoneDirectory/tbook complete="true"/' /var/www/html/phonebook/*
 
−
 
 
−
sed -i 's#/DirectoryEntry#/item#' /var/www/html/phonebook/*
 
−
sed -i 's/DirectoryEntry/item context="active" type="colleagues"/' /var/www/html/phonebook/*
 
−
 
 
−
sed -i 's#/Name>#/name>#' /var/www/html/phonebook/*
 
−
sed -i 's/Name>/name>/' /var/www/html/phonebook/*
 
−
 
 
−
sed -i 's#/Telephone>#/number>#' /var/www/html/phonebook/*
 
−
sed -i 's/Telephone>/number>/' /var/www/html/phonebook/*
 
−
</syntaxhighlight>
 
−
 
 
−
Donner les droits d'exécution
 
−
chmod +x /etc/phonebook/custom.sh
 
−
 
 
−
==== Planifier l'exécution des scripts ====
 
−
Dans l'exemple ci-dessous les répertoires seront mis à jours toute les 5 minutes
 
−
crontab -e
 
−
 
 
−
<syntaxhighlight lang="shell" line highlight="9-11"># 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</syntaxhighlight>
 
−
 
 
−
== Configuration page Web ==
 
−
Se connecter sur votre page web
 
−
 
 
−
https://phonebook.slemoal/phonebook.php
 
−
 
 
−
Renseigner votre mot de passe, valider.
 
−
 
 
−
[[Fichier:phonebook-admin.jpg]]
 
−
 
 
−
Renseigner:
 
−
* Activer
 
−
* Saisir URL de l'annuaire wazo
 
−
* Enregistrer
 
−
 
 
−
L'ID est automatiquement généré par rapport au nom du client.
 
−
Modifier celui ci obligera à modifier l'ID sur les bornes SNOM du client
 
−
 
 
−
== 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écedemment dans le champs "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
 
−
 
 
−
[[Fichier:wazo-m900snom-manuel.jpg]]
 
−
 
 
−
=== 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 repertoire (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:
 
−
 
 
−
<syntaxhighlight lang="python" line><?xml version="1.0" encoding="utf-8" ?>
 
−
<settings>
 
−
    <phone-settings>
 
−
    {%- if vlan_enabled %}
 
−
        <vlan_id>{{ vlan_id }}</vlan_id>
 
−
        <vlan_qos>{{ vlan_priority|d('0') }}</vlan_qos>
 
−
    {%- else %}
 
−
        <vlan_id></vlan_id>
 
−
        <vlan_qos></vlan_qos>
 
−
    {%- endif %}
 
−
 
 
−
        <codec_tos>184</codec_tos>
 
−
        <codec_priority_list perm="R">pcma,pcmu,g722,g729,telephone-event</codec_priority_list>
 
−
        <signaling_tos>184</signaling_tos>
 
−
 
 
−
    {%- if admin_username %}
 
−
        <http_user>{{ admin_username|e }}</http_user>
 
−
    {%- else %}
 
−
        <http_user>guest</http_user>
 
−
    {%- endif %}
 
−
 
 
−
    {%- if admin_password %}
 
−
        <admin_mode_password>{{ admin_password|e }}</admin_mode_password>
 
−
        <http_pass>{{ admin_password|e }}</http_pass>
 
−
    {%- else %}
 
−
        <admin_mode_password>12345</admin_mode_password>
 
−
        <http_pass>guest</http_pass>
 
−
    {%- endif %}
 
−
 
 
−
    {%- if ntp_enabled %}
 
−
        <ntp_server>{{ ntp_ip }}</ntp_server>
 
−
    {%- else %}
 
−
        <ntp_server></ntp_server>
 
−
    {%- endif %}
 
−
 
 
−
    {%- for server in XX_servers.values() %}
 
−
        <srv_sip_server_alias idx="{{ server['id'] }}">Wazo {{ server['id'] }}</srv_sip_server_alias>
 
−
        <user_host idx="{{ server['id'] }}">{{ server['proxy_ip'] }}</user_host>
 
−
        <srv_srtp_auth idx="{{ server['id'] }}">off</srv_srtp_auth>
 
−
        <user_dtmf_info idx="{{ server['id'] }}">{{ server['dtmf_mode'] }}</user_dtmf_info>
 
−
    {%- endfor %}
 
−
 
 
−
    {%- for line_no, line in sip_lines.items() %}
 
−
        <user_active idx="{{ line_no }}">on</user_active>
 
−
        <user_name idx="{{ line_no }}">{{ line['username']|e }}</user_name>
 
−
        <user_pname idx="{{ line_no }}">{{ line['auth_username']|e }}</user_pname>
 
−
        <user_pass idx="{{ line_no }}">{{ line['password']|e }}</user_pass>
 
−
        <user_realname idx="{{ line_no }}">{{ line['display_name']|e }}</user_realname>
 
−
        <user_mailbox idx="{{ line_no }}">{{ line['voicemail'] }}</user_mailbox>
 
−
        <subscr_sip_hs_idx idx="{{ line_no }}">{{ line_no }}</subscr_sip_hs_idx>
 
−
        <subscr_dect_ac_code idx="{{ line_no }}">{{ "{0:0>4}".format(line_no) }}</subscr_dect_ac_code>
 
−
        <subscr_sip_ua_data_server_id idx="{{ line_no }}">{{ line['XX_server_id'] }}</subscr_sip_ua_data_server_id>
 
−
        <codec_priority_list idx="{{ line_no }}" perm="R">pcma,pcmu,g722,g729,telephone-event</codec_priority_list>
 
−
    {%- endfor %}
 
−
 
 
−
    {% if XX_xivo_phonebook_url -%}
 
−
        <phonebook_server_location perm="R">0</phonebook_server_location>
 
−
        <phonebook_location perm="R">https://phonebook.slemoal.fr/phonebook/</phonebook_location>
 
−
    {% endif -%}
 
−
 
 
−
    {%- if XX_lang %}
 
−
        <language>{{ XX_lang[0] }}</language>
 
−
        <web_language>{{ XX_lang[0] }}</web_language>
 
−
        <tone_scheme>{{ XX_lang[1] }}</tone_scheme>
 
−
    {%- endif %}
 
−
 
 
−
    {% block settings_suffix %}{% endblock %}
 
−
    </phone-settings>
 
−
</settings>
 
−
</syntaxhighlight>
 
−
 
 
−
Une fois la borne autoprovisionner, vous devrez vous connecter sur la borne maitre et Coller l'id généré précedemment dans le champs "nom du fichier"
 
−
 
 
−
[[Fichier:wazo-m900snom-auto.jpg]]
 

Version actuelle datée du 30 octobre 2024 à 08:44

Quelques exemples avec "0" comme préfixe de sortie :

  • "0[1-3]XXX" : les numéros spéciaux Français sur 4 chiffres.
  • "0118XXX" : les renseignements téléphoniques.
  • "00[1-589]XXXXXXXX" : correspond aux numéros fixes français.
  • "00[67]XXXXXXXX" : correspond aux numéros de cellulaires français.
  • "000XXXXX." : les numéros à l'international.
  • "011[23459]" : les numéros d’urgences Européen avec préfixe de sortie.
  • "11[23459]" : les numéros d’urgences Européen sans préfixe de sortie
  • "01[578]" : les numéros d’urgences Français avec préfixe de sortie.
  • "1[578]" : les numéros d’urgences Français sans préfixe de sortie.

Quelques exemples sans préfixe de sortie :

  • "[1-3]XXX" : les numéros spéciaux Français sur 4 chiffres.
  • "118XXX" : les renseignements téléphoniques.
  • "0[1-589]XXXXXXXX" : correspond aux numéros fixes français.
  • "0[67]XXXXXXXX" : correspond aux numéros de cellulaires français.
  • "00XXXXX." : les numéros à l'international.
  • "11[23459]" : les numéros d’urgences Européen
  • "1[578]" : les numéros d’urgences Français

Xivo dialplan toextern 1.png

Xivo dialplan toextern 2.png