Anrufbeantworter/Besetzt-Zeichen Problem.

OrpheuzZz

Neuer User
Mitglied seit
19 Mrz 2007
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Ich habe ein Problem mit meinem Asterisk.
Situation ist folgende:

Sipgateaccount --> Asterisk auf root-Server --> Telefon bei meinem altern Herrn im Büro.
Das Telefon ist ein Grandstream GXP2000 und so konfiguriert, dass es nur 1 Gespräch annimmt.
Desweiteren habe ich den Asterisk so konfiguriert, dass er ein Gespräch von sipgate entgegennimmt und auf das Siptelefon weiterleitet. Wenn dieses Gespräch nicht innerhalb von 7 Sekunden angenommen wird, dann springt er weiter auf den Anrufbeantworter.
Das Problem ist nun, dass er direkt auf den Anrufbeantworter weiterleitet, wenn schon ein Gespräch verbunden ist. Gewünscht wäre dann allerdings ein Besetzt-Zeichen.

Gewünschtes Verhalten wäre also Kurz:
Kein Gespräch verbunden --> Telefon klingelt, nach 7 Sekunden: AB
Bereits ein Gespräch verbunden --> Besetzt.

Meine Frage nun:
Wie erkläre ich dem Asterisk, dass er über den sipgate-Trunk genau 1 Gespräch führen soll und dann jedes weitere Gespräch so ablehnt, dass die Gegenseite ein Besetzt-Zeichen bekommt?
incominglimit in der sip.conf brachte nicht den gewünschten Erfolg.
Wenn schon ein Gespräch über Sipgate reingekommen ist und noch läuft, bekommt ein weiterer Anrufer "Dieser Teilnehmer ist vorrübergehend nicht erreichbar, blaa".
Wenn ich selber ein Gespräch nach aussen initiiere, landen weitere Anrufer, sowie vorher auch, auf dem AB.
Leider war alles, was google mir zu diesem Thema rausschmiss nicht sehr aussagekräftig und/oder widersprüchlich ("outgoinglimit", "incominglimit", "limit" von denen scheint nur "incominglimit" was zu bewirken) oder ich habe nicht die richtigen Suchbegriffe.
Wäre nett, wenn mir jemand einen heissen Tip, ein Stichwort, nen Link oder vielleicht sogar nen Lösungsansatz geben könnte.

Danke schonmal im Vorraus,
Jan


Hier noch ein paar Daten und meine Config-Files (persönliche Daten hab ich mal ausge-X-t):
Fall noch mehr Informationen nötig sind: Einfach melden. ;)

System: Virtualisiertes Debian (Etch) 4.0 in einer XEN-DomU auf 2.6.18 Debian-Xen-Kernel
Asterisk-Version:
Code:
hades:/etc/asterisk# dpkg -l | grep asterisk
ii  asterisk               1.2.13~dfsg-2                       Open Source Private Branch Exchange (PBX)
ii  asterisk-classic       1.2.13~dfsg-2                       Open Source Private Branch Exchange (PBX) -
ii  asterisk-config        1.2.13~dfsg-2                       config files for asterisk
ii  asterisk-doc           1.2.13~dfsg-2                       documentation for asterisk
ii  asterisk-prompt-de     2.0-1                               German voice prompts for the Asterisk PBX
ii  asterisk-sounds-main   1.2.13~dfsg-2                       sound files for asterisk

extensions.conf:
Code:
[outgoingsipgate]
exten => 998,1,Goto(ab_record,s,1)
exten => 999,1,Goto(ab_playback,s,1)
exten => 997,1,Goto(voicetest,s,1)
exten => _Z.,1,Dial(SIP/%MEINEVORWAHL%${EXTEN}@sipgate,60,tr)
exten => _0.,1,Dial(SIP/${EXTEN}@sipgate,60,tr)
exten => t,3,Playback(invalid)
exten => t,4,Hangup

[incomingsipgate]
exten => XXXXXXXX,1,Dial(SIP/100|7)
exten => xxxxxxxxxx,2,Goto(voicemail,s,1)

[voicemail]
exten => s,1,Playback(/var/spool/asterisk/ab/ab_message)
exten => s,n,Set(VOICEFILE=/tmp/${UNIQUEID}.wav)
exten => s,n,Set(MyCALLERIDNUM=${CALLERID(num)})
exten => s,n,Set(MyDATETIME=${STRFTIME(${EPOCH},,%d.%m.%C%y %H:%M)})
exten => s,n,Record(${VOICEFILE})
exten => h,1,System('/usr/local/bin/voicemail.pl "${VOICEFILE}" "${MyCALLERIDNUM}" "${MyDATETIME}" "[email protected]"')
;voicemail.pl ist ein perlscript, welches die Aufnahme in eine Email packt und an die angegebene Emailadresse schickt.

[ab_record]
exten => s,1,Playback(/var/spool/asterisk/ab/ab_pre_record)
exten => s,n,Set(VOICEFILE=/var/spool/asterisk/ab/ab_message.WAV)
exten => s,n,Record(${VOICEFILE})

[ab_playback]
exten => s,1,Playback(/var/spool/asterisk/ab/ab_pre_playback)
exten => s,n,Playback(beep)
exten => s,n,Playback(/var/spool/asterisk/ab/ab_message)
exten => s,n,Hangup

[voicetest]
exten => s,1,Playback(/var/spool/asterisk/ab/ab_pre_record)
exten => s,n,Set(VOICEFILE=/tmp/testfile.wav)
exten => s,n,Record(${VOICEFILE})

sip.conf:
Code:
[general]
context=default
bindaddr=0.0.0.0
port=5060
disallow=all
allow=alaw
allow=ulaw
allow=gsm


; Bei Sipgate anmelden
register => XXXXXXXXXX:[email protected]/ZZZZZZZZZ

; Definition der Sipgateverbindung.
[sipgate]
secret=YYYYYYYYY
username=XXXXXXXXX
fromuser=XXXXXXXXX
fromdomain=sipgate.de
type=friend
host=sipgate.de
insecure=very
nat=no
qualify=yes
dtmfmode=info
canreinvite=no
context=incomingsipgate
; Maximal 1 Verbindung über Sipgate ?!?
incominglimit=1

; Eigene Telefone
[100]
type=friend
username=100
secret=1329
callerid="Max Mustermann" <100>
host=dynamic
dtmfmode=info
context=outgoingsipgate
nat=yes
; Maximal 1 Verbindung für dieses Telefon ?!?
incominglimit=1

edit:
p.S.: Falls ich hier im falschen Forum gelandet bin: Einfach verschieben. Ich war mir nicht sicher, ob das etwas mit dem Wählplan zu tun hat (glaub ich eigentlich ja nicht...) und hab dann einfach mal das "Allgemeine" Forum genommen.
 
Es hat sich dann doch erledigt. Ein bekannter gab mir folgenden Tip:

Code:
[outgoingsipgate]
exten => 998,1,Goto(ab_record,s,1)
exten => 999,1,Goto(ab_playback,s,1)
exten => 997,1,Goto(voicetest,s,1)
exten => _Z.,1,SetGroup(numofcalls)
exten => _Z.,2,Dial(SIP/%MEINEVORWAHL%${EXTEN}@sipgate,60,tr)
exten => _0.,1,SetGroup(numofcalls)
exten => _0.,2,Dial(SIP/${EXTEN}@sipgate,60,tr)
exten => t,3,Playback(invalid)
exten => t,4,Hangup

[incomingsipgate]
exten => 2006562e0,1,SetGroup(numofcalls)
exten => 2006562e0,2,CheckGroup(1)
exten => 2006562e0,3,Dial(SIP/100|7)
exten => 2006562e0,4,Goto(voicemail,s,1)
exten => 2006562e0,5,Hangup
exten => 2006562e0,103,Busy

In meinen Augen allerdings eine ziemlich dreckige Lösung.
Hat noch wer andere Tips?
 
Das ist keine dreckige Lösung. Das ist genau die Lösung, die für solche Aufgaben vorgesehen ist.

Es gibt aber auch noch einen zweiten Lösungsansatz. Suche mal nach der Verwendung der Variablen
Code:
${DIALSTATUS}
Das würde allerdings nur dann korrekt funktionieren, wenn das GXP2000 bei einem laufenden Gespräch auch SIP 486 (BUSY) zurückschickt.
 
Hallo!

Na Ok ;)
Dann muss ich mir das nur nochmal mit der "GROUP"-Funktion ansehen, da "SetGroup" und "CheckGroup" als deprecatet angemeckert werden.

Die Sache mit ${DAILSTATUS} hatte ich schon über ChanIsAvail probier, das hat aber nicht funktioniert.

mit "ChanIsAvail(SIP/100,s,j)" kann ich ja prüfen, ob meine SIP-Extension 100 verfügbar ist, aber da bekam ich immer nur ne "0" (Kanal existiert, Status aber unbekannt) zurück und somit nicht weiter.
Scheint so, als würde das GXP2k keine korrekte antwort liefern, oder ich hab es falsch konfiguriert ;)
Naja...Es funktioniert ja jetzt und ich werde die deprecated-Befehle durch die Aktuellen ersetzen und dann reicht das erstmal, bis das 2. Telefon im Oktober dazukommt... Dann werde ich wohl oder übel nochmal da ran müssen, da sich dann ja zwangsläufig ein paar weiter Konstellationen ergeben.

Danke aber für den Hinweis!

n8!
Jan
 
Die Variable ${DIALSTATUS} hat mit ChanIsAvail ungefähr soviel zu tun wie eine grasende Kuh auf einer bayrischen Alm mit den AKW-Störfällen in Krümmel.

Ich empfehle Dir mal, meinen Asterisk Kurs hier im Forum durchzuarbeiten, da wird die Verwendung von ${DIALSTATUS} beschrieben.
 
Memo an mich: Wenn man aus der Kneipe kommt, verwechselt man schonmal "Availstatus" und "Dialstatus"...*grml*

Den Kurs hatte ich schonmal überflogen. Aber ich glaub ich setz mir mal ne virtuelle Maschine auf und versuch das mal komplett nachzuvollziehen.

Danke,
Jan
 
Kostenlos!

Statistik des Forums

Themen
248,448
Beiträge
2,291,623
Mitglieder
377,865
Neuestes Mitglied
babineauirene