Free suicide Freephonie : sauvons-nous avec Asterisk
Free a décidé de bloquer les appels à l'étranger depuis leur service de SIP, tout ça parce que leur interface d'édition de compte est moisie, pas secure et qu'ils sont incapables de détecter et bloquer les abus... Facile quoi. Heureusement nous allons pouvoir passer outre, en rusant. Pour cela il nous faut Asterisk, autrement dit un PABX en logiciel libre. Bon un PABX on s'en fout de savoir ce que ça veux dire, mais ce qui est important c'est que ça fait de la téléphonie, et donc le café.
Ce que j'ai fait est plutôt simple, ça consiste simplement à avoir asterisk qui s'occupe de faire le pont entre vos clients SIP et vos comptes SIP. Ici on a un compte freephonie sur lequel on va recevoir les appels et aussi émettre les appels vers un numéro en france (numéro à 10 chiffres). On a aussi un compte VoIPBuster (payant évidemment, mais pas très cher heureusement), qui va permettre d'appeller l'international et aussi la france quand freephonie déconne (en réalité tout le temps).
Alors le truc simple : apt-get install asterisk. Voilà, facile, no problemo. Maintenant il faut modifier le fichier sip.conf :
[general] defaultexpirey=1800 dtmfmode=auto qualify=yes ; Vos comptes SIP où s'enregistrer register => 09XXXX:secret@freephonie.net register => blabla:secret@sip.voipbuster.com ; Compte VoIPBuster [voipbuster] type=peer host=voipbuster.com username=blabla fromuser=blabla secret=secret nat=yes allow=all ; Appels sortants sur Freephonie [freephonie-out] type=peer host=freephonie.net username=09XXX fromuser=09XXX secret=secret nat=yes fromdomain=freephonie.net allow=all ; Et pour les appels entrants freephonie [freephonie-in] type=peer context=fromfree host=freephonie.net allow=all ; Client SIP N°1 : mon téléphone SIEMENS C450IP [phone] type=friend username=phone secret=abcd host=dynamic context=maison nat=yes ; Ces trois lignes suivantes sont spécifiques à mon téléphone pour qu'il fonctionne bien, vous pouvez les enlever pour un client SIP classique dtmfmode=inband allow=ulaw,alaw canreinvite=no
Notez que vous pouvez rajouter autant de sections de type=friend que vous voulez pour avoir autant de clients SIP que vous désirez.
Maintenant configurons extensions.conf qui indique le plan de numérotation :
; Mon contexte c'est "maison", on peux avoir plusieurs contextes selon les clients si ça nous amuse [maison] ; On compose un numéro à 10 chiffres commençant par zéro puis un chiffre qui n'est pas zéro (exemple 0154545689) ; Alors on essaye de le composer avec Freephonie, mais si ça marche pas on utilisera VoIPBuster exten => _0ZXXXXXXXX,1,Dial(SIP/freephonie-out/${EXTEN}) exten => _0ZXXXXXXXX,2,Dial(SIP/voipbuster/0033${EXTEN:1}) ; Règle spécifique à la belgique qui permet de composer un numéro belge sans le préfixe 0032 : ; si on tape un numéro comportant au moins 5 chiffres (les numéros ici sont plutôt variables en longueur), ; qui commence par zéro puis un chiffre qui n'est pas zéro (Z), alors on rajoute automatiquement le préfixe 0032 exten => _0ZXX.,1,Dial(SIP/voipbuster/0032${EXTEN:1}) ; Autres numéros internationaux commençant par 00 (par ex. 0033 pour la france) : on passe par voipbuster directement exten => _00ZXXX.,1,Dial(SIP/voipbuster/${EXTEN}) ; Si le numéro n'est ni un numéro français ni un numéro belge ni un numéro international on raccroche ; (ou si freephonie et voipbuster sont down) exten => _0Z.,3,Congestion ; Indique que faire avec les appels entrants sur freephonie [fromfree] ; ici on fait sonner juste le téléphone (on pourrait faire sonner plusieurs clients SIP en mm temps ou à la suite, ou rediriger vers une boite vocale, je vous laisse mater les trucs sur le net à ce sujet) exten => s,1,Dial(SIP/phone)
Voilà, un petit coup de /etc/init.d/asterisk restart et hop. Si vous avez des problèmes, tentez le débug, stoppez asterisk, puis en root lancez "asterisk -cvvvvvvvv".
Ma2t
Ah c'est pour ça que j'arrivais plus à appeler à l'étranger avec la freephonie :)
Il rox ton blog :]
Arrangeurs
Bjr :) merci pour ce bilet fort interessant :) il y a cdpendant quelques points obscurs : "les numeros ici sont plutot variables en longueur" ...qu'entends tu par la ? bonne contuinuation :)
BohwaZ
Ici en belgique un numéro peut faire 8 ou 10 chiffres, je connaît pas les règles précises mais le nombre de chiffres semble assez variable.
mimicouic
Bonjour,
ça ne fonctionne que quand on appelle de Belgique ou ça fonctionne aussi à partir de la France?
BohwaZ
Oui ça marche de partout :)
armel
Bonjour,
Desole, je ne comprends pas tout de cette configuration. Je suis au Canada et je voudrais faire des appels internationaux a partir de la freebox de mes parents en France. Je ne veux pas passer par voipbuster. Voici mes questions:
1. Le server Asterisk est branche avec un cable ethernet sur un router qui est lie avec la freebox?
2. dans sip.conf:
; Client SIP N°1 : mon téléphone SIEMENS C450IP
[phone]
type=friend
username=phone
secret=abcd
Pourquoi il faut un username and secret, et a quoi ca correspond? Est-ce que c'est pour un telephone a l'etranger ou bien branche sur la freebox?
3. Je veux que les appels entrants continuent a sonner chez mes parents sans passer par le SIP
Comment je configure cela?
4. Mon but c'est de ne pas payer pour les appels internationaux donc avec Freebox:
; Autres numéros internationaux commençant par 00 (par ex. 0033 pour la france) : on passe par voipbuster directement
exten => _00ZXXX.,1,Dial(SIP/voipbuster/${EXTEN})
comment je configure cela? vous passez par voipbuster.