Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
asterisk [Le 07/03/2021, 17:55]
109.190.93.124 [Configuration d'Asterisk]
asterisk [Le 11/02/2024, 19:56] (Version actuelle)
dexter74
Ligne 4: Ligne 4:
 ====== Asterisk (For VoIP) ====== ====== Asterisk (For VoIP) ======
  
-{{ http://​upload.wikimedia.org/​wikipedia/​fr/​7/​7f/​Asterisk_logo4.png?​200}}+{{ https://​upload.wikimedia.org/​wikipedia/​fr/​7/​7f/​Asterisk_logo4.png?​200}}
  
 ===== Préambule ===== ===== Préambule =====
Ligne 17: Ligne 17:
  
 ===== Installation ===== ===== Installation =====
-Tout d'​abord,​ veillez à avoir une distribution à jour : +Tout d'​abord,​ veillez à avoir une distribution à jour :
 <​code>​sudo apt update <​code>​sudo apt update
 sudo apt upgrade </​code>​ sudo apt upgrade </​code>​
  
 Nous procédons ensuite à l'​[[:​tutoriel:​comment_installer_un_paquet|installation]] des dépendances :  Nous procédons ensuite à l'​[[:​tutoriel:​comment_installer_un_paquet|installation]] des dépendances : 
-<​code>​sudo apt install build-essential libxml2-dev libncurses5-dev linux-headers-`uname -rlibsqlite3-dev libssl-dev libedit-dev uuid-dev libjansson-dev</​code>​+<​code>​sudo apt install build-essential libxml2-dev libncurses5-dev linux-headers-$(uname -rlibsqlite3-dev libssl-dev libedit-dev uuid-dev libjansson-dev</​code>​
  
-On télécharge la dernière version d’Asterisk et on l’installe :  +On télécharge la dernière version d’Asterisk et on l’installe : 
-<​code>​mkdir /​usr/​src/​asterisk + 
-cd /​usr/​src/​asterisk +1 - Auparavant vérifier la version à utiliser et modifiez les trois lignes (3, 4, 5) en fonction de la version d'​Asterisk 
-wget http://​downloads.asterisk.org/​pub/​telephony/​asterisk/​asterisk-16-current.tar.gz + 
-tar -xvzf asterisk-16-current.tar.gz +2 - Exécuter la ligne 6 en étant dans le répertoire /​usr/​src/​asterisk/​asterisk-18.6.0 (car configure est un fichier exécutable du répertoire asterisk-18.6.0) 
-cd asterisk-16.0.1                         # <--- Modifiez cette ligne en fonction de la version d'​Asterisk+<​code>​ 
 +mkdir /​usr/​src/​asterisk 
 +cd /​usr/​src/​asterisk ​                      ​ 
 +wget http://​downloads.asterisk.org/​pub/​telephony/​asterisk/​asterisk-18-current.tar.gz 
 +tar -xvzf asterisk-18-current.tar.gz 
 +cd asterisk-18.6.0
 ./configure --with-jansson-bundled ./configure --with-jansson-bundled
-make menuselect</​code>​+make menuselect 
 +</​code>​
  
 Lorsque vous faites le ./​configure,​ il est possible qu'il manque des paquets; dans ce cas, installez la version dev de ce paquet (par exemple, s'il manque le paquet libedit, exécutez la commande sudo apt-get install libedit-dev) puis relancez le ./​configure. Lorsque vous faites le ./​configure,​ il est possible qu'il manque des paquets; dans ce cas, installez la version dev de ce paquet (par exemple, s'il manque le paquet libedit, exécutez la commande sudo apt-get install libedit-dev) puis relancez le ./​configure.
Ligne 49: Ligne 55:
 make config</​code>​ make config</​code>​
  
-Enfin, lancez Asterisk avec la commande suivante : +Enfin, lancez Asterisk avec la commande suivante :
  
 <​code>/​etc/​init.d/​asterisk start</​code>​ <​code>/​etc/​init.d/​asterisk start</​code>​
  
-Lancez la console Asterisk avec la commande suivante : +Lancez la console Asterisk avec la commande suivante :
  
 <​code>​sudo asterisk -rvvvv</​code>​ <​code>​sudo asterisk -rvvvv</​code>​
Ligne 71: Ligne 77:
 KERNEL=="​zap[0-9]*",​ NAME="​zap/​%n",​ OWNER="​asterisk",​ GROUP="​asterisk",​ MODE="​0660"</​code>​ KERNEL=="​zap[0-9]*",​ NAME="​zap/​%n",​ OWNER="​asterisk",​ GROUP="​asterisk",​ MODE="​0660"</​code>​
  
-Ensuite, il faut compiler et installer les pilotes : +Ensuite, il faut compiler et installer les pilotes :soumaya 
-<​code>​ sudo apt-get install gcc zaptel zaptel-source +<​code>​ 
- sudo module-assistant auto-install zaptel</​code>​+sudo apt-get install gcc zaptel zaptel-source 
 +sudo module-assistant auto-install zaptel 
 +</​code>​
  
 Fin de l'​installation des pilotes Zaptel, redémarrez maintenant votre ordinateur a l'aide de la commande : Fin de l'​installation des pilotes Zaptel, redémarrez maintenant votre ordinateur a l'aide de la commande :
-<​code>​ sudo reboot</​code>​+<​code>​sudo reboot</​code>​
  
 Ensuite nous allons procéder à l'​installation de Asterisk : Ensuite nous allons procéder à l'​installation de Asterisk :
-<​code>​ sudo apt-get install asterisk</​code>​+<​code>​sudo apt-get install asterisk</​code>​
  
 Un fois installé, modifiez ces paramètres pour que Asterisk demarre au démarrage de l'​ordinateur : Un fois installé, modifiez ces paramètres pour que Asterisk demarre au démarrage de l'​ordinateur :
-<​code>​ sudo vim /​etc/​default/​asterisk</​code>​+<​code>​sudo vim /​etc/​default/​asterisk</​code>​
 <​code>​RUNASTERISK=yes <​code>​RUNASTERISK=yes
 RUNASTSAFE=no</​code>​ RUNASTSAFE=no</​code>​
Ligne 90: Ligne 98:
  
 ===== Configuration ===== ===== Configuration =====
-La configuration d'​Asterisk s'​articule sur les fichiers de configuration suivants : +La configuration d'​Asterisk s'​articule sur les fichiers de configuration suivants :
  
   * **''/​etc/​asterisk/​sip.conf''​** : Configuration globale d'​Asterisk   * **''/​etc/​asterisk/​sip.conf''​** : Configuration globale d'​Asterisk
Ligne 103: Ligne 111:
 ==== Paramétrer les sons en français ==== ==== Paramétrer les sons en français ====
 [[:​tutoriel:​comment_modifier_un_fichier|Modifier le fichier]] ​ **''/​etc/​asterisk/​sip.conf''​** et modifiez la ligne :  [[:​tutoriel:​comment_modifier_un_fichier|Modifier le fichier]] ​ **''/​etc/​asterisk/​sip.conf''​** et modifiez la ligne : 
 +<​code>​
 +language=en;​ Default language setting for all users/peers
 +</​code>​
 +en :
 +<​code>​
 +language=fr;​ Default language setting for all users/peers
 +</​code>​
  
-<​code>;​language=en ​                    ; Default language setting for all users/​peers</​code>​ 
- 
-en :  
- 
-<​code>​language=fr ​                    ; Default language setting for all users/​peers</​code>​ 
 <note important>​N'​oubliez pas d'​enlever le point-virgule au début de la ligne.</​note>​ <note important>​N'​oubliez pas d'​enlever le point-virgule au début de la ligne.</​note>​
 ==== Modifier les utilisateurs ==== ==== Modifier les utilisateurs ====
Ligne 129: Ligne 139:
  
 === Méthode sans template === === Méthode sans template ===
-Pour chaque utilisateur,​ ajoutez le code suivant (avec les modifications nécessaires) : +Pour chaque utilisateur,​ ajoutez le code suivant (avec les modifications nécessaires) :
  
 <​code>​[6001] ;​ Numéro SIP <​code>​[6001] ;​ Numéro SIP
Ligne 143: Ligne 153:
  
 === Méthode avec template === === Méthode avec template ===
-Pour chaque template, ajoutez le code suivant (avec les modifications nécessaires) : +Pour chaque template, ajoutez le code suivant (avec les modifications nécessaires) :
 <​code>​ <​code>​
 [template](!) ;​ Nom du template (ici template) [template](!) ;​ Nom du template (ici template)
Ligne 154: Ligne 164:
 </​code>​ </​code>​
  
-Pour chaque utilisateur,​ ajoutez le code suivant (avec les modifications nécessaires) : +Pour chaque utilisateur,​ ajoutez le code suivant (avec les modifications nécessaires) :
 <​code>​[6001](template) ;​ Numéro SIP et template utilisé <​code>​[6001](template) ;​ Numéro SIP et template utilisé
 fullname = John DOE ; Nom complet de l'​utilisateur (ce qui s'​affichera sur le téléphone) fullname = John DOE ; Nom complet de l'​utilisateur (ce qui s'​affichera sur le téléphone)
Ligne 207: Ligne 217:
 des sonneries et messages personnalisés,​ etc. des sonneries et messages personnalisés,​ etc.
  
 +=== Exemple d'AGI : allumer la lumière ===
 +AGI permet à Asterisk d’exécuter des scripts. L'​exemple ci-dessous ouvre la piste vers toute sorte de solutions domotiques.
 +
 +L'​idée est la suivante: Asterisk modifie à distance un fichier sur le Raspberry. Sur celui-ci un script python analyse le fichier et active le GPIO en fonction.
 +
 +== Du côté du serveur Raspberry ==
 +
 +Installer un raspberry avec Pi Os Lite. Activer le ssh. Pour l'​exemple,​ l'​utilisateur sera info, l'​adresse IP du Raspberry 192.168.1.111.
 +
 +Dans /home/info créer le script python command.py:
 +
 +<​code>​import RPi.GPIO as GPIO 
 +import time 
 +GPIO.setmode(GPIO.BCM) ​
 +GPIO.setup(24,​ GPIO.OUT)
 +
 +while True: 
 + with open('​command.txt',​ '​r'​) as fichier: ​
 + ​contenu = fichier.read()
 +
 + if "​on"​ in contenu: ​
 +  # Turn on 
 +  print('​on'​) ​
 +  GPIO.output(24,​ GPIO.HIGH) ​
 + ​else: ​
 +  # Turn off 
 +  print('​off'​) ​
 +  GPIO.output(24,​ GPIO.LOW)</​code>​
 +
 +== Du côté d'​Asterisk ==
 +
 +Il faut d'​abord autoriser du ssh sans mot de passe. Dans la console (ne rien entrer comme nom de fichier et comme passphrase):​
 +
 +<​code>​ssh-keygen -t rsa</​code>​
 +
 +Partager la clé avec le raspberry:
 +
 +<​code>​ssh-copy-id info@192.168.1.111</​code>​
 +
 +Configurer ensuite l'AGI, en ajoutant ces lignes dans extensions.conf:​
 +
 +<​code>​exten => 801,​n,​AGI(allumer.agi)
 +exten => 800,​n,​AGI(eteindre.agi)</​code>​
 +
 +On crée ensuite les scripts correspondant. Créer le fichier /​var/​lib/​asterisk/​agi-bin/​allumer.agi et le rendre éxécutable:​
 +
 +<​code>#​!/​bin/​bash
 +scp /​root/​on.txt info@192.168.1.111:/​home/​info/​command.txt</​code>​
 +
 +Faire de même pour eteindre.agi. Il faut aussi créer un fichier /​root/​on.txt contenant uniquement le mot on, et son équivalent off.
 +
 +Recharger Asterisk. C'est sensé fonctionner!
 ===== Matériel compatible ===== ===== Matériel compatible =====
  
Ligne 249: Ligne 311:
  
 Cette passerelle compte 2 port T0. Mais la programmation Smartnode semble identique sur toutes les passerelles Patton RNIS. Cette passerelle compte 2 port T0. Mais la programmation Smartnode semble identique sur toutes les passerelles Patton RNIS.
-L'​interface web est acceptable mais le langage du fichier de configuration est mieux. J'ai donc préféré travailler sur le fichier ce qui est simplifié par l'​usage du wizard, comme indiqué ci-dessous. ​+L'​interface web est acceptable mais le langage du fichier de configuration est mieux. J'ai donc préféré travailler sur le fichier ce qui est simplifié par l'​usage du wizard, comme indiqué ci-dessous.
  
-On trouve beaucoup de documentation mais le manuel de configuration simplifié ​est sans doute le meilleur guide: ​[[https://​www.patton.com/​manuals/​snfrench-gs.pdf]]+On trouve beaucoup de documentationmais le meilleur guide est sans doute [[https://​www.patton.com/​manuals/​snfrench-gs.pdf|le manuel de configuration simplifié]]
 == Configuration de la passerelle == == Configuration de la passerelle ==
-Surtout ​on trouve sur le site de Patton un wizard pour créer un fichier de configuration qu'il suffit ensuite de personnaliser. Aller sur [[https://​www.patton.com/​wizard/​|cette page]], connectez-vous et choisissez ensuite le wizard "​SmartWare ISDN PSTN gateway Asterisk trunk Setup" ​([[https://​www.patton.com/​wizard/?​w=147|lien]]). Cliquez sur Run wizard et laissez-vous guider. Vous récupérez à la fin un fichier de configuration qu'il suffit de charger sur la passerelle. ​Attention, dans mon cas le login et mot de passe n'avaient pas été pris en compte ​(restés configurés par défaut).+Pour se connecter à la passerelle, il faut en connaître l'​adresse IP. 
 +Deux solutions: le logiciel de Patton, ou bien repérer l'​adresse MAC sur votre routeur. 
 + 
 +Par défaut aucune route n'est définie. Il n'est donc pas possible de se connecter depuis un autre sous-réseau. 
 +On peut créer la route depuis l'​interface web; on peut aussi directement charger un fichier de configuration avec une route. 
 + 
 +On trouve sur le site de Patton un wizard pour créer un fichier de configuration qu'il suffit ensuite de personnaliser. Aller sur [[https://​www.patton.com/​wizard/​|cette page]], connectez-vous et choisissez ensuite le wizard "​SmartWare ISDN PSTN gateway Asterisk trunk Setup" ​qui produit ​un fichier de configuration qu'il suffit de charger sur la passerelle. 
 + 
 +Ce wizard a trois défauts: 
 + 
 +   * Il ne crée pas le mot de passe. Il vaut donc mieux enlever la ligne concernée et créer ensuite login et mdp par l'interface web (System/AAA). 
 +   * Il ne crée pas de route. 
 +   * La passerelle enverra en DTMF le joli nom de "​patton"​ et non pas le numéro de l'​appelant. 
 + 
 +Ci dessous, un fichier de config sans la ligne de login et avec correction des deux derniers points. 
 +Il faut penser à modifier les adresses IP selon vos besoins. 
 + 
 +<​code>​ 
 + 
 +#​----------------------------------------------------------------#​ 
 +#                                                                # 
 +# SN4120/​2BIS4V ​                                                 # 
 +# R6.11 2019-07-02 H323 SIP                                      # 
 +# 1970-01-20T23:​16:​11 ​                                           # 
 +# SN/​00A0BA107E7B ​                                               # 
 +# Generated configuration file                                   # 
 +#                                                                # 
 +#​----------------------------------------------------------------#​ 
 + 
 +cli version 3.20 
 + 
 +clock local default-offset +00:00 
 +webserver port 80 language en 
 + 
 +system 
 + 
 +  ic voice 0 
 +    low-bitrate-codec g729 
 + 
 +system 
 +  clock-source 1 bri 0 0 
 +  clock-source 2 bri 0 1 
 + 
 +profile ppp default 
 + 
 +profile tone-set default 
 + 
 +profile voip default 
 +  codec 1 g711alaw64k rx-length 20 tx-length 20 
 +  codec 2 g711ulaw64k rx-length 20 tx-length 20 
 + 
 +profile pstn default 
 + 
 +profile sip default 
 +  no autonomous-transitioning 
 + 
 +profile aaa default 
 +  method 1 local 
 +  method 2 none 
 + 
 +context ip router 
 + 
 +  interface WAN 
 +    ipaddress 192.168.40.9 255.255.255.0 ​    # Adresse IP de la patton 
 + 
 +context ip router 
 +  route 0.0.0.0 0.0.0.0 192.168.40.1 0       # Adresse du routeur 
 + 
 +context cs switch 
 + 
 +  routing-table called-e164 RT_ISDN_TO_SIP 
 +    route .T dest-interface IF_SIP 
 + 
 +  interface isdn IF_ISDN_00 
 +    route call dest-table RT_ISDN_TO_SIP 
 +    call-reroute emit 
 +    diversion emit 
 + 
 +  interface isdn IF_ISDN_01 
 +    route call dest-table RT_ISDN_TO_SIP 
 +    call-reroute emit 
 +    diversion emit 
 + 
 +  interface sip IF_SIP 
 +    bind context sip-gateway GW_SIP 
 +    route call dest-service SRV_HG 
 +    remote 192.168.40.10 ​                 # Adresse d'​Asterisk 
 +    trust remote 
 + 
 +  service hunt-group SRV_HG 
 +    drop-cause normal-unspecified 
 +    drop-cause no-circuit-channel-available 
 +    drop-cause network-out-of-order 
 +    drop-cause temporary-failure 
 +    drop-cause switching-equipment-congestion 
 +    drop-cause access-info-discarded 
 +    drop-cause circuit-channel-not-available 
 +    drop-cause resources-unavailable 
 +    route call 1 dest-interface IF_ISDN_00 
 +    route call 2 dest-interface IF_ISDN_01 
 + 
 +context cs switch 
 +  no shutdown 
 + 
 +authentication-service AUTH_SRV 
 + 
 +location-service SER_LOC 
 +  domain 1 192.168.40.10 ​               # Adresse d'​Asterisk 
 +  match-any-domain 
 + 
 +  identity patton 
 + 
 +    authentication outbound 
 +      authenticate 1 authentication-service AUTH_SRV username patton 
 + 
 +    registration outbound 
 +      registrar 192.168.40.10 ​             # Adresse d'​Asterisk 
 +      register auto 
 + 
 +context sip-gateway GW_SIP 
 + 
 +  interface IF_GWSIP 
 +    bind interface WAN context router port 5060 
 + 
 +context sip-gateway GW_SIP 
 +  bind location-service SER_LOC 
 +  no shutdown 
 + 
 +port ethernet 0 0 
 +  medium auto 
 +  bind interface WAN router 
 +  no shutdown 
 + 
 +port bri 0 0 
 +  clock auto 
 +  encapsulation q921 
 + 
 +  q921 
 +    permanent-layer2 
 +    uni-side auto 
 +    encapsulation q931 
 + 
 +    q931 
 +      protocol dss1 
 +      uni-side user 
 +      bchan-number-order ascending 
 +      encapsulation cc-isdn 
 +      bind interface IF_ISDN_00 switch 
 + 
 +port bri 0 0 
 +  no shutdown 
 + 
 +port bri 0 1 
 +  clock auto 
 +  encapsulation q921 
 + 
 +  q921 
 +    permanent-layer2 
 +    uni-side auto 
 +    encapsulation q931 
 + 
 +    q931 
 +      protocol dss1 
 +      uni-side user 
 +      bchan-number-order ascending 
 +      encapsulation cc-isdn 
 +      bind interface IF_ISDN_01 switch 
 + 
 +port bri 0 1 
 +  no shutdown 
 +</​code>​
  
 == Configuration d'​Asterisk == == Configuration d'​Asterisk ==
-Si les adresses IP sont fixes, il n'y a pas besoin d'​authentification. ​+Si les adresses IP sont fixes, il n'y a pas besoin d'​authentification.
  
 Il suffit donc d'​ajouter ces lignes dans sip.conf: Il suffit donc d'​ajouter ces lignes dans sip.conf:
Ligne 268: Ligne 500:
 </​code>​ </​code>​
  
-**Dans le dialplanextensions.confquelques exemples d'​utilisation:​**+**Dans le dialplan ​(extensions.confquelques exemples d'​utilisation:​**
  
 Pour les appels entrants, la Patton passe en numéro d'​extension les quatre derniers chiffres du numéro appelé (le vôtre, donc!). L'​exemple suivant vaut donc pour un numéro du type: xx xx xx 5678. C'est d'​ailleurs ainsi qu'on peut modifier le comportement d'​Asterisk selon le SDA appelé. Pour les appels entrants, la Patton passe en numéro d'​extension les quatre derniers chiffres du numéro appelé (le vôtre, donc!). L'​exemple suivant vaut donc pour un numéro du type: xx xx xx 5678. C'est d'​ailleurs ainsi qu'on peut modifier le comportement d'​Asterisk selon le SDA appelé.
Ligne 282: Ligne 514:
 </​code>​ </​code>​
  
 +
 +==== Téléphones ====
 +
 +Matériel testé avec succès:
 +
 +  * Yealink T19 et T33 (interface web intuitive).
 +  * Gigaset N870 (et S650H). La N870 est un système DECT pouvant couvrir de très grandes entreprises. La base N870 peut servir de manager (au moins un par installation) et/ou de base DECT (inscrite auprès de la base manager). La base manager fournit une interface web intuitive et puissante dans laquelle sont configurés tous les téléphones DECT.\\ L'​utilisation avec Asterisk ne pose aucun problème particulier,​ sauf peut-être les MWI pour les messageries vocales: Bien les activer dans la page Provider du N870, en indiquant l'​adresse IP du fournisseur (donc le serveur Asterisk). Du côté d'​Asterisk,​ il faut que les users soient inscrits (''​subscribemwi=yes''​) et il faut indiquer les MWI dans extensions.conf:​ ajouter un context ''​[mysuscribes]''​ avec des lignes du type: ''​exten => 10,​hint,​MWI:​10@default'' ​
 +(''​default''​ étant le context de la boîte vocale du SIP 10).
  
 ===== Liens ===== ===== Liens =====
-   * [[http://​www.asterisk.org/​|Asterisk]] +   * [[https://​www.asterisk.org/​|Asterisk]] 
-   * [[http://​www.asterisk.org/​downloads/​asterisknow|AsteriskNow]]+   * [[https://​www.asterisk.org/​downloads/​asterisknow|AsteriskNow]]
    * [[https://​projects.xivo.fr/​|Xivo]]    * [[https://​projects.xivo.fr/​|Xivo]]
    * [[https://​wiki.koumbit.net/​Asterisk14SurOpenWRT|Asterisk14SurOpenWRT]]    * [[https://​wiki.koumbit.net/​Asterisk14SurOpenWRT|Asterisk14SurOpenWRT]]
    * [[http://​www.lululaberlu.com/​category/​Asterisk|TP Asterisk Base]]    * [[http://​www.lululaberlu.com/​category/​Asterisk|TP Asterisk Base]]
    * [[http://​oxydables.free.fr/​page5.html|Informations sur la VOIP et installation d'​asterisk,​ avec le sip de free]]    * [[http://​oxydables.free.fr/​page5.html|Informations sur la VOIP et installation d'​asterisk,​ avec le sip de free]]
-   * [[http://​people.via.ecp.fr/​~alexis/​asterisk/​|Expérience de déploiements Asterisk dans des entreprises françaises]]+   * [[https://​people.via.ecp.fr/​~alexis/​asterisk/​|Expérience de déploiements Asterisk dans des entreprises françaises]]
    * [[http://​denisrosenkranz.com/​tuto-installer-et-configurer-asterisk-sous-debian-6-et-ubuntu/​|Tutoriel sur lequel est basé cette documentation]]    * [[http://​denisrosenkranz.com/​tuto-installer-et-configurer-asterisk-sous-debian-6-et-ubuntu/​|Tutoriel sur lequel est basé cette documentation]]
  
  • asterisk.1615136125.txt.gz
  • Dernière modification: Le 07/03/2021, 17:55
  • par 109.190.93.124