PDA

Voir la version complète : Comment configurer son trunk et les appels sortants ?



lordaker
21/02/2018, 14h56
Bonsoir,

Je suis nouveau dans le monde de l'Asterisk et je viens d'installer sur un raspberry pi 3 le systèmes tout en un de chez http://www.raspberry-asterisk.org/ et il fonctionne bien. J'utilise un routeur, mon raspberry pi qui me sert de serveur téléphonique et un téléphone ip. J'ai créé deux poste téléphonique (pjsip) sur le serveur téléphonique via l'interface graphique freePBX. Et j'arrive à les joindre tous les deux lorsque que je compose leur identifiant sip. Maintemant je voudrais effectuer des appels externes vers la Belgique. J'ai souscrit à un numéro belge chez un service provider mais je ne sais pas comment configurer freePBX pour me permettre d’émettre des appels sortants. J'ai créé un trunk (chan_sip), avec pour ID appelant le numéro loué chez le provider. Maintenant il y a la partie Dial Number dans le trunk que je n'arrive pas à comprendre. Et aussi au niveau de la route sortante et entrante à configurer.

Sauriez-vous m'expliquer comment procéder ?

Comment dois-je mis prendre ?

Bien à vous,

Système:
Raspbian Stretch 9.1
freePBX 14.0.1.36
Asterix 13

fastm3
22/02/2018, 00h31
1 - valider que le trunk est bien defini. Blanc ou les valeurs par defaut devrait etre ok.
Sous un terminal
asterisk -rx "sip show peers"

asterisk -rx "sip show registry"
deja.
Le trunk, c'est le "tuyau"

2 - Outbound route ou route externes pour les appels sortants.
Quand tu vas composer un numeros, tu vas indiquer d'utiliser tel ou tel "tuyau".
AU debut une seule suffit pour faire simple. Il y en a une defaut generallement.
Dans le trunk sequence de celle-ci, tu mets ton seul trunk.
Dans le dial pattern, pour faire simple , tu mets X. dans le match pattern.
Ainsi , tout numero composé ( qui commence par un chiffre...) sera envoyé vers ton trunk.

C'est tout ce qui faut definir avec freepbx pour les appels sortants. ( 1 trunk + 1 outbound route au minimum ).

Fastm3.

lordaker
09/03/2018, 15h18
J'ai pu configurer les appels sortants sur FreePBX en définissant un Trunk PJSIP et un Outbound Route.

Mais éclairer ma lanterne en ce qui concerne la création de Trunk pjsip/sip et les poste(extensions) pjsip/sip.

D'après ce que j'ai compris le protocole SIP est pour les versions anérieures (1.2x,...11) et le PJSIP est pour

les nouvelles versions (12.x, 13.x, 14.x, 15.x). Est-ce exacte ?

Et aussi en utilisant FreePBX puis-je éditer le contenu des fichiers de l'Asterisk manuellement via le terminal ?

J'ai comme l'impression que FreePBX rajoute de nouveaux fichiers dans le répertoire /etc/asterisk/ et cela me

perturbe un peu et je ne sais sur quels fichiers agir ou regarder...

olppp
09/03/2018, 18h36
pjsip est une autre implémentation du protocole sip qui doit à terme remplacer chan_sip.
ces deux moutures de sip sont actuellement présentes dans Asterisk.
il n'est pas conseillé d'utiliser simultanément les 2 : conflit de ports possible.
sip.conf => chan_sip, module chan_sip.so
pjsip.conf, pjsip_wizard.conf => pjsip, modules chan_pjsip.so et res_pjsip_*.so

lordaker
12/03/2018, 15h21
@olppp

En d'autres termes je dois déclarer mes postes téléphoniques dans le fichier pjsip.conf uniquement, pas dans le sip.conf.
J'ai l'impression que la syntaxe est différente sur le fichier pjsip.conf... Auriez-vous un lien qui explique bien comment configurer
son poste dans ce fichier ?

Bien à toi,
Lordaker

olppp
12/03/2018, 15h28
Oui il est préférable de n'avoir qu'une seule pile sip en service.
Pour chan_sip l'avantage reste la base installée, les nombreux tutos disponibles et une relative simplicité des fichiers de configuration.

La configuration d'un poste dans pjsip.conf est plus lourde qu'elle n'était dans sip.conf/users.conf !

Le plus simple est de déclarer dans pjsip_wizard.conf qui a été mis en place pour alléger la rédaction de la configuration.

Voir les exemples sur :
https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+Wizard

lordaker
12/03/2018, 18h33
La configuration d'un poste dans pjsip.conf est plus lourde qu'elle n'était dans sip.conf/users.conf !

Le plus simple est de déclarer dans pjsip_wizard.conf qui a été mis en place pour alléger la rédaction de la configuration.

Voir les exemples sur :
https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+Wizard


Ok, je vois. Moi j'écris ma configuration dans le sip.conf puis j'effectue la procédure définit dans le lien ci-dessous:
Migrer de SIP à PJSIP:
https://wiki.asterisk.org/wiki/display/AST/Migrating+from+chan_sip+to+res_pjsip

Je n'agis que sur le fichier sip.conf et le fichier extensions.conf et actuellement j'arrive à effectuer des appels en interne.

Mon fichier sip.conf



[general]
udpbindaddr=0.0.0.0
port=5060
context=default

[103]
type=friend
context=from-internal
host=dynamic
secret=103
disallow=all
allow=ulaw,ulaw
mailbox=103@default

[102]
type=friend
context=from-internal
host=dynamic
secret=102
disallow=all
allow=ulaw,alaw
mailbox=102@default

[101]
type=friend
context=from-internal
host=dynamic
secret=101
disallow=all
allow=ulaw,alaw
mailbox=101@default



Mon fichier extensions.conf


[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp ; Console interface for demo
IAXINFO=guest ; IAXtel username/password
TRUNK=DAHDI/G2 ; Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)

[from-internal]
exten => 101,1,NoOp(First Line)
same => n,wait(1)
same => n,Dial(PJSIP/${EXTEN})
same => n,Hangup()

exten => 102,1,NoOp(First Line)
same => n,wait(1)
same => n,Dial(PJSIP/${EXTEN})
same => n,Hangup()


exten => 103,1,NoOp(First Line)
same => n,wait(1)
same => n,Dial(PJSIP/${EXTEN})
same => n,Hangup()




Et voici mon fichier pjsip.conf après la migration



;--
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Non mapped elements start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[general]
udpbindaddr = 0.0.0.0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Non mapped elements end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--;


[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0

[103]
type = aor
max_contacts = 1

[103]
type = auth
username = 103
password = 103

[103]
type = endpoint
context = from-internal
disallow = all
allow = ulaw,ulaw
mailboxes = 103@default
auth = 103
outbound_auth = 103
aors = 103

[102]
type = aor
max_contacts = 1

[102]
type = auth
username = 102
password = 102

[102]
type = endpoint
context = from-internal
disallow = all
allow = ulaw,alaw
mailboxes = 102@default
auth = 102
outbound_auth = 102
aors = 102

[101]
type = aor
max_contacts = 1

[101]
type = auth
username = 101
password = 101

[101]
type = endpoint
context = from-internal
disallow = all
allow = ulaw,alaw
mailboxes = 101@default
auth = 101
outbound_auth = 101
aors = 101



Mais je comprends pas la syntaxe du pjsip.conf

J'ai télécharger le livre "Eyrolles - Asterisk - La télephonie d'entreprise libre" mais il traite de la version 1.6.1.1 d'Asterisk
et il ne parle pas du PJSIP qui est entrain d'être mis en avant par la société Digium. Le plan de numératation se fait via
le fichier extensions.ael et non extensions.conf

lordaker
12/03/2018, 18h37
Maintenant ma question est la suivante:

Où est-ce que je place la configuration de mon trunk (provider voip) pour un trunk pjsip ainsi que le outbound route ?

olppp
13/03/2018, 11h21
ma configuration "trunk" chez Free

pjsip.conf


[freephonie.net-reg]
type = registration
retry_interval = 20
max_retries = 10
expiration = 120
transport = transport-udp-nat
outbound_auth = freephonie.net-auth
client_uri = sip:095xxxxxxx@freephonie.net
server_uri = sip:freephonie.net

[freephonie.net-auth]
type = auth
auth_type = md5
md5_cred = fca38294azeru4dfb067c765efb0fd9
username = 095xxxxxxx
;realm = freephonie.net

[freephonie.net]
type = endpoint
context = from-ext
disallow = all
allow = alaw
transport = transport-udp-nat
outbound_auth = freephonie.net-auth
aors = freephonie.net
direct_media = no
dtmf_mode = rfc4733
;trust_id_outbound = yes

[freephonie.net]
type = aor
contact=sip:freephonie.net:5060

[identify_freephonie.net]
type = identify
endpoint = freephonie.net
match = freephonie.net


et pour linphone.org


[linphone.org-reg]
type = registration
retry_interval = 20
max_retries = 10
expiration = 120
transport = transport-udp-nat
outbound_auth = linphone.org-auth
client_uri = sip:login@sip.linphone.org
server_uri = sip:sip.linphone.org

[linphone.org-auth]
type = auth
password = unmotdePasse
username = login

[linphone.org]
type = endpoint
context = from-ext
disallow = all
allow = ulaw,alaw
transport = transport-udp-nat
outbound_auth = linphone.org-auth
aors = linphone.org
direct_media = no
dtmf_mode = rfc4733
;trust_id_outbound = yes

[linphone.org]
type = aor
contact=sip:sip.linphone.org:5060

[identify_linphone.org]
type = identify
endpoint = linphone.org
match = sip.linphone.org


extension.ael


context [vers_free]
_0[1-79]XXXXXXXX => {
//Free n'accepte plus les appels avec des identifiants personnalisés.
Set(CALLERID(name)=095xxxxxxx);
Set(CALLERID(num)=095xxxxxx);
Dial(PJSIP/freephonie.net/sip:${EXTEN}@freephonie.net,,rRtT);
Hangup();
}

lordaker
13/03/2018, 14h05
extension.ael


context [vers_free]
_0[1-79]XXXXXXXX => {
//Free n'accepte plus les appels avec des identifiants personnalisés.
Set(CALLERID(name)=095xxxxxxx);
Set(CALLERID(num)=095xxxxxx);
Dial(PJSIP/freephonie.net/sip:${EXTEN}@freephonie.net,,rRtT);
Hangup();
}


Il est préférable de configurer son Dialplan via le fichier extensions.ael que extensions.conf ?

olppp
14/03/2018, 11h39
Disons que j'ai une préférence pour l'utilisation d'AEL. La syntaxe ressemble à du C et puis le parseur intégré (aelparse) évite de planter Asterisk sur de simples fautes de frappe.

j'ai supprimé un point virgule à la fin d'une ligne pour l'exemple, résultat dans la console sur un reload.


arpe*CLI> ael reload
Command 'ael reload' failed.
[2018-03-14 10:34:28] ERROR[31435]: ael.y:840 ael_yyerror: ==== File: /etc/asterisk/extensions.ael, Line 50, Cols: 13-13: Error: syntax error, unexpected '}', expecting ';' or '='
[2018-03-14 10:34:28] ERROR[31435]: pbx_ael.c:197 pbx_load_module: Sorry, but 1 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.

lordaker
14/03/2018, 14h49
Donc en ce moment il me faudra donc que je désactive le chargement du module pbx_config.so dans le fichier modules.conf
Et aussi, comment je configure l'Asterisk (13.19.2) pour n'utiliser que le fichier extensions.ael pour la configuration du dialplan ?

olppp
14/03/2018, 15h06
ne pas désactiver pbx_config.so. La config ael est compilée/traduite au format extension.conf.
Il est juste préférable d'avoir un extension.conf minimum ou entièrement commenté.
Extrait de extensions.ael.sample


// NOTE! NOTE! NOTE!
// Asterisk by default will load both extensions.conf and extensions.ael files.
// Upon loading these files the dialplans generated from both with be merged,
// so you must make sure that you don't have any overlapping contexts or global
// variables. If you do, then unexpected behavior may result when the data is
// merged.
// NOTE! NOTE! NOTE!

lordaker
19/04/2018, 14h24
ne pas désactiver pbx_config.so. La config ael est compilée/traduite au format extension.conf.
Il est juste préférable d'avoir un extension.conf minimum ou entièrement commenté.
Extrait de extensions.ael.sample


// NOTE! NOTE! NOTE!
// Asterisk by default will load both extensions.conf and extensions.ael files.
// Upon loading these files the dialplans generated from both with be merged,
// so you must make sure that you don't have any overlapping contexts or global
// variables. If you do, then unexpected behavior may result when the data is
// merged.
// NOTE! NOTE! NOTE!

Ok. Et j'écris mon dialplan dans le fichier extensions.ael puis dans ma console CLI, je lance "ael reload" pour la compilation. C'est bien ça ?

PS : Comment on utilise pjsip_wizard.conf à la place de pjsip.conf. Je dois mettre en commentaire le contenu du fichier pjsip.conf ?

olppp
23/04/2018, 11h43
ael reload va effectivement parser, compiler et intégrer extensions.ael dans le dialplan, ou pas si le parseur détecte des erreurs .
Il existe un outil externe aelparse pour un contrôle à priori de la syntaxe et de la sémantique.

Les identifiants de comptes dans pjsip_wizard.conf ne doivent pas être doublonés dans pjsip.conf.
Certaines entrées, les transports par exemples sont toujours dans pjsip.conf.