Mail bei nicht angenommenen Anrufen, die nicht beim Anrufbeantworter landen?

mamue

Neuer User
Mitglied seit
4 Sep 2004
Beiträge
71
Punkte für Reaktionen
0
Punkte
0
Hallo,
ich habe http://www.ip-phone-forum.de/archive/index.php/t-65378.html gelesen, aber dort scheint entweder immer eine Mail geschickt zu werden, oder aber der Anrufer landet bei "Voicemail".
Mein Grandstream scheint nicht die Uhrzeit der Anrufer anzeigen zu können, also würde ich gerne bei einem verpassten Anruf eine Mail an den Angerufenen schicken.
Code:
exten => 4141,1,SetLanguage(de)
;10.19.0.6 schaltet nach weniger als 60 Sekunden den Anrufbeantworter ein:
exten => 4141,n,Dial(IAX2/kupfer:[email protected]/4141,60)
;Kann ich hier sehen, ob der Anruf beantwortet wurde, sei es von "Voicemail",
; sei es vom Ziel-Teilnehmer?
exten => 4141,n,NoOp("NoOp")
exten => 4141,n,Hangup()

Wenn ich anstelle des NoOp ein execIF ausführen könnte, wäre ich im Prinzip fertig. Aber wie bekomme ich raus, ob der Teilnehmer abgenommen hat?

Danke,
mamue
 
Code:
exten => bla,1,dial,<irgendwas>
exten => bla,2,goto,r-${DIALSTATUS}|1

exten => r-BUSY,1,noop, "es war besetzt"
exten => r-NOANSWER,1,noop, "es hat keiner abgenommen"

Anstatt "noop, es hat keiner abgenommen" kannst Du natürlich auch ein "system,<sende eine email>" einbauen.

Doku lesen hilft ;)
 
auch wenn es deine Frage gerade nicht beantwortet: nach ein paar Versuchen bin ich dazu übergegangen, einfach "jeden" Anruf mit sichtbarer Nummer zu mailen. Mein Telefonaufkommen ist allerdings niedrig
Zuletzt hat dieser Mechanismus dann mein Telefon beim Nichtklingeln wegen Akkuproblemen ertappt :)
 
betateilchen schrieb:
Code:
exten => bla,1,dial,<irgendwas>
exten => bla,2,goto,r-${DIALSTATUS}|1

exten => r-BUSY,1,noop, "es war besetzt"
exten => r-NOANSWER,1,noop, "es hat keiner abgenommen"

Anstatt "noop, es hat keiner abgenommen" kannst Du natürlich auch ein "system,<sende eine email>" einbauen.

Doku lesen hilft ;)
Naja, das Versenden der Mail sollte kein Problem werden. Bevor ich nicht eine Meldung auf der Konsole bekomme, brauche ich damit aber wohl nicht anzufangen. Ihc habe gerade r-NOANSWER getestet und bekomme nichts. Ich habe ein bisschen gegoogelt und bin auf http://www.ip-phone-forum.de/showthread.php?p=495386 gestoßen. Dort steht: "NOANSWER bedeutet, daß er in der vorgegebenen Rufzeit (im Beispiel 30 Sekunden) nicht abgenommen hat.". Das hieße, der Anrufer lief in den Timeout.
Das ist es nicht, was ich wollte. Ein Anrufer, der es vielleicht nur fünf mal klingeln ließ und danach aufgelegt hat, soll per Mail verschickt werden (die Daten seines Anrufs). So wie ich das sehe, macht "r-NOANSWER" das nicht, oder?

Danke,
mamue

P.S.: Eine Mail bei jedem Anruf ist eine interessante Idee, aber ich glaube, das würde zu viel werden.
 
mamue schrieb:
Das ist es nicht, was ich wollte. Ein Anrufer, der es vielleicht nur fünf mal klingeln ließ und danach aufgelegt hat, soll per Mail verschickt werden (die Daten seines Anrufs). So wie ich das sehe, macht "r-NOANSWER" das nicht, oder?

Himmel Arsch und Zwirn :motz: wieso muß man den Leuten hier immer alles vorkauen und das Ausgekotzte dann auch noch auf dem Silbertablett präsentieren? Reicht es nicht, auch einfach mal einen Denkanstoß zu geben?

Lies halt endlich mal die Doku zu ${DIALSTATUS} dann wirst Du rausfinden, daß r-NOANSWER das nicht tut, was Du willst, aber r-CANCEL genau das ist was Du suchst.

CANCEL: Call is cancelled. The dial command reached its number but the caller hung up before the callee picked up.
 
Ich verstehe nicht, warum das nicht funktioniert:
Code:
exten => 4141,1,Dial(IAX2/kupfer:[email protected]/4141,60)
exten => 4141,2,Goto,r-${DIALSTATUS}|1

exten => r-BUSY,1,NoOp( "es war besetzt" )
exten => r-BUSY,2,Hangup()

exten => r-NOANSWER,1,NoOp( "es hat keiner abgenommen" )
exten => r-NOANSWER,2,Hangup()

exten => r-CANCEL,1,NoOp( "es hat keiner abgenommen" )
exten => r-CANCEL,2,Hangup()

exten => r-CHANUNAVAIL,1,NoOp( "CHannel unavailable" )
exten => r-CHANUNAVAIL,2,Hangup()
Wenn ich jetzt die Nummer anrufe und 60 Sekunden abwarte, wird nach r-CHANUNAVAIL verzweigt. Wenn ich hingegen nach 5 Sekunden auflege, wird nicht nach r-CANCEL verzweigt.
Nach 60 Sekunden (UNAVAIL):
Code:
Executing Goto("CAPI/ISDN1/4141-33", "r-CHANUNAVAIL|1") in new stack
Goto (default,r-CHANUNAVAIL,1)
Executing NoOp("CAPI/ISDN1/4141-33", " "CHannel unavailable" ") in new stack
Wenn ich nach 5 Sekunden auflege steht im CDR-csv/Master.csv:
Code:
"","","4141","default","","CAPI/ISDN1/4141-37","IAX2/10.18.0.6:4569-1",
"Dial","IAX2/kupfer:[email protected]/4141|60",
"2007-09-09 16:05:56",,"2007-09-09 16:06:09",13,0,
"NO ANSWER","DOCUMENTATION"
Ich bekomme aber eben keine Meldung, keine Ausgabe und kann daher auch keinen Dialstatus auswerten. Die Priorität '2' (Goto,r-${DIALSTATUS}|1) scheint nicht ausgewertet zu werden, wenn der Anrufer auflegt?

Danke,
mamue

Version: 1.2.13-BRIstuffed-0.3.0-PRE-1s
 
einmal um die Ecke gedacht:
1) vor dem dial ein AGI aufrufen undsich selbst überlassen. Achtung - muss wohl alle files schliessen und
sich gegen Signale wehren, damit das gehen kann
2) beim Dial ein Makro angeben, das beim erfolgreichen Verbindungsaufbau ausgeführt wird.
Wenn jetzt 1) passiert und nicht innerhalb 60 Sekunden auch 2) hat der Anrufer aufgegeben.

alternativ: manager skript
 
Ich werde den Hinweis mit dem Manager-API verfolgen. Ich wollte mich ohnehin bald mit der Java-API zu Asterisk befassen. Soweit ich die API verstanden habe, sollte das (und vieles mehr) machbar sein.
Der andere Vorschlag würde sicherlich funktionieren (soweit ich das beurteilen kann), gefällt mir persönlich aber nicht ganz so gut.

Danke,
mamue
 
mamue schrieb:
Ich verstehe nicht, warum das nicht funktioniert:
Version: 1.2.13-BRIstuffed-0.3.0-PRE-1s

Hast Du auch diesen kleinen, aber wichtigen Hinweis in der Doku beachtet:

Note: In order to obtain useful DIALSTATUS information when dialing a peer you will need to have qualify=yes in that peer's definition (e.g. in sip.conf or iax.conf).

Für ISDN Verbindungen gibt es übrigens auch noch eine Variable ${HANGUPCAUSE}
 
mamue schrieb:
Die Priorität '2' (Goto,r-${DIALSTATUS}|1) scheint nicht ausgewertet zu werden, wenn der Anrufer auflegt?

ja, dann wird nur noch zur h extension gesprungen. Der CHANNEL ist dann "tot" weil der Anrufer aufgelegt hat.

Allerdings steht Dir in der h extension der DIALSTATUS für weitere Auswertungen zur Verfügung so dass man das machen kann was Du möchtest.
 
Danke, das würde gehen. Allerdings habe ich in 'h' nicht mehr die gewählte extension. Man könnte die sicher vorher irgendwo hin schreiben, oder aber gleich den letzten Datensatz aus der log-Datei lesen. Eine Variable zu setzen, wird IMHO nicht gut funktionieren, denn es werden sicherlich des öfteren zwei Anrufer gleichzeitig aktiv sein.
Das sollte aber so schlimm nicht sein, mal sehen, ob sich das machen lässt.

Gruß
mamue
 
Variablen sind i.d.R. nur im laufenden CHANNEL gültig. Du kannst EXTEN also problemlos in einer Variable speichern und in der h extension verwenden.
 
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,538
Beiträge
2,293,774
Mitglieder
378,048
Neuestes Mitglied
jamesjonesjj10