Senioren-Weckruf

Stefan8

Mitglied
Mitglied seit
6 Okt 2005
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Hallo,
ich möchte Senioren regelmäßig mit einem Anruf wecken und je nach Reaktion dann entsprechend im Dialplan reagieren.
Fall 1: Senior drückt am Handy auf "Anruf Abweisen" = Normalfall = alles ok, Eintrag "alles ok" in einem Logfile.
Fall 2: Senior nimmt den Anruf an, hört eine Ansage "Guten Morgen" und kann einen Wunsch aufsprechen > Weiterleitung per Mail + Eintrag "alles ok + voicemail" im Logfile.
Fall 3: Nach einigen Malen durchklingeln entweder keine Reaktion oder dauernd besetzt > Warnmail an einen Mailverteiler + Eintrag "besetzt/unerreichbar" im Logfile.
Hingekriegt hab ich den Anruf über Callfiles, die aus dem Cron ins Outgoing-Verzeichnis kopiert werden und dann in der extensions.conf im Context [wecken] landen.
Dort steht testhalber folgendes:
Code:
[wecken]
exten => _.,1,Answer
exten => _.,n,wait,1
exten => _.,n,playback,demo-thanks
exten => _.,n,Hangup
So weit funktioniert das auch. D.h. ich kriege zu den Zeiten laut Cron meinen Anruf auf der richtigen Nummer.
Da möchte ich jetzt die Verzweigung bzw. Result-Handling aus der Anforderung oben hinkriegen, stehe aber irgendwie auf dem Schlauch, da die Verbindung zu diesem Zeitpunkt ja bereits besteht. Ich hab also irgendwo einen Denkfehler.
Wie komme ich hier weiter?
Ciao
Stefan
 
du kannst zb. ne if abfrage machen. nach dem motto if abweisen ....system echo blalba, else if timed out.....system echo tot, else if answer....play wünsche.


also so inner art würde ich das machen
 
Guck Dir mal die Möglichkeiten der Queue Verwaltung an, denke da kann man einges mit abdecken.

jo
 
Hi,

irgendwie steh ich immer noch auf dem Schlauch.
Vielleicht fang ich mal von vorne an, was momentan wie läuft:

Ich hab folgendes Callfile callfilewecken1a gemacht:
Code:
Channel: Local/4711@default
Context: default
Extension: 4711
MaxRetries: 0
RetryTime: 30
WaitTime: 60
Priority: 1

Dies wird über den Crontab hier testhalber um 18.10 temp. kopiert und dann ins outgoing-Verzeichnis gemoved (weil ich die Erfahrung gemacht habe, dass direktes Kopieren ins Outgoing zur Abarbeitung halbkopierter Files führt):
Code:
10 18 * * * root cp /etc/asterisk/call/callfilewecken1a /etc/asterisk/tmp
11 18 * * * root mv /etc/asterisk/tmp/callfilewecken1a /var/spool/asterisk/outgoing

Jetzt landen wir in der extensions.conf innerhalb von[default] bei 4711:
Code:
;callfilewecken1a kommt mit extension 4711 herein
exten => 4711,1,Answer 
exten => 4711,2,Wait(0) 
exten => 4711,3,System(cp /etc/asterisk/call/callfilewecken1b /etc/asterisk/tmp)
exten => 4711,4,System(mv /etc/asterisk/tmp/callfilewecken1b /var/spool/asterisk/outgoing/) 
exten => 4711,5,Hangup

Von dort wird nach derselben Methode das "eigentliche" Callfile callfilewecken1b ausgelöst:
Code:
Channel: SIP/062xxxxxxx@testaccount
Callerid: 49180xxx
Context: wecken
Extension: s
SetVar: CALLERIDNUM=49180xxx
MaxRetries: 3 
Retrytime: 10 
WaitTime: 10
Priority: 1

Von dort geht's in den Context Wecken, der die Verzweigung machen soll:
Code:
[wecken]
;context von callfilewecken1b kommend ursprünglich aus extension 4711
exten => _.,1,Answer
exten => _.,n,Goto,rwecken-${DIALSTATUS}|1 
exten => _.,n,wait,1
exten => _.,n,playback,demo-thanks
exten => _.,n,Hangup

;wenn besetzt
exten => rwecken-BUSY,1,voicemail,u39 
exten => rwecken-BUSY,2,Hangup 

;wenn keine Antwort
exten => rwecken-NOANSWER,1,voicemail,u39 
exten => rwecken-NOANSWER,2,Hangup

;wenn nicht angemeldet
exten => rwecken-CHANUNAVAIL,1,voicemail,u39
exten => rwecken-CHANUNAVAIL,n,Hangup

Soweit geht das auch. Der Anruf kommt rein, aber wenn ich jetzt abhebe, dann passiert nichts mehr (Hörer ist tot).

Und hier hab ich jetzt auch denkmäßig einen Aussetzer: ich komme doch in den Context nur dann rein, wenn die Verbindung schon besteht, oder??? Ich will ja aber schon vorher auswerten...

Auf der CLI sieht das auch herzlich wenig erfrischend aus:
Code:
    -- Goto (wecken,rwecken-,1)
    -- Executing Answer("SIP/xxx-10d5", "") in new stack
    -- Executing Goto("SIP/xxx-10d5", "rwecken-|1") in new stack
    -- Goto (wecken,rwecken-,1)
    -- Executing Answer("SIP/xxx-10d5", "") in new stack
    -- Executing Goto("SIP/xxx-10d5", "rwecken-|1") in new stack
    -- Goto (wecken,rwecken-,1)
    -- Executing Answer("SIP/xxx-10d5", "") in new stack

Gruß
Stefan
 
(weil ich die Erfahrung gemacht habe, dass direktes Kopieren ins Outgoing zur Abarbeitung halbkopierter Files führt):

Das steht übrigens in jeder Doku zu Callfiles :wink:
 
Gibt es auch in einer Doku Antwort auf meine Frage? ;-)
 
Hallo,
hat keiner eine Idee für die konkrete Umsetzung? Oder bin ich im falschen Forum? Dann bitte verschieben.
Gruß
Stefan
 
So etwas habe ich noch nicht probiert, würde aber als erstes versuchen das Answer in [wecken] wegzulassen und dann mit Goto oder GotoIf je nach Dialstatus verzweigen.

Gruß,
Tin
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,864
Beiträge
2,303,155
Mitglieder
378,516
Neuestes Mitglied
jpttpee