00* = ENUM (ISN,e164) et 00** = sipbroker
authorThomas Noel <thomas@thomas-sandbox.(none)>
Fri, 13 Jun 2008 15:32:10 +0000 (15:32 +0000)
committerThomas Noel <thomas@thomas-sandbox.(none)>
Fri, 13 Jun 2008 15:32:10 +0000 (15:32 +0000)
debian/changelog
etc-asterisk/enum.conf
etc-asterisk/extensions.conf
etc-asterisk/sip.conf

index 6280561..586bc8e 100644 (file)
@@ -1,3 +1,10 @@
+asterisk-config-auf (1.4-27) unstable; urgency=low
+
+  * extensions.conf, sip.conf: generalisation du 00*, appels ENUM freenum
+    (ISN) ou e164.arpa/.org/.info/... et appels sipbroker.com (00**)
+
+ -- Thomas Noel <thomas.noel@auf.org>  Fri, 13 Jun 2008 12:21:48 +0000
+
 asterisk-config-auf (1.4-26) unstable; urgency=low
 
   * etc-asterisk/extensions.conf : ajout appels ISN (ITAD Subscriber Numbers,
index 37c0b45..d41249b 100644 (file)
@@ -3,7 +3,15 @@
 ;
 ; Sample config for Asterisk
 ; This file is reloaded at "module reload enum" in the CLI
-;
+
+; ========================================
+; FICHIER INUTILE ! Selon la doc enum.txt :
+;  g) Currently, the function ignores the settings in enum.conf as the
+;     search zone name is now specified within the function, and the H323
+;     driver can be chosen by the user via the dialplan.  There were no
+;     other values in this file, and so it becomes deprecated.
+; =======================================
+
 [general]
 ;
 ; The search list for domains may be customized.  Domains are searched
@@ -14,7 +22,7 @@ search => e164.arpa
 ; If you'd like to use the E.164.org public ENUM registry in addition
 ; to the official e164.arpa one, uncomment the following line
 ;
-;search => e164.org
+search => e164.org
 ;
 ; As there are more H323 drivers available you have to select to which
 ; drive a H323 URI will map. Default is "H323".
index f35450e..4570e48 100644 (file)
@@ -295,8 +295,38 @@ exten => 5,n,Hangup()
 exten => s,200,Playback(system-crashed)
 exten => s,300,Playback(feature-not-avail-line)
 
+[macro-AUF-sip-caller-id]
+; Indique un Caller ID "correct" en cas d'un appel SIP
+; ( inspiration : http://www.loligo.com/asterisk/sipedu/current/configs/extensions.conf )
+; Si le Caller ID contient un deja @ : c'est sans doute l'adresse SIP, on arrete la
+exten => s,1,Set(rightampersand=${CUT(CALLERID(name),@,2)})
+exten => s,n,GotoIf(${ISNULL(${rightampersand})}?setpri:endmacro)
+; Sinon, le Caller ID sera IIINNN@sip.auf.org (III = indicatif de l'implantation
+; NNN = numero dans l'implantation)
+exten => s,n(setpri),Set(CALLERID(num)=${CALLERID(num):2}@sip.auf.org)
+; S'il n'y a pas de nom d'utilisateur, on met "AUF"
+exten => s,n,GotoIf(${ISNULL(${CALLERID(name)})}?setid:endmacro)
+exten => s,n(setid),Set(CALLERID(name)=AUF)
+exten => s,n(endmacro),NoOp
 
-; pour ceux qui veulent ajouter des macros locales
+[macro-AUF-enumdial]
+; Cherche le correspondant au numero de telephone, en mode ENUM, puis l'appelle
+; argument 1 : le numero a chercher
+; argument 2 : la technologie (iax2 ou sip)
+; argument 3 : la zone DNS (freenum.org, e164.arpa, e164.info, e164.org, ...)
+exten => s,1,NoOp(ENUM search number ${ARG1} for tech ${ARG2} in zone ${ARG3})
+exten => s,n,Set(number=${ARG1})
+exten => s,n,Set(tech=${ARG2})
+exten => s,n,Set(zone=${ARG3})
+exten => s,n,Set(counter=0)
+exten => s,n,Set(count=${ENUMLOOKUP(${number},${tech},c,,${zone})})
+exten => s,n,While($["${counter}"<"${count}"])
+exten => s,n,Set(counter=$[${counter}+1])
+exten => s,n,Dial(${tech}/${ENUMLOOKUP(${number},${tech},,${counter},${zone})},30,tThH)
+exten => s,n,EndWhile
+
+
+; pour ceux qui doivent ajouter des macros locales
 #include "auf/extensions-macros.local"
 
 
@@ -339,33 +369,56 @@ exten => *11,n,Echo
 exten => *11,n,Playback(demo-echodone)
 exten => *11,n,Hangup
 
-[macro-isn-callerid]
-; Indique le bon Caller ID en cas d'un appel SIP vers ISN (ITAD Subscriber Numbers, www.freenum.org)
-; ( inspiration : http://www.loligo.com/asterisk/sipedu/current/configs/extensions.conf )
-; Si le Caller ID contient un @ : c'est sans doute l'adresse SIP, on arrete la
-exten => s,1,Set(rightampersand=${CUT(CALLERID(name),@,2)})
-exten => s,n,GotoIf(${ISNULL(${rightampersand})}?setpri:endmacro)
-; Sinon, le Caller ID sera IIINNN@sip.auf.org (III = indicatif de l'implantation
-; NNN = numero dans l'implantation)
-exten => s,n(setpri),Set(CALLERID(num)=${CALLERID(num):2}@sip.auf.org)
-; S'il n'y a pas de nom d'utilisateur, on met "AUF"
-exten => s,n,GotoIf(${ISNULL(${CALLERID(name)})}?setid:endmacro)
-exten => s,n(setid),Set(CALLERID(name)=AUF)
-exten => s,n(endmacro),NoOp
-
-[isn]
-; Appels vers prefixes ITAD : 00*numero*domaine
-; Voir http://www.freenum.org
-exten => _${AUFPREFIX}*.,1,Goto(isn-suite,${EXTEN:$[${AUFPREFIXLEN} + 1]},1)
+[AUF-00etoile]
+; Appels vers autres systemes externes : ENUM (ISN ou e164), sipbroker, ...
+; Appels avec 00** : sipbroker
+exten => _${AUFPREFIX}**.,1,Goto(AUF-sipbroker,${EXTEN:$[${AUFPREFIXLEN} + 2]},1)
+; Appels vers prefixes 00* : systeme ENUM
+exten => _${AUFPREFIX}*.,1,Set(numero=${EXTEN:$[${AUFPREFIXLEN} + 1]})
+; Si le numéro comporte un "*" alors on va vers ISN, sinon e164
+exten => _${AUFPREFIX}*.,n,Set(isndomain=${CUT(numero,*,2)})
+exten => _${AUFPREFIX}*.,n,GotoIf(${ISNULL(${isndomain})}?e164:isn)
+exten => _${AUFPREFIX}*.,n(e164),Goto(AUF-enum-e164,${numero},1)
+exten => _${AUFPREFIX}*.,n(isn),Goto(AUF-enum-isn,${numero},1)
+
+[AUF-enum-isn]
+; Appel ISN - voir http://www.freenum.org
+exten => _X.,1,NoOp(Call ENUM/ISN ${EXTEN})
+; On coupe les appels de plus de 5 heures
+exten => _X.,n,Set(TIMEOUT(absolute)=18000)
+; On configure le Caller ID pour un appel SIP
+exten => _X.,n,Macro(AUF-sip-caller-id)
+; On appelle le numero SIP correspondant
+exten => _X.,n,Macro(AUF-enumdial,${EXTEN},sip,freenum.org)
+exten => _X.,n(failed),Answer
+exten => _X.,n,Playback(invalid)
+exten => _X.,n,Wait(3)
+exten => _X.,n,Playback(invalid)
+exten => _X.,n,Hangup
+exten => h,1,Hangup
+exten => i,1,Hangup
+exten => T,1,Hangup
 
-[isn-suite]
-exten => _X.,1,Macro(isn-callerid)
+[AUF-enum-e164]
+exten => _X.,1,NoOp(Call ENUM/e164 ${EXTEN})
 ; On coupe les appels de plus de 5 heures
 exten => _X.,n,Set(TIMEOUT(absolute)=18000)
-; On cherche le numero SIP correspondant (systeme ENUM)
-exten => _X.,n,Set(isnresult=${ENUMLOOKUP(${EXTEN},sip,,1,freenum.org)})
-exten => _X.,n,GotoIf($["${isnresult}"=""]?failed:success)
-exten => _X.,n(success),Dial(SIP/${isnresult},100)
+; On cherche+appelle sur les differents services public ENUM, en IAX2
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,e164.arpa)
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,e164.org)
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,e164.info)
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,enum.org)
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,e164.voxgratia.net)
+; exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},iax2,e164.televolution.net)
+; On configure le Caller ID pour un appel SIP
+exten => _X.,n,Macro(AUF-sip-caller-id)
+; On cherche+appelle sur les differents services publics ENUM, en SIP
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,e164.arpa)
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,e164.org)
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,e164.info)
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,enum.org)
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,e164.voxgratia.net)
+exten => _X.,n,Macro(AUF-enumdial,+${EXTEN},sip,e164.televolution.net)
 exten => _X.,n(failed),Answer
 exten => _X.,n,Playback(invalid)
 exten => _X.,n,Wait(3)
@@ -375,6 +428,29 @@ exten => h,1,Hangup
 exten => i,1,Hangup
 exten => T,1,Hangup
 
+[AUF-sipbroker]
+exten => _X.,1,NoOp(Call *${EXTEN}@sipbroker.com)
+exten => _X.,n,Set(TIMEOUT(absolute)=18000)
+;exten => _X.,n,Macro(AUF-sip-caller-id)
+; exten => _X.,n,Dial(SIP/*${EXTEN}@sipbroker.com)
+exten => _X.,n,Dial(SIP/sipbroker-out/*${EXTEN},30,tThH)
+exten => _X.,n,Goto(s-${DIALSTATUS},1) ; saut en fonction du status de fin de sonnerie
+exten => s-CONGESTION,1,Playback(cannot-complete-otherend-error)
+exten => s-CONGESTION,n,Wait(3)
+exten => s-CONGESTION,n,Playback(cannot-complete-otherend-error)
+exten => s-CONGESTION,n,Hangup
+exten => s-BUSY,1,Playback(on-busy)
+exten => s-BUSY,n,Hangup
+exten => s-.,1,Answer
+exten => s-.,n,Playback(invalid)
+exten => s-.,n,Wait(3)
+exten => s-.,n,Playback(invalid)
+exten => s-.,n,Hangup
+exten => h,1,Hangup
+exten => i,1,Hangup
+exten => T,1,Hangup
+
+
 [AUF-debut]
 #include "auf/extensions-debut.local"
 ; ce fichier contient les extensions a ajouter au debut du contexte [AUF],
@@ -410,8 +486,8 @@ include => AUF-local
 ; Appels vers les postes internationaux AUF
 include => AUF-global
 
-; Appels vers ISN (ITAD Subscriber Numbers / www.freenum.org)
-include => isn
+; Appels vers autres systemes externes : ENUM (ISN ou e164), sipbroker, ...
+include => AUF-00etoile
 
 ; Pour surcharges finales, si besoin (autres contextes, surcharges de contextes, etc)
 #include "auf/extensions-final.local"
index 16f8a6b..07d346a 100644 (file)
@@ -592,7 +592,19 @@ allow=h261
 dtmfmode=info
 
 ;
-; AUF
+; Sortie vers SIPBroker http://www.sipbroker.com
+;
+
+[sipbroker-out]
+type=peer
+fromuser=voip
+fromdomain=auf.org
+host=sipbroker.com
+port=5060
+canreinvite=yes
+
+;
+;
 ;
 
 ; Comptes pour postes clients locaux SIP