PDA

Voir la version complète : Multi trunk sur même fournisseur SIP



dbeiner
17/12/2013, 11h38
Bonjour à tous,

Ceci est mon premier post sur ce forum, j'espère que je ne me suis pas trompé de porte !

Je me permets de venir vous voir car cela fait maintenant plusieurs semaines que je recherche une solution à mon "problème" mais sans succès.

Voici à quoi je suis confronté :
Sur mon Asterisk 1.8 de mon NAS Synology j'ai enregistré 3 trunks chez le même fournisseur (NetVoIP.ch), chacun avec un numéro différent.

Cependant et comme j'ai pu le lire à plusieurs reprises, Asterisk ne peut pas différencier les numéros enregistrés car ils sont liés à la même IP (la mienne) et il prend donc le dernier enregistrement du fichier sip.conf

Ce que j'aimerais faire :

Enregistrer chaque trunk indépendamment de mon IP
Router chaque numéro sur une extension locale différente


Si vous avez besoin de plus d'infos je suis là !

D'avance merci pour votre aide. :)

_AK_
17/12/2013, 13h16
Bonjour,

Pourquoi ne pas avoir un seul trunk qui réceptionnerai les 3 numéros?
le 'routage' vers les postes en interne se fait sans souci.

idem pour la sortie, tu passes toujours par le même trunk avec juste un callerid différent.

tanguyd
17/12/2013, 13h37
Je ne vois pas le rapport avec l'IP commune. Si chaque trunk ne gère qu'un numéro tu peux aussi ajouter /tonnumero a la fin du register string de chaque trunk

dbeiner
17/12/2013, 22h36
tu peux aussi ajouter /tonnumero a la fin du register string de chaque trunk

Oui c'est fait :

register=032508****:password@sip.netvoip.ch/032508****


Pourquoi ne pas avoir un seul trunk qui réceptionnerai les 3 numéros?
Parce que je suis un novice en Asterisk et que je ne sais pas faire ce genre de choses mais je suis preneur pour une petite explication! Comment on fait?


idem pour la sortie, tu passes toujours par le même trunk avec juste un callerid différent.
Ca je sais faire !

tanguyd
18/12/2013, 10h50
Pour avoir gérer plusieurs numéros sur un trunk, il faut que l'opérateur le supporte. Si c'est une offre pro pas de soucis, si c'est une offre destinée aux particuliers et non prévue pour y raccorder un asterisk peut être que ca ne sera pas possible.

Chez certains opérateurs qui renvoient le numéro appelé sous une forme non standard, il faut utiliser un context special

https://sites.google.com/site/samsig/techie/How-to-get-the-DID-of-a-SIP-trunk-when-the-provider-doesnt-send-it-and-why-some-incoming-SIP-calls-fail

dbeiner
25/12/2013, 03h32
En fait j'ai 4 trunks enregistrés, chacun avec son propre user/pw/n°. Tout baigne. :)

J'aimerais juste dire à Asterisk que quand il reçoit un appel (peut importe le n° de l'appellant) sur le trunk du n° 032508**** qu'il doit le router sur l'extension locale n° 6002 par exemple.

Ceci dans le but que je puisse identifier sur quel n° je reçoit mon appel. Pour info j'ai un téléphone Cisco SPA303 avec 3 lignes. Chaque ligne est enregistrée sur une extension locale :

Ligne 1 ---> ext. 6000
Ligne 2 ---> ext. 6001
etc.

J'ai essayé de faire ça via le GUI dans le menu "Incoming Calling Rules" mais ça ne fonctionne pas. Par contre les appels en interne arrivent bien sur la bonne ligne de mon Cisco.

Une piste/idée ? :redface:

Ah et pendant que j'y suis : JOYEUX NOËL !! :sol:

tanguyd
25/12/2013, 20h58
J'ai déjà répondu, si chaque trunk ne gère qu'un numéro, le plus simple est d'ajouter /numero a la fin du register string dans la conf du trunk. Si ça ne marche pas, merci de nous montrer les logs d'un appel entrant ainsi que ta configuration

PS: J'ignore quel GUI tu utilise pour paramétrer asterisk, mais avec freepbx, dans une route entrante il y a l'option "CID name prefix" permettant d’identifier le numéro appelé sans avoir a créer plusieurs comptes sip par téléphone.

dbeiner
26/12/2013, 05h01
J'ai trouvé.

En fait chez NetVoIP.ch, seul 1 de mes 3 numéros (celui que j'ai choisi lors de mon enregistrement) fait office de "référence". Les 2 autres numéros enregistrés plus tard avec le même compte semblent être des "alias".

Du coup j'ai fais comme ça dans le GUI d'Asterisk du Synology :

- dans "Incoming Calling Rules" j'ai créé une nouvelle règle liée au trunk du numéro "principal" de mon compte NetVoIP :

- Trunk : celui de mon n° principal chez NetVoIP

- Time Interval :

- Pattern : 032508**** (mon n° principal chez NetVoIP)

- Destination : User Extension -- 6000

En faisant ça, les appels arrivant sur mon numéro principal de chez NetVoIP seront redirigés sur l'extension locale 6000.

Ensuite j'ai créé une 2ème règle que j'ai également affectée au trunk de mon numéro principal. Comme pattern j'ai mis mon 2ème numéro NetVoIP (032508****) et comme destination l'extension 6001.

J'ai répété l'opération pour mon 3ème numéro avec les données qui vont bien (pattern et destination).

Maintenant les numéros appelés arrivent bien sur la bonne ligne de mon Cisco SPA303 (chaque ligne de mon cisco est enregistrée sur une extension locale : ligne 1 = 6000, ligne 2 = 6001, ...).

Concernant les appels sortants, j'ai créé plusieurs "Outgoing Calling Rules" dans le GUI (urgences, national, mobiles) avec chaque fois le pattern correspondant (par ex.: urgences = _1XX, national =_0[2345689]ZXXXXXXX, ...). Note : le chiffre "7" ne figure pas dans le range car il permettrait d'appeler les portables en Suisse !.

Ensuite j'ai créé plusieurs Dial Plans en cochant les "Outgoing Calling Rules" que je voulais et je les ai affectés aux extensions locales en fonction des autorisations d'appels !

Ca fonctionne nickel ! :redface:

jodat
21/06/2014, 19h02
Salut,

J'ai exactement le même problème que tu as eu avec tes trois numéros dont un est le numéro de tête.

Sur Asterisk/1.8.13.1 GUI-version : 2.1.0-rc1, j'ai des trunks sip pro chez sipcall, plusieurs numéros qui se suivent, mais que j'appelle n'importe lequel, Asterisk GUI ne fait pas la différence et croit toujours que ça arrive du trunk 1 (parce que c'est la même adresse IP) et je n'arrive pas à router les appels, c'est toujours le même poste qui sonne.

j'ai aussi trois numéros dont seulement le premier est enregistrable et les deux autres sont virtuels (Trunk sip de chez VTX) mais je n'arrive pas à faire comme toi dans "Incoming Calling Rules" en mettant sous Pattern le numéro, lorsque j'appelle, j'ai un message qui me dit que le numéro n'est pas valable. Cela fonctionne seulement avec le Pattern "s" et du coup il m'est impossible d'utiliser les deux autres numéros.

Sinon avec un trunk sip chez deux fournisseurs différents ça fonctionne, Asterisk fait la différence.

Peut - tu stp m'expliquer comment tu as configuré tes Patterns pour que cela fonctionne, j'ai tout essayé.

Voici un log de ce qui se passe lorsque je fait un appelle sur le deuxième numéro du trunk de chez sipcall:
[call to 032 XXXXXX2 DID_trunk_4 for internal 201]
chan_sip.c: --- (17 headers 18 lines) ---
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Sending to 212.117.203.44:5060 (NAT)
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Using INVITE request as basis request - d2a94e9- 3efc5a29-4df3d202-cbcf@sip.iforb.com~1o
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found peer 'trunk_1' for 'XXXXXXXXXX' from 212.117.203.44:5060
[Jun 19 21:01:40] VERBOSE[12450] netsock2.c: == Using SIP RTP CoS mark 5
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 0
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 8
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 18
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 101
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 102
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 3
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 99
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found RTP audio format 100
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found unknown media description format G.729a for ID 101
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found unknown media description format G.729b for ID 102
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found audio description format telephone-event for ID 99
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Found unknown media description format X-NSE for ID 100
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Capabilities: us - 0x8 (alaw), peer - audio=0x10e (gsm|ulaw|alaw|g729)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0x8 (alaw)
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Non-codec capabilities (dtmf): us - 0x1 (telephone- event|), peer - 0x1 (telephone-event|), combined - 0x1 (telephone-event|)
exten=s,1,Goto(default,200,1)
exten=s,1,Goto(default,201,1)
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Peer audio RTP is at port 212.117.203.40:51206
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: Looking for s in DID_trunk_1 (domain 178.174.12.86)
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c: list_route: hop: <sip:212.117.203.44:5060;transport=UDP;lr>
[Jun 19 21:01:40] VERBOSE[12450] chan_sip.c:
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [s@DID_trunk_1:1] Goto("SIP/trunk_1- 00000085", "default,200,1") in new stack
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Goto (default,200,1)
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [200@default:1] Macro("SIP/trunk_1- 00000085", "stdexten,200,SIP/200") in new stack
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [s@macro-stdexten:1] Set("SIP/trunk_1- 00000085", "__DYNAMIC_FEATURES=") in new stack
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [s@macro-stdexten:2] Set("SIP/trunk_1- 00000085", "ORIG_ARG1=200") in new stack
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [s@macro-stdexten:3] GotoIf("SIP/trunk_1- 00000085", "0?6:4") in new stack
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Goto (macro-stdexten,s,4)
[Jun 19 21:01:40] VERBOSE[14013] pbx.c: -- Executing [s@macro-stdexten:4] Dial("SIP/trunk_1- 00000085", "SIP/200,20,") in new stack
[Jun 19 21:01:40] VERBOSE[14013] netsock2.c: == Using SIP RTP CoS mark 5
[Jun 19 21:01:40] VERBOSE[14013] chan_sip.c: Audio is at 17884
[Jun 19 21:01:40] VERBOSE[14013] chan_sip.c: Adding codec 0x8 (alaw) to SDP
[Jun 19 21:01:40] VERBOSE[14013] chan_sip.c: Adding non-codec 0x1 (telephone-event) to SDP
[Jun 19 21:01:40] VERBOSE[14013] chan_sip.c: Reliably Transmitting (no NAT) to 192.168.1.137:5062:
[Jun 19 21:01:40] VERBOSE[14013] app_dial.c: -- Called SIP/200

Merci d'avance!

Meilleures salutations

Jean-Yves

Jielde
17/11/2014, 22h11
Salut,

as-tu résolu ton problème car je cherche a faire la même chose ?

dbeiner
18/11/2014, 12h33
@jodat :

Dans "Incoming Calling Rules" j'ai configuré le Pattern avec le n° associé, dans ce format. Exemple : _4132510XXXX (remplacer les X par la fin de ton numéro).

Dans la destination j'ai indiqué l'extension locale (le numéro interne sur lequel ça doit sonner).

Faire la même chose avec le 2ème numéro externe (créer une règle d'entrée, sélectionner le trunk, renseigner le pattern, indiquer l'extension).

Ceci va te donner 2 "trunks DID" (ou plus si tu as plusieurs trunks).

Ensuite dans "File Editor" j'ai modifié le fichier "extensions.conf" comme ceci (la partie en rouge est à ajouter dans ton fichier) :

[DID_trunk_1]
include=DID_trunk_1_default
include=DID_trunk_2

[DID_trunk_2]
include=DID_trunk_2_default
include=DID_trunk_1

etc...

Valider et appliquer.

Avec cette manipulation (peut-être foireuse, je ne sais pas! :redface:) mes numéros externes appelés sonnent maintenant sur les bonnes extensions !

Enjoy ! :)

Jielde
18/11/2014, 13h20
Juste pour savoir, vous avez la solution sans passer par freepbx ou autre ? a la dure ;)

dbeiner
18/11/2014, 14h51
Juste pour savoir, vous avez la solution sans passer par freepbx ou autre ? a la dure ;)

J'vais essayer ! Pour l'instant je jongle beaucoup avec le GUI Digium et les fichiers plats !

Alors, je dirais :

Dans extensions.conf, créer les contextes suivants :

Note

- cette configuration est valable uniquement pour le fournisseur de services SIPCall.ch
- remplacer XXXX par la fin de votre numéro SIPCall.ch
- remplacer localext par votre extension locale (6000, 6001, ...)



[DID_trunk_1]
include=DID_trunk_1_default
include=DID_trunk_2


[DID_trunk_1_default]
exten=_4132510XXXX,1,Goto(default,localext,1)


[DID_trunk_2]
include=DID_trunk_2_default
include=DID_trunk_1


[DID_trunk_2_default]
exten=_4132510XXXX,1,Goto(default,localext,1)

Voilà !

Ca fonctionne chez moi (Asterisk/1.8.28.2 sur ASTLinux) mais peut-être que c'est du code "d'apprenti sorcier" !

Libre à celui ou celle qui s'y connaît mieux d'y apporter sa touche personnelle ! :)


Edit 15:08 : corrigé le n° _4132510