[GELÖST] Seltsames Phänomen mit VoiceMail

denny_

Neuer User
Mitglied seit
14 Dez 2009
Beiträge
108
Punkte für Reaktionen
0
Punkte
0
Guten Morgen zusammen.

Ich habe ein seltsames Problem mit meiner VoiceMail.
Vielleicht bin ich ja nur zu blind um den Fehler auf Anhieb zu finden, aber ich hoffe, dass mir eventuell einer von euch auf die Sprünge helfen kann.

Wenn ich mit der Durchwahl 99 die VoiceMail aufrufe, bekomme ich auch brav die Ansagen, Aufnahmen etc. vorgespielt.
Sobald ich dann aber die VoiceMail mit # beende, wählt * mir diese Durchwahl auf die externe Leitung. :eek:

System:
Asterisk 1.4.34
Asterisk Addons 1.4.11
chan_capi 1.1.5

extensions.ael (relevanter Teil):
Code:
context default {
}

context sip     {

        10 =>   {
                Dial(SIP/11&SIP/12&SIP/13&SIP/14,,Ttm);
                }

        11 =>   {
                Dial(SIP/11,30,Ttm);
                }

        12 =>   {
                Dial(SIP/12,30,Ttm);
                }

        13 =>   {
                Dial(SIP/13,30,Ttm);
                }

        14 =>   {
                Dial(SIP/14,30,Ttm);
                }

        99 =>   {
                VoiceMailMain(10);
                }

        _X. =>  {
                Set(CALLERID(num)=****857);
                Dial(CAPI/ISDN1/${EXTEN},,Ttr);
                }
}
 
Zuletzt bearbeitet:
Das Problem ist, dass # zwar die Voicemail-Anwendung, nicht aber den Channel beendet. Da dieser noch offen ist, findet Asterisk die nächste matchende Regel in extensions.ael, und die ist _X., daher der Outboundcall mit der gewählten Extension 99.
Die Lösung ist recht simpel, und könnte incl. Vereinfachung wie folgt aussehen:

Code:
context sip     {

        10 =>   {
                Dial(SIP/11&SIP/12&SIP/13&SIP/14,,Ttm);
                }

        [COLOR="Red"]1[1-4] [/COLOR]=>   {
                Dial(SIP/[COLOR="Red"]${EXTEN}[/COLOR],30,Ttm);
                }

        99 =>   {
                VoiceMailMain(10);
                [COLOR="Red"][B]Hangup();[/B][/COLOR]
                }

         // Externe Anrufe verlangen mindestens 3 Ziffern (z.B.: Notruf)
        _[COLOR="Red"]XXX![/COLOR] =>  {
                Set(CALLERID(num)=****857);
                Dial(CAPI/ISDN1/${EXTEN},,Ttr);
                }
}

Hinweise:
  • wenn mehrere Extensions das inhaltlich Gleiche tun, sollte man es zusammenfassen, dafür gibts Pattern
  • nach VoiceMailMain immer den Channel beenden (Hangup), da sonst bei Beendigung mit Raute im Dialplan weitergemacht wird
  • Externe Nummern kann man genauer spezifizieren, da es - von einigen wenigen Ausnahmen in bestimmten Ortsnetzen abgesehen - immer mindestens 3 Ziffern sein müssen, kann und sollte man das auch so angeben
 
hi abw1oim.

Also die Idee mit dem Hangup() hätte mir eigentlich selbst kommen müssen ;) Aber danke das funktioniert einwandfrei.

Nur hat mein * anscheinend Probleme mit den Pattern "1[1-4]" denn wenn ich diese in den Dialplan einfüge und dann versuche eine andere Durchwahl zu erreichen bringt er mir folgende Fehlermeldung im CLI:

Code:
Call from '13' (anrufendes Telefon) to extension '11' (angerufenes Telefon) rejected because extension not found.

Er scheint mir das nicht wirklich zu schlucken :(

Noch ne weitere Frage: Ist es Absicht, dass du hier anstatt dem . hinter den X ein ! schreibst? Hat das eine bestimmte Bewandnis?

Danke schon mal sehr für deine Hilfe.

Grüße denny

EDIT:

Ich hab den Fehler gefunden. Es muss _1[1-4] heißen.
Aber um ehrlich zu sein funktioniert das auch nicht wirklich, denn wenn ich dann die 11 wähle, klingelt zwar die 11 aber selbst nach einem Disconnect (auflegen) klingelt die 11 Weiter bis * ein "NOANSWER" meldet. (Durch die 30 Sekunden).
 
Zuletzt bearbeitet:
War ein Tippfehler, richtig muss es lauten:

Code:
[COLOR="Red"]_1[1-4][/COLOR] =>   {
                Dial(SIP/${EXTEN},30,Ttm);
                }

Damit klappts dann auch. Für Dein Hangup-Problem füg einfach nach dem Dial noch ein Hangup() ein. Ansonsten ist das "Phantomklingeln" bei bestimmten Szenarien im Zusammenhang mit den bereits ausgetauschten SIP-Nachrichten ein bekannter Asterisk-bug, das kann also vorkommen.
Ansonsten:

! -> 0-n weitere Ziffern
. -> 1-n weitere Ziffern

_XXX! bedeutet also " Drei oder mehr Ziffern"
_XXX. hingegen "Vier oder mehr Ziffern"

siehe auch voip-info.org oder Asteriskbuch
 
Wunderbar. Danke.

Hab ich wohl gestern in der Eile im Asterisk-Buch überlesen. Da hab ich nämlich auch schon nach . und ! gesucht. ;-)

Dann versteh ich widerum nicht, wenn es ein bekannter Bug ist, warum man den nicht endlich entfernt -.-

Denn normalerweise ist der "Dial"-Befehl ja automatisch für "Answer" und "Hangup" zuständig.

Ansonsten klappt alles bestens. Danke vielmals.

Grüße denny
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,985
Mitglieder
378,568
Neuestes Mitglied
me2k