Callfile und Context

RealFairPlayer

Neuer User
Mitglied seit
30 Mai 2005
Beiträge
113
Punkte für Reaktionen
0
Punkte
0
Guten Abend Zusammen,

Ziel ist es per Call-file die Asterisk-PBX dazu zu bringen folgendes zu tun:

1. Rufe erste Nummer an, wenn diese abnimmt spiele ein File ab und lege auf
2. Geht Nummer eins nach 15 Sekunden nicht ans Telefon lege auf und versuche selbiges bei einer zweiten Nummer
3. Geht Nummer zwei 15 Sekunden nicht ans Telefon lege auf und versuche selbiges bei Nummer drei
4. Geht Nummer vier 15 Sekunden nicht ans Telefon lege auf.

Hintergrund ist das ein CRON auf Emails prüft, findet er eine ist etwas passiert und eine Informationskette soll benachrichtigt werden.

Mein jetziger Ansatz scheitert daran das ein Context innerhalb des Dialplans erst dann beginnt wenn der Anruf angenommen wird.

CALLFILE

Code:
Channel: SIP/sipgate_outgoing_account1/0190123456
MaxRetries: 1
RetryTime: 30
WaitTime: 15
Context: eCall
Extension: 800
Priority: 1


Extensions.conf
Code:
[eCall]
exten => s,1,NoOp("Bin im Syntax")
exten => 800,1,Set(CALLERID(num)=blahblahblubb)
exten => 800,2,Dial(SIP/SIPPROV/0190123456)
exten => 800,3,agi(googletts.agi,"Es gab einen Alarm  - bitte reagieren, vielen Dank!",de)
exten => 800,4,Hangup
exten => s-NOANSWER,1,Dial(SIP/SIPPROV/0190123456)
exten => s-NOANSWER,2,Hangup
exten => s-NOANSWER,1,Dial(SIP/SIPPROV/0190123456)
exten => s-NOANSWER,2,Hangup
exten => s-NOANSWER,1,Dial(SIP/SIPPROV/0190123456)
exten => s-NOANSWER,2,Hangup
exten => _s-.,1,NoOp(WARNING: Nicht erfasster Status: ${DIALSTATUS})

Eigentlich dachte ich die Aufgabe wäre ein Lowbrainer und in wenigen Stunden erledigt, aber irgendwie beiße ich mir seit zwei Tagen daran die Zähne aus. Eigentlich ist es total egal wie die Anrufe zustande kommen, es könnte auch per AGI oder sonstwie gelöst werden, aber mir fehlen die Ideen. Es wäre klasse wenn ihr mir dabei helfen würdet, wie wäre euer Lösungsansatz?

LG,
Matthias
 
Genau wie im normalen Dial kann man auch bei Autodial/Originate ein Local-Channel Konstrukt verwenden.

Code:
Channel: Local/rundruf@IchBinEinContext
Context: IchBinEinContext
Extension: alarm
Priority: 1
Code:
[IchBinEinContext]
exten => rundruf,1,CallerID setzen und so weiter
 same => n,Dial(SIP/Provider/101,15)
 same => n,GotoIf($[${DIALSTATUS}=ANSWER]?fertig)
 same => n,Dial(SIP/Provider/102,15)
 same => n,GotoIf($[${DIALSTATUS}=ANSWER]?fertig)
 same => n,Dial(SIP/Provider/103,15)
 same => n,GotoIf($[${DIALSTATUS}=ANSWER]?fertig)
 same => n(fertig),Hangup()

exten => alarm,1,Answer()
 same => n,Playback(neueEmail)
 same => n,Hangup()
 
Hey!

Danke für die Hilfestellung, das hat soweit gut funktioniert. Nun ist es aber so das ein "ANSWER" mir nicht ausreicht, es könnte ja auch die Mailbox dran sein, es bringt natürlich nichts wenn diese die Nachricht vom Asterisk hört, und das dann als erledigt gilt. Daher frage ich per WaitExten eine "0" ab die der Benutzer drücken muss. Drückt er diese gilt der Anruf als übermittelt. Mein Problem ist momentan das wenn der Benutzer nichts drückt und in den Timeout läuft wird ein Hangup ausgeführt, und damit komme ich nicht mehr zurück um die zweite Nummer zu wählen. Weiß hier jemand Rat?
 
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.