Optimierung im Dialplan

pixel

Neuer User
Mitglied seit
25 Jan 2006
Beiträge
105
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

habe nun endlich den * als ISDN-Anlage mit einen Snome und einem Softphone als Testumgebung am laufen. Ich habe das ganze jedoch so eingerichtet das die beiden Geräte intern unter anderen Nummern (10 + 11) telefonieren können. Das klappt auch wunderbar. Meine sip.conf sieht so aus:
Code:
[general]
context=default
bindaddr=192.168.0.5
port=5060
srvlookup = yes

[10]
callerid=Snome360 <10>
host=dynamic
user=10
secret=geheim
type=friend
nat=no
canreinvite=no
mailbox=250400

[11]
callerid=Poseidon <11>
host=dynamic
user=11
secret=geheim
type=friend
nat=no
canreinvite=no
mailbox=250401

250400 + 250401 sind also real vorhandene MSN's die den Geräten zugeordnet werden sollen. Die Voicemailboxen habe ich ebenfalls mit den Nummer konfiguriert damit der externe Anrufer nicht gesagt bekommt der Teilnehmen 10 sei nicht erreichbar. Die Behandlung der Anrufe die über ISDN kommen sieht in der extension.conf im Moment so aus (nur für die 10 konfiguriert):
Code:
[capi-in]
exten => 250400,1,Dial(Sip/10)
exten => 250400,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail,b250400
exten => r-BUSY,2,Hangup
exten => r-NOANSWER,1,voicemail,u250400
exten => r-NOANSWER,2,Hangup
Das funktioniert auch prima. Wenn ich aber nun den 2. Teilnehmen, also das Sofphone (intern = 11 / extern = 250401) hinzufügen würde müßte ich den ganzen Abschnitt einfach nochmal kopieren und die Wert ändern. Bei zwei Anschlüssen geht das ja noch aber wenn's dann mehrere sind wird's unübersichtlich. Gibt es hier eine elgantere Möglichkeit? Das z.B. der * die Zuordnung zwischen inetrner Nummer und externer MSN kennt und ich es mit einem Abschnitt hin bekomme?

Viele Grüße
pixel
 
Macros

Hallo.

Ja das geht relativ einfach über Macros. sieht dann in etwa so aus:

[macro-capiin]
exten => s,1,Dial(${ARG1)
exten => s,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail(b${EXTEN})
exten => r-BUSY,2,Hangup()
exten => r-NOANSWER,1,voicemail(u${EXTEN})
exten => r-NOANSWER,2,Hangup()

[capi-in]
exten => 250400,1,Macro(capiin,Sip/10)
exten => 250401,1,Macro(capiin,Sip/11)
usw..

habs jetzt zwar nicht mehr ausprobiert, aber so in etwa funktioniert das.
 
Danke, funktioniert aber leider nicht:
Code:
[macro-capiin]
exten => s,1,Dial(${ARG1)
exten => s,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail(b${EXTEN})
exten => r-BUSY,2,Hangup()
exten => r-NOANSWER,1,voicemail(u${EXTEN})
exten => r-NOANSWER,2,Hangup()
Ich kenne mich noch nicht all zu gut mit den Macros aus, habe aber trotzdem mal versucht den Fehler selbst zu finden. Habe hierzu auch mal im Kurs von betateilchen das Kapitel über Macros gelesen. In der ersten Zeile ist ein Klammer-Fehler. Das muß wohl heisen:
Code:
exten => s,1,Dial(${ARG1})
Die zweite Zeile ist, wenn ich die Ausgabe auf dem CLI richtig interpretiere richtig denn das Goto wird ausgeführt. Ab Zeile-Nr.3 sind wohl Fehler drin da er am CLI meldet das er in der voicmail.conf keinen Eintrag für 'r-busy' findet. Im Kurs von betateilchen steht auch drin das man innerhalb eines Macros die Variable ${EXTEN} nicht benutzen kann. Ich habe es einfach mal mit ${ARG1} und $ {ARG2} versucht aber diese enthalten die Werte SIP/10 und capiin was wenn ich länger drüber nach denke auch logisch ist da dies die beiden Aufruf-Parameter sind. Aber ich komme nicht dahinter welche Variable die Nummer die gewählt wurde enthält. Wie muß also der Aufruf:
Code:
exten => r-BUSY,1,voicemail,b${......}
Aussehen damit es klappt?
 
Code:
[macro-callsip]
exten => s,1,Dial( SIP/${ARG1} )
exten => s,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail(b${ARG1})
exten => r-BUSY,2,Hangup()
exten => r-NOANSWER,1,voicemail(u${ARG1})
exten => r-NOANSWER,2,Hangup()

[capi-in]
exten => 250400,1,Macro(callsip|10)
exten => 250401,1,Macro(callsip|11)
 
Zuletzt bearbeitet:
ja die eine Klammer hab ich vergessen stimmt.

ok da darf man nicht ${EXTEN} hernehmen, sondern ${MACRO_EXTEN}

habs jetzt mal ausprobiert und bei mir klappt das so.
hier nochmal verbessert:

Code:
[macro-capiin]
exten => s,1,Dial(${ARG1})
exten => s,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,voicemail(b${MACRO_EXTEN})
exten => r-BUSY,2,Hangup()
exten => r-NOANSWER,1,voicemail(u${MACRO_EXTEN})
exten => r-NOANSWER,2,Hangup()

[capi-in]
exten => 250400,1,Macro(capiin,Sip/10)
exten => 250401,1,Macro(capiin,Sip/11)
 
Danke jetzt klappt es. Allerdings stimmt etwas mit der Ansage nicht. Dies hat aber nichts mit der gerade vorgenommen Änderung (Macro) zu tun da dieser Effekt vorher auch schon auftrat.
Egal ob ich Anrufe wenn der Teilnehmer gerade telefoniert oder er einfach nur nicht an's Telefon geht, der Anrufer erhält immer die Ansage das der Angerufene im Gespräch sein. Sollten da nicht zwei verschiedene Ansagen kommen (Besetzt oder keiner da) ?
 
ja da sollten zwei verschiedene Ansagen kommen. bei mir klappt das auch.
hm also an der extension.conf liegt das nicht bei mir hab ich auch nichts anderes.

Sind denn die Ansagen beide aufgenommen und die File vorhanden?
Bei mir sieht das z.b. so aus:

:/var/lib/asterisk/sounds/voicemail/default/2
drwx------ 2 root root 48 May 21 22:08 INBOX
-rwx------ 1 root root 15140 Apr 22 20:49 busy.WAV
-rwx------ 1 root root 15279 Apr 22 20:49 busy.gsm
-rwx------ 1 root root 148204 Apr 22 20:49 busy.wav
-rwx------ 1 root root 9940 May 18 22:03 unavail.WAV
-rwx------ 1 root root 10065 May 18 22:03 unavail.gsm
-rwx------ 1 root root 97644 May 18 22:03 unavail.wav
 
Wenn das Endgerät kein BUSY zurückliefert, kann auch kein Busy angesagt werden. Diese Diskussion gab es schon mehrfach hier im Forum. Es gibt einfach Endgeräte die den Zustand nicht korrekt signalisieren.
 
und wie finde ich heraus ob das Snome360 das kann?
 
Indem du ein SIP debug machst und mal darauf achtest, was das Snom in so einem Fall an den Asterisk zurückschickt.
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,971
Mitglieder
378,565
Neuestes Mitglied
BenGradish