Démarrer avec My SIP Switch

Pour les utilisateurs francophones de SIP Sorcery, c'est ici
Post Reply
gbonnet
Site Admin
Posts: 680
Joined: Wed Jul 11, 2007 2:58 pm
Location: Bologna
Contact:

Démarrer avec My SIP Switch

Post by gbonnet » Wed Nov 07, 2007 3:48 pm

Bonjour,
Quelques informations pour démarrer.

Dernière mise à jour de cette page : Mars 2009


Quels sont les intérets d'utiliser My SIP Switch ?
Tout d'abord, cela permet d'utiliser plusieurs comptes SIP sur un seul téléphone : recevoir tous ses appels de plusieurs comptes SIP sur un seul téléphone (cela évite le très lourd et cher inconvénient d'avoir un téléphone configuré pour chaque compte SIP), passer des appels via le fournisseur le moins cher suivant la destination et donc faire des économies.
Cela permet également d'aller plus loin dans la compréhension de la VoIP.
C'est un projet 100% gratuit et open source (les sources sont téléchargeables sur : My SIP Switch sur Codeplex)


PREMIERE ETAPE créer son compte et configurer son téléphone

La première étape est de créer un compte puis de paramètrer son ATA ou téléphone IP avec les identifiants My SIP Switch (login, mot de passe et serveur SIP : sip.mysipswitch.com)

Pour testez que votre téléphone ou ATA est bien enregistré, connecté vous au site et allez sur la page 'Monitoring'. Il y a une barre grise appelée Status, et en vert devrait être écrit quelque chose d'autre que 'Not logged in', par exemple: sip:SIPSWITCHUSER@myIPAddress:MyPortNumber (plus un peu d'autre info)

DEUXIEME ETAPE : passer un appel

Maintenant, que votre téléphone est configuré avec My SIP Switch, nous allons essayer de passer un appel de la manière la plus simple possible. Une fois que vous saurez comment faire pour passer un appel, vous pourrez prendre plus de temps pour explorer les possibilités du logiciel et mettre en place un dial plan plus intéressant et plus utile.

1. Ajouter un provider SIP avec ses identifiants

On va commencer avec 1 seul provider pour l'instant pour tester que les émissions et réception d'appels fonctionnent, si vous voulez en ajouter d'autres, il suffira de répéter l'opération.

Pour ajouter votre 'Provider', cliquez sur "Add New" (au dessus du champ texte qui contient le dial plan):

- Name : C'est à vous de le définir! Cela va être la chaine de caractère que vous utiliserez plus tard dans les lignes du dial plan. Pour faire simple, mettez le nom de votre fournisseur de service ou votre login ... Pour l'exemple, on va l'appeler "Blueface".
- Username / Password, entrez vos identifiants pour ce comptes (notez que notre site et nos serveurs sont sécurisés et vous ne courrez aucun risque)
- server : serveur SIP de votre fournisseur (doit être le nom ou une adresse IP : sip.blueface.ie ou 213.200.94.182 par exemple)

Ensuite, il y a 3 champs optionnels (ils servent le plus souvent à optimiser le service et ne sont pas nécessaires dans tous les cas les plus simples):
- Outbound proxy : si votre fournisseur impose un serveur proxy spécifique pour les appels sortants
- From Header : cela vous permettra de faire passer votre CID (caller ID), c'est un peu plus un souci d'optimisation donc dans un premier temps laisser vide sauf si vous connaissez bien le domaine. Notez que cela doit être conforme au header SIP : <sip:12345@provider.com>
- custome header : cela vous permet de modifier un des paramètres header SIP (éviter de jouer avec ceux importants du genre VIA, TO, CSEQ ... sinon cela ne fonctionnera pas ...) Pour les utilisateurs Betamax, vous aurez sûrement envi de toucher au P-src-ip header (plus d'info sur Betamax P-src-ip header)

Un fois que vous avez rempli ces champs, cliquez sur 'Update'.

2. Créer son "Dial Plan", Tout repose là dessus.

Notez qu'il y a 2 syntaxes différentes pour le dial plan. Celle décrit plus bas est la syntaxe prise sur la syntaxe d'Asterisk; la nouvelle est en Ruby et implique donc de la programmation.

Le dial plan de base en Ruby est :

Code: Select all

 #Ruby
sys.Log(”call from #{req.Header.From.FromURI.ToString()} to #{req.URI.User}.”)
if sys.In then
# Inbound rules here
else
sys.Dial("Blueface")
end 
Essayez notre wizard : http://www.mysipswitch.com/rubyzard.aspx

Si vous souhaitez plus d'info sur le dial plan en Ruby, il va falloir aller vers les pages anglophones. Je n'ai pas encore traduit:
https://www.mysipswitch.com/help.aspx (vous devez vous connecter)
Ruby Dial Plans : gestion des appels entrants sur notre blog.
Ruby Dial plans sur la partie anglophone du forum.



Dans la case prévue pour le dial plan, entrez tel quel (vous pouvez effacer ce que nous avons par défaut ou alors rendre les lignes inactives en plaçant un point-virgule devant):
exten => _X.,1,Switch(Blueface)

"Blueface" étant le nom que l'on a entré à l'étape d'avant.
_X. veut dire que peu importe le numéro que vous entrerez, l'appel passera par ce provider. (J'expliquerai plus loin comment faire pour utiliser plusieurs providers facilement)

Appuyez sur 'update' et essayez de passer un appel vers une ligne fixe ou un numéro VoIP qui fonctionne habituellement.

L'appel va être passer via le provider que vous avez spécifié.

Si cela ne fonctionne pas, regardez la page 'Monitoring', cela devrait vous donner des infos supplémentaires.
Si vous n'arrivez pas à passer d'appels, vous pouvez essayer la ligne suivante:
exten => _X.,1,Switch(Blueface,True)
Un e-mail vous sera envoyé avec les informations sur l'appel, poster le contenu de cet e-mail sur notre forum (prenez soin de masquez les numéros!). Cela permettra aux admins et aux autres utilisateurs de voir où est le problème.

PS: avant février 2008, la syntaxe était :
exten => _X.,1,Switch(login,mot_de_pass,${EXTEN}@providerproxy.com)
C'est à dire que toutes les infos qui étaient dans "provider" devaient figurer sur chaque ligne l'utilisant.


TROISIEME ETAPE: recevoir un appel


Si vous utilisez Ruby, vous pouvez faire énormément de choses pour gérer vos appels entrants, regardez notre article sur le blog :
Ruby Dial Plans : gestion des appels entrants.

Sinon il y a plusieurs possibilités:
- Recevoir les appels (de tous vos comptes SIP) sur le téléphone ou vous avez enregistrer My SIP Switch
- Recevoir les appels (de tous vos comptes SIP) vers un autre numéro, par exemple, votre ligne fixe, votre portable, un autre numéro VoIP ...


La première chose à faire pour les 2 possibilités est de faire en sorte que My SIP Switch s'enregistre auprès de votre fournisseurs.

En bas de la page de configuration, il y a une partie appelée : 'Registrations'. Cliquez sur "Add New".

Entrez les champs suivant:

Username: C'est le nom d'utilisateur que vous utilisez habituellement avec votre provider.
Password: Le mot de passe qui lui est associé.
Server: ProviderServer.com or ProviderServer.com:5060 (Utiliser le même numéro de port que d'habitude, si vous n'êtes pas sûr, ne mettez pas de numéro de port)
Domain/Realm [optional] : si votre fournisseur vous demande de mettre un nom de domaine allez-y, sinon laissez blanc
Expiry Seconds (60 to 3600) : 3600 (ne changez ça que si vous savez ce que vous faites ;) )
Contact: SipSwitchUsername@213.200.94.182

Cette dernière ligne est importante! Mettez bien votre nom d'utilisateur My SIP Switch suivi de 213.200.94.182 qui est l'adresse IP du serveur de My SIP Switch.

Cliquez sur "Add" pour sauvegarder vos paramètres.

Après avoir ajouter la SIP Registration, allez sur la page 'monitoring' pour vérifiez que vous s'est bien passé. Elle apparaîtra en haut avec une petite bille verte (ou rouge si cela c'est mal passé).

Avec un autre téléphone vous pouvez faire le test suivant :
téléphoner au numéro du compte SIP que vous venez d'enregistrer avec My SIP Switch. Le téléphone que vous avez configurer avec My SIP Switch devrait sonner.

Répétez cette opération pour chacun de vos comptes SIP.

Si vous souhaitez recevoir vos appels sur le téléphone que vous avez configuré avec My SIP Switch vous avez terminé de mettre en place les bases. Maintenant, vous pouvez allez plus loin : mettre en place un dial plan qui prend en compte vos différents fournisseurs de service SIP ...

Pour recevoir des appels vers un autre téléphone, vous devez continuer (laissez en place les 'Registrations' !)
Vous devez ajouter une nouvelle ligne à votre dial plan (ajouter-la en dessous des autres), n'oubliez pas d'appuyer sur 'Update':

exten => user,1,Switch(0033122339988@Blueface)

'user' doit être votre nom d'utilisateur My SIP Switch.
entrez le numéro de téléphone que vous souhaitez puis '@' et le nom du de votre provider tel que défini à la 1ère étape.

Attention au format, entrez le tel que vous l'auriez tapé avec ce provider. Par exemple, Blueface est un fournisseur Irlandais donc si le numéro est hors d'Irlande, il faut ajouter le préfixe international. Si j'avais voulu diriger mon appel vers un numéro de Dublin, j'aurai mis par exemple:
exten => user,1,Switch(012233348@Blueface)

Vous pouvez facilement mettre en place une redirection en cas de non réponse (échec de l'appel, si vous êtes déjà en ligne ...)

exten => user,1,Switch(user@local&003312459988@Blueface&0033608787645@Blueface)

Cette ligne veut dire :
Si je reçoit un appel (peut importe le compte SIP de destination!) My SIP Switch essayera de faire sonner le téléphoner configuré avec My SIP Switch (user@local), si celui ci n'est pas disponible alors, le numéro de fixe 003312459988 sonnera (l'appel sera facturé via le fournisseur que vous spécifierez), si celui ci non plus n'est pas disponible, alors l'appel sera redirigé vers le numéro 0033608787645 ...


Rendu là, vous avez été capable de vous enregistrer au service, de passer et recevoir des appels. Rien de vraiment magique ... Maintenant, allez plus loin et découvrez les possibilités offertes par My SIP Switch.
N'hésitez pas à faire des tests et à poster sur le forum pour nous faire par de vos impressions et expériences. Le projet est encore jeune et vos commentaires sont toujours les bienvenus pour que l'on améliore les fonctionnalités.


QUATRIEME ETAPE : allez plus loin

a) Pour utiliser plusieurs providers avec votre compte :

Exemple de dial plan:
exten => _06X.,1,Switch(provider1)
exten => _0ZX.,1,Switch(provider2)
exten => _*1X.,1,Switch(${dst:2}@provider3)
exten => _0039X.,1,Switch(provider1&0${dst:4}@provider4)
exten => _X.,1,Switch(provider5)
exten => user,1,Switch(user@local&0039123456789@provider1)

Je vais donner une explication ligne par ligne. Notez d'abord, que My SIP Switch prend les lignes les unes après les autres donc il faut faire attention à l'ordre des lignes.
Note préalable : X remplace n'importe quel chiffre, Z un chiffre de 1 à 9, N un chiffre de 2 à 9.

- Ligne 1 : exten => _06X.,1,Switch(provider1)
Si je tape un numéro qui commence par 06, typiquement, un téléphone portable en France, l'appel passera par le provider1

- Ligne 2 : exten => _0ZX.,1,Switch(provider2)
Si je tape un numéro commençant par un 0 puis par un chiffre entre 1 et 9 (compris) donc par exemple: 01, 02, 03, 04, 05, 06, 07, 08, 09 alors l'appel passera par là.
Notez que si un numéro commence par 06 il ne passera pas par là car My SIP Switch aura passer l'appel avec la ligne du dessus. Si jamais l'ordre de ses 2 lignes avait été inversé, la ligne pour les 06 n'aurait jamais été interprétées.

- Ligne 3 : _*1X.,1,Switch(${dst:2}@provider3)
Si pour une raison spéciale, je veux utiliser le provider3, alors, il faudra que je tape *1 avant d'entrer le numéro que je veux joindre. Pour que le *1 ne soit pas pris en compte dans la numérotation, je dois l'enlever, d'où le : ${dst:2}@provider3
dst:2 veut dire destination moins les 2 premiers caractères.
Notez que DST ou EXTEN sont interchangeables. C'est pareil pour nous.

- Ligne 4 : exten => _0039X.,1,Switch(provider1&0${dst:4}@provider4)
Si j'appelle vers l'Italie, par défaut, cela passera avec le provider1 et le numéro sera au format international. Si pour une raison ou pour une autre , mon compte chez le provider1 n'est pas accessible (plus de crédit, down time du provider, ...) alors grâce au '&0${dst:4}@provider4' My SIP Switch cherchera de passer l'appel avec le provider4. Notez que le provider4 est italien et donc je lui envoi le numéro directement au format national Italien : de 003912345678, j'enlève les 4 premiers chiffres et je rajoute un 0 donc 012345678

- Ligne 5 : exten => _X.,1,Switch(provider5)
C'est la ligne par défaut dans mon dial plan, _X. remplace n'importe quoi donc si My SIP Switch n'a reconnu aucun des préfixes spécifiés sur les lignes au dessus, alors il passera l'appel via cette ligne, donc avec le provider5.

- Ligne 6 : exten => user,1,Switch(user@local&0039123456789@provider1)
C'est la ligne pour mes appels entrants, d'abord, je souhaite recevoir mes appels sur mon téléphone My SIP Switch, et si cela ne fonctionne pas (si je suis déjà en ligne ou si j'ai une coupure d'internet par exemple) alors l'appel passera sur ma ligne fixe.


Ancienne syntaxe:
exten => _*1X.,1,Switch(user,pass,${EXTEN:2}@providerproxy1.com)
exten => _*2X.,1,Switch(user,pass,${EXTEN:2}@providerproxy2.com)


Détails des expressions:

exten est le mot clé qui définit une nouvelle ligne dans le dial plan
Numéros et schémas:

Code: Select all

Les schémas (ce n'est peut être pas le meilleur mot pour décrire ça en français ...) compatibles avec Asterisk doivent commencer par un underscore:  _ 
-X correspond à n'importe quel chiffre de 0 à 9 
-Z correspond à n'importe quel chiffre de 1 à 9 
-N correspond à n'importe quel chiffre de 2 à 9 
-[ ] correspond à n'importe quel chiffre entre les crochets
eg 
  [25] correspondra à 2 ou 5, mais pas à 0,1,3,4 etc. 
  [2-5] correspondra à 2, 3, 4, 5, mais pas à 0,1,6,7 etc. 
  [02-5] correspondra à 0,2,3,4,5 mais pas à 1,6,7 etc. 
- . wildcard (point), correspond à un chiffre ou plus

Quelques exemples
_9XXXXXXX peut correspondre à 98175555 etc
_9817XXXX  peut correspondre à 98175555 mais pas à 92595555 etc
_13ZXX.  peut correspondre à 131241 mais pas à 1300 123 456 (à cause du Z qui ne prend pas le 0)

Priorité: (_*1X.,1,Switch) Elles ne sont pas encore gérées donc 1 doit être laissé par défaut. Nous ferons un amélioration bientôt pour prendre ça en compte.
Variables de remplacement: (${EXTEN} or ${dst}) C'est la même chose. Ils sont interchangeables. Ils permettent de définir quel numéro sera envoyé au provider. Cela sert notamment à enlever (ou rajouter) les préfixes.

Code: Select all

${EXTEN:2} ou ${dst:2} veut dire que les 2 premiers caractères seront enlevés avant d'envoyer le numéro au provider.
1${EXTEN}  ou 1${dst}  veut dire que 1 sera ajouter (comme préfixe) au numéro avant d'être envoyé au provider
1${EXTEN:2} est la combinaison des 2 cas précédant. On enlève le prévixe et on en rajoute un autre à la place.

c) Option: Caller ID

Notez que cela fonctionne seulement si votre provider le permet ! Si cela ne fonctionne pas, vous devez prendre contact avec eux.

Vous pouvez réglez votre caller id en utilisant le champs : From Header lorsque vous enregistrez votre provider.

Ancienne syntaxe:
Avec le nom:
exten => _X.,1,Switch(user,pass,${EXTEN}@sip.blueface.ie, "Michel Dupont" <sip:12345@sip.blueface.ie>)
-le Caller ID envoyé sera : Michel Dupont 12345

Sans le nom:
exten => _X.,1,Switch(user,pass,${EXTEN}@sip.blueface.ie, <sip:12345@sip.blueface.ie>)
-le Caller ID envoyé sera : 12345

Discussion lié à cette option (en anglais): http://www.mysipswitch.com/forum/viewtopic.php?t=122

Un Problème ?

Pas de son ?

Si la signalisation passe, c'est à dire que vous pouvez passer et recevoir des appels mais que vous n'avez pas de son du tout ou alors seulement dans un sens, il s'agit très probablement d'un problème de NAT.
Il faut ajouter un serveur STUN dans les paramètres du téléphone: http://www.voip-info.org/wiki/view/STUN ; a priori, cela fonctionne bien avec : stun.xten.com

Problème d'émission et/ou réception d'appels :

Si vous avez des soucis pour passez vos appels ou que la redirection vers votre téléphone fixe ne fonctionne pas, un moyen de trouver la cause du problèm est d'avoir une "trace" de l'appel. C'est à dire que les informations concernant l'appel vous seront envoyées par e-mail.

Pour cela, il vous faut ajuster votre dial plan ",true" par exemple:
exten => _X.,1,Switch(provider,true)


Ancienne syntaxe :
Si vous n'utilisez pas les autres options:
exten => _X.,1,SwitchCall(user,pass,${EXTEN}@sip.blueface.ie,,, True)
ou
Avec les autres options
exten => _X.,1,SwitchCall(user,pass,${EXTEN}@sip.blueface.ie,From User, OutboundProxy, True)

C'est généralement utile en cas de problème.


Voilà de quoi partir ...
N'hésitez pas à faire part de vos commentaires ou suggestions ...

Guillaume
Last edited by gbonnet on Mon Mar 09, 2009 5:43 pm, edited 5 times in total.
Blueface [url=http://www.blueface.ie/]Phone[/url] Service

gbonnet
Site Admin
Posts: 680
Joined: Wed Jul 11, 2007 2:58 pm
Location: Bologna
Contact:

Post by gbonnet » Thu Feb 14, 2008 4:21 pm

Pour info,

J'ai complètement refait le texte ci dessus parce que la dernière mise à jour du SIP Switch a été importante et offre beaucoup de nouvelles possibilités.

Je trouve que cela simplifie les choses aussi.

Si vous avez des commentaires, n'hésitez pas !
Blueface [url=http://www.blueface.ie/]Phone[/url] Service

Post Reply