[Gelöst] Weiter nach Hangup

oskars

Neuer User
Mitglied seit
14 Jul 2011
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Hi,

ich möchte mehrere Leute anrufen. Wenn einer abnimmt und dann wieder auflegt soll der nächste angerufen werden und so weiter.

Code:
exten => 234,1,Dial(SIP/2000,15)
exten => 234,2,Goto(s,102)
exten => 234,102,Dial(SIP/3000,5)
exten => 234,104,Hangup

exten => h,1,Wait(2)
exten => h,2,Goto(234,102)

So wenn ich das so einfach schreibe geht das auch ohne Probleme. Allerdings soll ein Sound abgespielt werden sobald einer abnimmt. Dann sieht mein Code so aus.
Code:
exten => 234,1,Dial(SIP/2000,15,G(sound,567,1))
exten => 234,2,Goto(s,102)
exten => 234,102,Dial(SIP/3000,15,G(567,1))
exten => 234,104,Hangup

exten => h,1,Wait(2)
exten => h,2,Goto(234,102)

exten => 567,1,Wait(2)
exten => 567,2,Playback(hello-world)

So jetzt wenn jetzt der Angerufene auflegt wird die nächste Person nicht angerufen. Es ist bestimmt nur irgendein dummer Fehler. Eigentlich sollen da noch mehr sachen passieren, aber es funktioniert ja nicht mal in dieser einfach version.

ps: das er die h extension wieder ausführt, wenn die 2. Person auflegt ist mir klar, aber dass kann man ja mit na Bedingung umgehen. Es geht mir erstmal nur darum, dass er überhaupt weiter macht, wenn die 1. Person auflegt, nachdem der Sound abgespielt wurde.
 
Zuletzt bearbeitet:
Ungetestet:

Code:
exten => 234,1,Dial(SIP/2000,15,gM(sound))
exten => 234,n,Dial(SIP/3000,15,gM(sound))
exten => 234,n,Dial(SIP/4000,15,gM(sound))
exten => 234,n,Hangup()

[macro-sound]
exten => s,1,Playbak(hello-world)
exten => s,n,Set(MACRO_RESULT=CONTINUE)

Das Flag g ist vorsichtshalber, wenn der Angerufene noch während dem Playback auflegt. Ich weiß aber nicht ob das an der Stelle wirklich was nützt.
http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial schrieb:
g: When the called party hangs up, continue to execute commands in the current context at the next priority.

Sobald der Angerufene abnimmt, wird über das Macro zuerst der Sound abgespielt und dann der Rückgabewert ${MACRO_RESULT} gesetzt.

http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial schrieb:
CONTINUE: Hangup the called party but continue execution at the next priority in the dialplan for the caller
 
Danke, es funktioniert. Ich hatte das inzwischen mit nem AGI Skript gelöst, welches nen Callfile schreibt gelöst, aber das war nen bisschen umständlich. So gefällt mir das schon besser, dann bau ich das mal ein.
 
Der Test ging aber fix. :cool:

Hast Du das auch ausprobiert was passiert, wenn der Angerufene während dem Playback auflegt?

Wenn es noch mehr Ziele werden, könnte man das Dial auch in eine Schleife packen.
 
ehm ja, es wird dann playback abgebrochen und der nächste angerufen. Ich hab das jetzt alles in AEL geschrieben, und da schaffe ich es nicht ein Macro zu erstellen, der findet das nicht.
Code:
macro sound(){
        Playback(hello-world);
        Set(MACRO_RESULT=CONTINUE);
        return;
}

Die Fehlermeldung kommt immer, der findet das irgendwie nicht.
Code:
No such context 'macro-sound' for macro 'sound'

Ich vermute mal es liegt irgendwie daran, dass in AEL der Macro mit &<macroname>; aufgerufen wird und nicht wie im Dialplan mit Macro(<macroname>)
 
Zuletzt bearbeitet:
Sag halt gleich, dass Du AEL brauchst. ;)

Der AEL Parser kriegt das mit dem Macro nicht hin. Bevor es jemand versucht
Code:
macro macro-sound { ... }
nützt auch nichts, Asterisk findet zwar das Macro, beschwert sich dann aber über "Return ohne Gosub".

Abhilfe schafft die Verwendung von Gosub anstelle von Macros.

Code:
context wasauchimmer {
  234 => {
    Dial(SIP/2000,,gU(sound));
    Dial(SIP/3000,,gU(sound));
    ...
    Hangup();
  };
};

context sound {
  s => {
    Playback (hello-world);
    GOSUB_RESULT=CONTINUE;
    return;
  };
};

Mit bestem Dank an abw1oim für die Idee mit dem U Flag in einem anderen Thread.
 
@rentier-s: Nichts zu danken.

Wichtiger scheint mir - leider ist das in der Community noch nicht so recht angekommen - darauf hinzuweisen, dass Macro seit 1.6 deprecated ist und nicht mehr verwendet werden sollte, Subroutines mit Gosub/Return sind der adäquate Ersatz.
Jeder Makro-Verliebte sollte auch wissen, dass Macro ab Asterisk 10 standardmäßig nicht mehr kompiliert wird (es existiert zwar noch, wird aber per default nicht mehr zur Verfügung gestellt). Insoweit: It's time to change!
 
@rentier-s:
k danke werd es gleich mal ausprobieren.

@abw1oim:
Ok, dass ist gut zu wissen. Hatte so was ähnliches gelesen, aber wusste nix damit anzufangen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.