La VoIP de base sur Asterisk

Bonjour à tous,

j’vais faire une petite contribution aux divers tutos que l’on peut trouver ici :slightly_smiling:
vu que je viens d’installer un serveur asterisk sur ma machine, je me suis dis que ca pourrait vous aider et/ou me faire voir des erreurs dans ma manière de procéder/configurer.

je suis sous debian etch sur un Dell dimension 3100, j’utilise une carte Digium TDM400P avec 1 module FXO + 1 module FXS (je reviendrai + bas sur ce que sont ces 2 termes barbare) et je dispose d’une ligne analogique classique de FT.

avant tout, il faut installer la carte physiquement :
il suffit de plugger la carte dans un port PCI de libre…

ensuite, il faut installer les pilotes de la carte. elle est gérée par le pilote Zaptel.

il doit vous proposer des dépendences qu’il faut bien entendu accepter :wink:
donc la, on a les outils zaptel, le code source des pilotes et nos chers linux-headers.

pour compiler le pilote de la carte :

module-assistant se lance et prépare un paquet qu’il installe tout seul par la suite.

afin de vérifier que tout est ok, faire un :

[quote]# ztcfg -vv

Zaptel Configuration

Channel map:

Channel 03: FXO Kewlstart (Default) (Slaves: 03)
Channel 04: FXS Kewlstart (Default) (Slaves: 04)

2 channels configured.
[/quote]

dans mon cas, je vois bien les 2 modules dont j’ai parlé + haut.
il s’agit en fait du type de signal qui transite sur les modules. en gros, FT nous envois du FXS depuis leur central, et nos téléphone standard écoute en FXO (ce sont donc un peu comme des prises males et femelles).
pour résumer, un module FXS vous sera utile uniquement si vous souhaitez connecter un téléphone analogique directement sur votre serveur (auquel cas, il vous faudra brancher une alimentation supplémentaire sur le module FXS de votre carte PCI).

si vous êtes arrivé jusque la, votre matériel est installer et on peut entrer dans le vif du sujet.

il y a d’autres paquets asterisk permettant une multitude de fonctionnalité tel : envois de fax, voicemail, répondeur, … mais pour le moment, utilisons deja les éléments de base :wink:

une fois que apt-get a fais son travail, testons que le serveur est correctement installé :

la, vous devez avoir tout un tas de ligne qui défile sur votre écran et obtenir une invite du style :

[quote]Asterisk Ready.
*CLI>[/quote]

pour sortir et arreter le serveur, il y a plusieurs méthode :
ctrl+c (un peu brutal pour un service ^^)
stop gracefully (arrete le serveur des qu’il n’est plus utilisé)
stop now (arrete le serveur immédiatement)

votre serveur fonctionne, il n’y a plus qu’à le configurer…

personnelement, je suis en période de test et je découvre les fonctions d’asterisk un peu + chaque jour. j’utilise Twinkle pour téléphoner avec casque + micro (apt-get install twinkle), j’ai à ma disposition un hardphone (Grandstream Budgetone 100. je n’utilise pas le module FXS pour le moment car je n’ai pas assez de cable d’alimentation dans ma tour (merci Dell…).

dans /etc/asterisk/ se trouvent tous les fichiers de configuration du serveur, il y en a un paquet…

je n’en ai configuré que 3 :
zapata.conf (indique à asterisk comment utiliser les modules de la carte)
sip.conf (indique les droits et la configuration de chaque téléphone IP)
extensions.conf (indique les actions qu’asterisk doit suivre lorsqu’il recoit une demande)

dans chaque fichier, il y a énormément d’exemples pour l’aide à la configuration. il vaut mieux les sauvegarder avant de faire quoique ce soit :

[quote]# cp /etc/asterisk/zapata.conf /etc/asterisk/zapata.conf.OLD

cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.OLD

cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.OLD[/quote]

voici mes 3 fichiers une fois configuré :

[quote]; fichier de configuration zapata.conf
;

[trunkgroups]
; ca sert a rien… ?

[channels]
language=fr ; definition de la langue par defaut
switchtype=national ; pour la ligne analogique
rxwink=300 ; Atlas seems to use long (250ms) winks
usecallerid=yes ; utilisation de l’ID de l’appelant
hidecallerid=no ; ne pas cache l’ID de l’appelant
callwaiting=no ; “no” dans la config de guillaume
usecallingpres=yes ; presentation du numero active
callwaitingcallerid=yes ; la communication attend l’ID de l’appelant
threewaycalling=yes ; conference à 3
transfer=yes ; transfert autorise
canpark=yes ; ???
cancallforward=yes ; faire suivre l’appel est autorise
callreturn=yes ; retour d’appel active
echocancel=yes ; attenuation de l’echo active
echocancelwhenbridged=yes ; attenuation de l’echo en mode bridge active
;rxgain=0.0 ; gain de reception, defaut : non commente
;txgain=0.0 ; gain d’emmision, defaut : non commente
immediate=no ; ???
busydetect=yes ; defaut : commente
busycount=4 ; defaut : commente

; definition des channels

; configuration de la ligne du telephone analogique
;signalling = fxo_ks
;callerid = “asterisk fxs”
;context = from-sip
;channel => 3

; configuration de la ligne telephonique FT
signalling = fxs_ks
callerid = asreceived
context = FXO
channel => 4[/quote]

comme vous le constatez, je n’ai pas encore tout saisi dans le fonctionnement, mais tout est commenté pour plus tard, pouvoir y répondre.
notez tout de meme le context=FXO. ce context est définit dans le fichier extension.conf :

[quote]; fichier extension.conf pour asterisk
;

[general]
static=yes ; interidiction de modifier ce fichier
writeprotect=yes ; interet a trouver, proteger en ecriture
autofallthrough=yes ; si =no , probleme lorsque pas d’action correspondante
clearglobalvars=no ; les variables seront conservees

[globals]
CONSOLE=Console/dsp ; Console interface for demo
;CONSOLE=Zap/1
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)

[from-sip]
exten => 520,1,Dial(SIP/520,15,tr) ; hardphone IP
exten => _0.,1,Dial(Zap/4/${EXTEN},45,tr) ; n° commancant par 0
exten => 521,1,Dial(SIP/521,15,tr) ; softphone IP

[FXO]
; exten => s,1,Goto(context,extension,priorite)
exten => s,1,Goto(from-sip,521,1)[/quote]

le context from-sip défini les n° des téléphone se trouvant sur mon réseau local que j’ai configuré. en francais, ca donne en gros :

[dans le context from-sip]

  • si tu recois une demande pour le n° 520 alors ouvre une communication utilisant le protocole SIP vers le poste nommé 520
  • si tu recois une demande pour un n° commencant par 0 alors ouvre une communication utilisant le pilote zaptel vers le n° $EXTEN (le n° complet).
  • si tu recois une demande pour le n° 521 alors ouvre une communication utilisant le protocole SIP vers le poste nommé 521

[dans le context FXO]

  • à la réception d’un signal, transférer l’appel vers le n°521

pour le fichier sip.conf, voici ce que j’ai configuré :

[quote]; fichier de configuration des sip phones
;

[general]
context=from-sip ; context defini pour signalling = fxo_ks
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; Note: Asterisk only uses the first host
; in SRV records
; Disabling DNS SRV lookups disables the
; ability to place SIP calls based on domain
; names to some other SIP users on the Internet
language=fr ; Default language setting for all users/peers
; This may also be set for individual users/peers
localnet=192.168.1.0/255.255.255.0 ; All RFC 1918 addresses are local networks
nat=no ; Global NAT settings (Affects all peers and users)
; yes = Always ignore info and assume NAT
; no = Use NAT mode only according to RFC3581
; never = Never attempt NAT mode or RFC3581 support
; route = Assume NAT, don’t send rport
; (work around more UNIDEN bugs)
hidecallerid=no ; autorise l’affichage du n° de l’appalant

; ********************************************************************
; ********************************************************************

[520]
type=friend ; droit d’emettre et de recevoir
context=from-sip ; nom du context
secret=test ; mot de passe
username=520 ; utilisateur asterisk
callerid=“hardphone” <520> ; ID du telephone
host=dynamic ; type d’attribution d’IP
canreinvite=yes ; a preciser…
dtmfmode=rfc2833 ; a preciser…
restrictid=yes ; a preciser…
incomminglimit=5 ; 5 appels recu simultanement maxi
disallow=all ; a preciser…
allow=alaw ; protocole retenu = alaw

; *********************************************************************
; *********************************************************************

[521]
type=friend ; droit d’emettre et de recevoir
context=from-sip ; nom du context
secret=test ; mot de passe
username=521 ; utilisateur asterisk
callerid=“softphone” ; ID du telephone
host=dynamic ; type d’attribution d’IP
canreinvite=yes ; a preciser…
dtmfmode=rfc2833 ; a preciser…
restrictid=yes ; a preciser…
incomminglimit=5 ; 5 appels recu simultanement maxi
disallow=all ; a preciser…
allow=alaw ; protocole retenu = alaw[/quote]

et voila !!!

avec cette configuration les communications fonctionnent et la qualité sonore est correcte.
il vous reste tout de meme la configuration des téléphones à faire, mais c’est de loin le moins difficile. dans ce cas, votre serveur asterisk sert a la fois de “registar”, de “SIP proxy” et de “outbound server”

si vous avez des questions, je ferais de mon mieux pour y répondre, si vous avez de meilleures solutions / configurations, je suis preneur :wink:

mes sources d’aides sont bien entendu le net, mais je n’ais rien trouvé en francais.

pour plus d’infos (en anglais), voir :
voip-info.org
asteriskguru.com

merci pour ce tuto. :wink:

p@t

C’est l’occasion de le mettre sur le wiki

Merci pour le tuto ,y’a t’il une possibilité de poser des questions sur Asterisk?

Je veux pas te décourager, mais le tuto date de 2006.
Si quelqu’un s’y connait il peut t’aider, mais lui ne risque pas ( son dernier post semble être celui-ci ).

tu as aussi le forum asterisk… :

asterisk-france.net/community/index.php