Mise à jour le 22 décembre 2005

Babytel ont recommencé à donner le mot de passe SIP, et acceptent l'utilisation de Asterisk sur les plans non-commerciaux. Toutefois, il faut contacter Babytel au préalable et il y a des frais d'activation de 40$; il faut aussi payer un supplément de 5$ par mois.

Mise à jour 2 août 2005

Veuillez noter que Babytel a maintenant comme politique de ne plus donner le mot de passe SIP, à moins d'être sur un plan commercial. C'est très dommage car c'était un bon fournisseur...

Update 17 juin 2005

J'ai essayé avec asterisk-1.0.8-0.20050529.1mdk.i586.rpm, distribué par Mandriva, et je vous le suggère pas!! Ça ne fonctionne pas.. j'ai parlé à des gars sur #asterisk sur irc.freenode.org et ils se sont branché ici et ils ont vu que y'avait un problème bizarre, probablement introduit dans 1.0.8-cvs. Donc j'ai downgradé à 1.0.7 et ça s'est remis à fonctionner. Si vous avez des questions, et que ça fouère un peu chez vous... e-mailez-moi, j'vais vous montrer ma nouvelle config. Mais pour l'instant, j'pense que ce qui a ici est un bon point de départ.

Seulement, restez avec les versions stables et officielles, pas les beta, c'est en chamboulement dans le coin du SIP sur le CVS.

Update, mai 2005

Veuillez noter qu'à partir de j'sais plus quelle date, (5 mai?! mi-mai ?), babyTel a commencé à limiter le nombre d'appels sortans. Au début ils avaient limités à UN seul appel sortant, mais après quelques appels, et une explication très logique (que l'appel conférence ne fonctionne plus si on a n'a qu'un seul appel sortant), ils ont monté la limite à deux. Mais bref, plus que deux appels vers le réseau PSTN simultanément maintenant.

Update!

babyTEL viens tout juste de changer le mode de transmission des signaux DTMF (quand on pèse sur des boutons, 0-9 # et * sur le téléphone) et il faut maintenant spécifier à Asterisk:

dtmfmode=inband

dans la définition de babyTEL dans sip.conf.

-- AlexandreBourget 2004-11-02 03:26:03

Update encore, à partir d'aujourd'hui, ce n'est plus vrai! Il faut enlever lette ligne:

dtmfmode=inband

babyTEL et Asterisk

Ici je vais décrire mon expérience avec la compagnie babyTEL et le PBX open-source GPL Asterisk. Je vais lister les configurations qui ont fonctionnée et les tweaks nécessaires.

Vous démarrez avec Asterisk, vous voulez en apprendre plus sur la configuration et l'administration de votre propre PBX ? Démarrez ici avec l'Introduction à Asterisk (un *must*).

Voici ma configuration dans sip.conf:

;
; Connexion babyTEL
;
register => 15144444444@sip.babytel.ca

[sip.babytel.ca]
context=default
type=peer                       ; we only want to call out, not be called
insecure=very
;dmtfmode=inband                 ; À partir du début novembre 2004, il faut cela :) à partir du 15 janvier 2005, il le faut plus!
secret=SECRET
username=15144444444            ; Authentication user for outbound proxies
fromuser=15144444444            ; Many SIP providers require this!
fromdomain=sip.babytel.ca       ; Nécessaire!! :)
host=sip.babytel.ca
port=5065

La partie fromuser et fromdomain est essentielle, parce que babyTEL laisse seulement passer les appels qui 'proviennent' du numéro 15144444444@sip.babytel.ca dans mon exemple.

La partie port=5065 est aussi essentielle. Notez que vous devez ajouter la ligne

216.18.125.7          sip.babytel.ca

dans votre fichier /etc/hosts, de manière à rediriger le traffic de sip.babytel.ca vers nat.babytel.ca, puisque que babyTEL requiert l'usage du proxy sortant. 216.18.125.7 est l'adresse de nat.babytel.ca .. mais à cause de p'tit prob. avec Asterisk, il faut tourner autour (voir http://www.sherman.ca/archives/2004/08/19/babytel-and-asterisk/ ) pour d'autres détails. (TODO: clarifier tout ça)

Problème linphone/alsa

Linphone étant installé sur la même machine, je ne pouvais pas me faire entendre par d'autres clients SIP.. j'ai découvert que c'était parce que le module chan_alsa était loadé dans Asterisk, et probablement qu'il utilisait la ressource d'enregistrement (le micro) et donc les autres applications (linphone) ne pouvaient enregistrer en même temps.

Apres avoir ajouté: noload => chan_alsa.so dans /etc/asterisk/modules.conf .. linphone s'est mis à bien fonctionner.

Firewall

Il m'a fallu vérifier aussi que le firewall laissait passer les ports configurés dans /etc/asterisk/rtp.conf ce sont les ports utilisés pour les communications audio. J'ai édité /etc/sysconfig/iptables pour ajouter:

# Port pour le protocol SIP entrant.. pour recevoir des appels de l'extérieur ?
-A PRTS_IN -p udp --dport 5060 -j ACCEPT
# Ports pour le service RTP (Mandrake avait mis par défaut 10000-20000, mais je trouvais
# que c'était assez 2000 ports :) pas besoin de 10000 !
-A PRTS_IN -p udp --dport 18000:20000 -j ACCEPT

S'arranger pour recevoir les appels

D'abord il a fallu ajouter un SIP phone dans /etc/asterisk/sip.conf, comme suit:

[x20]
; Linphone sous Linux
type=friend
context=insidephone
callerid="Alexandre Bourget" <20>
secret=motdepasse
mailbox=20
port=5061       # Ici seulement parce que j'ai Asterisk sur la même machine qui prends le port 5060, sinon on le met pas
host=dynamic

Et dans /etc/asterisk/extensions.conf:

[general]
static=yes
writeprotect=yes



[globals]
RELAIS=SIP/sip.babytel.ca



[relaislocal]
;
; Appel local à 10 chiffres
;
exten => _9NXXXXXX,1,Answer
exten => _9NXXXXXX,2,Dial(${RELAIS}/${EXTEN:1},999,gH)
exten => _9NXXXXXX,3,Goto(${CONTEXT},s,2)
exten => _9ZXXNXXXXXX,1,Answer
exten => _9ZXXNXXXXXX,2,Dial(${RELAIS}/${EXTEN:1},999,gH)
exten => _9ZXXNXXXXXX,3,Goto(${CONTEXT},s,2)
exten => _91ZXXNXXXXXX,1,Answer
exten => _91ZXXNXXXXXX,2,Dial(${RELAIS}/${EXTEN:1},999,gH)
exten => _91ZXXNXXXXXX,3,Goto(${CONTEXT},s,2)

; Pour les appels venant de la maison, on peut sortir avec le 9
[insidephone]

include => relaislocal
include => menuprincipal

; Pour les appels externes.. on va seulement vers le menu simple pour
; appeler le gens à l'interne.
[outsidephone]

include => menuprincipal

[menuprincipal]
exten => asterisk,1,Goto(s,1);
exten => s,1,Answer
exten => s,2,Background(wacky-accueil)
exten => s,4,Wait(2)
exten => s,5,Goto(1)
exten => s,6,Hangup

; Le 1 est par défaut..
exten => 0,1,Dial(SIP/x20&SIP/x22&${RELAIS}/4501234567)
exten => 0,2,Goto(status-${DIALSTATUS},1)

; Toute les extensions 20 à 29
exten => _2X,1,Dial(SIP/x${EXTEN})
exten => _2X,2,SetVar(OLDEXT=${EXTEN})
exten => _2X,3,Goto(status-${DIALSTATUS},1)

; Relais téléphone maison spécial.
exten => 4,1,Dial(${RELAIS}/4501234567)
exten => 4,2,Goto(status-${DIALSTATUS},1)

exten => status-CHANUNAVAIL,1,Goto(status-NOANSWER,1)
; si c'est unavailable, c'Est le UNAVABLABLE message :)
exten => status-NOANSWER,1,Voicemail(su${OLDEXT})
exten => status-NOANSWER,2,Goto(s,2)
; si c'est BUSY, on play le BUSY message
exten => status-BUSY,1,Voicemail(sb${OLDEXT})
exten => status-BUSY,2,Goto(s,2)
exten => status-CANCEL,1,Goto(s,2)
exten => _status-.,1,Goto(s,2)

;exten => 5,1,Record(wacky-accueil:wav)
;exten => 5,2,Hangup

exten => 7,1,VoiceMail()
exten => 7,2,Goto(s,2)

exten => 8,1,VoicemailMain()
exten => 8,2,Goto(s,2)

exten => #,1,Hangup

; timeout
exten => t,1,Congestion


Alors voilà.. que mon téléphone x20 (à l'extension 20) démarre dans le contexte 'insidephone' ce qui lui permet de faire des appels externes (en faisant le 9 suivi des chiffres du numéro de téléphone).

;
; Connexion babyTEL
;
register => 15144444444@sip.babytel.ca

[sip.babytel.ca]
context=outsidephone            ; si kkun appelle de là.. on le ship à outsidephone
type=peer                       ; we only want to call out, not be called
insecure=very
secret=SECRET
username=15144444444            ; Authentication user for outbound proxies
fromuser=15144444444            ; Many SIP providers require this!
fromdomain=sip.babytel.ca       ; Nécessaire!! :)
host=sip.babytel.ca
port=5065

Ici.. le contexte par défaut est 'outsidephone', donc si quelqu'un appelle de babyTel (du monde extérieur, PSTN qu'on dit ?!), il tombe dans la section 'outsidephone' de /etc/asterisk/extensions.conf.

N'oubliez pas le tweak de /etc/hosts cité plus haut.

Voilà.. pour l'instant. N'hésitez pas à m'envoyer des questions.. j'vais updater ce Wiki avec les infos que j'ai pour vous rendre service.. et tout le monde en profitera :)

babyTEL and Asterisk (last edited 2005-12-22 22:49:34 by modemcable228)