Wie realisiere ich Anruf -> Belegt/Mailbox

asterisk-user1

Neuer User
Mitglied seit
22 Jun 2005
Beiträge
45
Punkte für Reaktionen
0
Punkte
0
Kann mir jemand nen Beispielaufbau geben, wie ich folgendes realisieren könnte?

Also, es soll bei Anruf einer nummr z.b. 1234 der betreffende Apparat klingeln - Kein Problem.
Aber wenn dort belegt ist, soll nicht die Mailbox dran gehen sondern "Busy" abgespielt werden (eben das belegt ist).

Wenn aber der Teilnehmer länger als 30sec. nicht abnimmt (ohne das belegt ist natürlich), soll die Mailbox dran gehen.

Wie kann ich sowas in der extensions.conf eintragen?
 
über ${DIALSTATUS} kannst Du nach dem Wählen abfragen, was passiert ist.

Code:
[macro-ruf]
; ARG1= Protokoll(SIP od. IAX2)
; ARG2= Rufnummer)
exten => s,1,NoOp(Macro RUF gestartet)
exten => s,n,Dial(${ARG1}/${ARG2},30,r)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG2})
exten => s-NOANSWER,n,Hangup
exten => s-CHANUNAVAIL,1,Voicemail(u${ARG2})
exten => s-CHANUNAVAIL,n,Hangup
exten => s-BUSY,1,Voicemail(b${ARG2})
exten => s-BUSY,n,Hangup
 
Naja funktioniert nicht ganz. So hab ich das jetzt abgeändert und eingefügt:

Code:
exten => 975,1,NoOp(Macro RUF gestartet)
exten => 975,2,Dial(SIP/975,30,Tt)
exten => 975,3,Goto(975-${DIALSTATUS},1)
exten => 975-NOANSWER,1,Voicemail(u975)
exten => 975-NOANSWER,n,Hangup
exten => 975-CHANUNAVAIL,1,Voicemail(u975)
exten => 975-CHANUNAVAIL,n,Hangup
exten => 975-BUSY,1,Voicemail(b975)
exten => 975-BUSY,n,Hangup

Ein paar Infos: Das ganze ist für den Teilnehmer 975 der über SIP erreichbar ist. Mailbox ist eingerichtet (auch 975). Teilnehmer ist auch nicht doppelt in der extensions.conf. Das "incominglimit" ist auf 1.

Anrufen kann ich 975 und nach 30sec. geht auch die Mailbox dran (wenn ich nicht abnehme).
Aber wenn belegt ist geht ebenfalls die Mailbox ran.

Asterisk sagt mir zwar "Couldn't call 975 - Everyone is busy/congested at this time" aber die Mailbox geht trotzdem ran.

Hab auch testweise die letzten beiden Zeilen mal ersetzt durch
exten => 975-BUSY,1,Playback(busy)
exten => 975-BUSY,n,Hangup

Geht auch nicht wenn ich Statt "n" eine Priorität in Form einer Zahl zuordne.
 
Poste mal bitte die Ausgabe auf der CLI, wenn der Anruf bei besetzt abgewickelt wird.
 
Zuerstmal... mein Fehler, ich Idiot hab ausversehen in die falsche extensions.conf geschrieben (das Backup) :oops:

Aber mir fiel auf das trotzdem was fehlt, und zwar die Angabe des Contextes beim Goto-Befehl.

Hiermit funktionierts nun wie ich will:
Code:
exten => 975,1,NoOp(Macro RUF gestartet)
exten => 975,2,Dial(SIP/975,30,Tt)
exten => 975,3,Goto(default,975-${DIALSTATUS},1)
exten => 975-NOANSWER,1,Voicemail(u975)
exten => 975-NOANSWER,2,Hangup
exten => 975-CHANUNAVAIL,1,Playback(busy)
exten => 975-CHANUNAVAIL,2,Hangup
exten => 975-BUSY,1,Playback(busy)
exten => 975-BUSY,2,Hangup

Vielen Dank für die schnelle Hilfe
 
Solange ich mich innerhalb des gleichen Contextes bewege, ist die Angabe des Context-Namens im Goto nicht erforderlich.
 
Achso... wieder was dazu gelernt. Vielen Dank nochmal.

Jetzt muss ich mir nur noch ne busy.gsm basteln...
 
Warum nimmst du nicht einfach Busy anstatt Playback(busy)?
 
Wollten ursprünglich eine Ansage dann laufen lassen, darum :wink: Aber ich glaube es ist mit ",Busy" doch schöner, da die Telefone dann sogar "Besetzt" aufm Display anzeigen.

Naja ein Problem folgt dem nächsten:
Hab nun den Dialplan mit dem Makro geändert und statt der Rufnummer eben _XXX angegeben (für alle 3 stelligen-Nummern).

Sieht jetzt also wie folgt aus:
Code:
exten => _XXX,1,NoOp(Macro RUF gestartet)
exten => _XXX,2,Dial(SIP/${EXTEN},30,Tt)
exten => _XXX,3,Goto(default,${EXTEN}-${DIALSTATUS},1)
exten => _XXX-NOANSWER,1,Voicemail(u${EXTEN]})
exten => _XXX-NOANSWER,2,Hangup
exten => _XXX-CHANUNAVAIL,1,Busy
exten => _XXX-CHANUNAVAIL,2,Hangup
exten => _XXX-BUSY,1,Busy
exten => _XXX-BUSY,2,Hangup

Jetzt das Problem: Wenn er hier dann zur Mailbox springen soll, sucht er in der voicemail.conf nicht die Mailbox der 3-stelligen Nummer, sondern z.B. 975-NOANSWER
Die Mailbox heißt aber eben nur 975

Was muss ich bei (u${EXTEN}) ändern damit er das "-NOANSWER" weglässt, bzw. das er zu der Mailbox geht, dessen Nummer ursprünglich gewählt wurde. Vordere Stellen der Nummer kann ich ja mit "{EXTEN:1} (bzw. Zahl eben erhöhen) abschneiden. Aber wie mach ich das mit den hinteren Zahlen? Oder gibts ne andere Lösung?
 
was glaubst Du, warum ich die Sache damals in einen Macro gepackt habe ? Dann kannst Du das ganze Geraffel einfach über Macro() aufrufen, es wird in der extension s abgearbeitet und alles funktioniert prima.
 
Hatte ich ja schon probiert mit der extension s, geht bei mir aber leider nicht, da ich dann mit ner andern Wahlregel in Konflikt bekomme (vor ich in 's' falle, greift bei mir nen andre Wahlregel mit 3-stelligen Rufnummern die über CAPI gewählt werden).

Naja... geb ichs wohl für jeden Teilnehmer extra an.
 
Ich kapiere nicht, wieso Du den Teilnehmer nicht über einen Macro anrufen kannst ? Die extension s wäre in diesem Fall nur im Macro aktiv und sollte in anderen Kontexten keinerlei Störung verursachen.
 
Es ist ja im selben Context... aber du hast recht, vielleicht gehts wenn ich noch nen extra Context dafür mache.

Werd ich bei Gelegenheit mal versuchen, ThX

Edit: Du hast ja wie ich jetzt erst sehe auch einen dafür angelegt gehabt... sollte die Augen besser offen halten.
 
ich habe keinen Context angelegt. Das was im ersten Beispiel in den eckigen Klammern steht, ist die Definition eines Macros :!:
 
Tag,

ich würde gerne dieses Macro einsetzen, darum hole ich mal den Thread wieder hoch. Oder wäre ein neuer besser?


Ich scheitere jedenfalls vor dem DIAL Command:

extensions.conf:
Code:
exten => _XXX,1,Macro(sipvm,SIP,${EXTEN})

....

[macro-sipvm]
; ARG1= Protokoll(SIP od. IAX2)
; ARG2= Rufnummer)
exten => s,1,NoOp(Macro SIPVM gestartet)
exten => s,n,Dial(${ARG1}/${ARG2},30,r)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG2})
exten => s-NOANSWER,n,Hangup
exten => s-CHANUNAVAIL,1,Voicemail(u${ARG2})
exten => s-CHANUNAVAIL,n,Hangup
exten => s-BUSY,1,Voicemail(b${ARG2})
exten => s-BUSY,n,Hangup

CLI Ausgabe:
Code:
*CLI>
    -- Executing Macro("CAPI[contr1/598]/47", "sipvm|SIP|598") in new stack
    -- Executing NoOp("CAPI[contr1/598]/47", "Macro SIPVM gestartet") in new stack
    -- started pbx on channel (callgroup=0)!

Vom anrufenden Telefon bekomme ich ein Freizeichen (kein Timeout) und das Telefona sagt gar nix - es wird wohl kein Dial ausgeführt.

Die Parameter scheinen aber richtig zu sein... wie man an "sipvm|SIP|598" erkennen kann.

Jemand eine Idee?
 
n im Macro durch 2 und 3 ersetzen und schon fluppts...
 
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.