E-Mail bei verpasstem Anruf

bvsn

Neuer User
Mitglied seit
22 Sep 2006
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Hallo Helfer,

ich möchte gerne über verpasste Anrufe per E-Mail benachrichtigt werden. Also in etwa so wie wenn jemand auf die Mailbox spricht. Ich muss also irgendwie an die Anrufe ran, bei denen der Anrufer aufgelegt hat, bevor die Mailbox rangegangen ist. Wie ich eine E-Mail generiere weiß ich aber ich weiß einfach nicht, an welcher Stelle ich das einbauen muss. Kann mir jemand auf die Sprünge helfen?

Vielen Dank im Voraus!

Christoph
 
Probier mal die h extension.

exten => h,1,Email schicken
exten => h,n,Hangup


Gruss,

Jörg
 
Hallo Jörg,

manchmal ist es doch so einfach...die h Extension, an die hatte ich einfach nicht gedacht. Ich danke dir ;-)

Gruß

Christoph

EDIT:

...das ganze hat jetzt aber noch ein paar Schönheitsfehler. Ich poste mal eben meinen code

Code:
[ankommend]
;ankommende Anrufe von bei User1 und wie verfahren werden soll!

exten => 0003872xxxx2,1,DIAL(LOCAL/user1-mobil@ankommend&LOCAL/user1-office@ankommend)
exten => user1-office,1,Dial,SIP/89|15|r
exten => user1-mobil,1,Wait(15)
exten => user1-mobil,n,Playback(/var/lib/asterisk/sounds/custom/trytoreach)
exten => user1-mobil,n,Dial,SIP/dusaccount-89/01609069XXXX|30|r
exten => user1-mobil,n,Goto,user1-mobil-${DIALSTATUS}|1
exten => user1-mobil-BUSY,1,voicemail,b89
exten => user1-mobil-BUSY,2,Hangup
exten => user1-mobil-NOANSWER,1,voicemail,u89
exten => user1-mobil-NOANSWER,2,Hangup

;ankommende Anrufe bei User2 und wie verfahren werden soll!

exten => 00038780xxxx,1,DIAL(LOCAL/user2-mobil@ankommend&LOCAL/user2-office@ankommend)
exten => user2-office,1,Dial,SIP/88|15|r
exten => user2-mobil,1,Wait(15)
exten => user2-mobil,n,Playback(/var/lib/asterisk/sounds/custom/trytoreach)
exten => user2-mobil,n,Dial,SIP/dusaccount-88/01609069XXXX|30|r
exten => user2-mobil,n,Goto,user2-mobil-${DIALSTATUS}|1
exten => user2-mobil-BUSY,1,voicemail,b88
exten => user2-mobil-BUSY,2,Hangup
exten => user2-mobil-NOANSWER,1,voicemail,u88
exten => user2-mobil-NOANSWER,2,Hangup

;gilt momentan fuer alle verpassten Anruf und wird daher auf logging geschickt.
exten => h,1,System(echo "Verpasster Anruf von ${CALLERIDNUM} am `date`" | mail -s "Anruf verpasst" [email protected] &)
exten => h,n,Hangup

Unanbhängig ob man nun User1 oder User2 nicht erreicht hat, wird ja die h Extension ausgeführt. Daher kann ich die E-Mail momentan nur auf eine allgemeine E-Mail-Adresse senden, würde sie aber gerne user bezogen an verschiedene Adressen senden. Muss ich das dann irgendwie anhand einer if Bedingung ermitteln auf welchen Anschluss angerufen wurde oder geht das auch irgendwie anders?

Was noch dazu kommt. Momentan wird die E-Mail gleich dreimal verschickt. Ich nehme an, das liegt daran, dass ich über local channels mehrer Telefone klingeln lassen und es mehrere Hangups gibt. Aber wie löse ich das?

Bin für jeden Hinweis dankbar!

Gruß

Christoph
 
Zuletzt bearbeitet:
Hi Christoph

warum definierst Du die einzelnen "Incomings" nicht auch in einzelnen Context`en wo Du ja dann pro Context einen " exten => h,1,Email schicken "
beifügen kannst?
 
Sorry, ich verstehe das noch nicht so ganz. Wenn ich den ankommend Kontext in der extensions.conf in zwei einzelne Kontexte aufteile..wie muss ich dann die sip.conf abändern in der ja angegeben wird, dass eingehende anrufe in den ankommend Kontext der extensions.conf geleitet werden sollen.

Irgendwie verwirrt mich der Syntax dieser beiden Dateien immer wieder :-S
 
Der einzelne Context für alle Sip "incomings" bleibt natürlich auch im Dialplan. Du leitest die Anrufe jedoch nach einem "Answer" weiter in spezifische Contexte. Also etwa so:

[ankommend]
exten => 0003872xxxx,1,Answer
exten => 0003872xxxx,2,Goto(usereins,s,1)

exten => 00038780xxxy,1,Answer
exten => 00038780xxxx,2,Goto(userzwei,s,1)

...

[usereins]
exten => s,1,Dial(wasauchimmer)
...
exten => h,1,Email schicken
...
usw
...

MfG
 
Zuletzt bearbeitet:
Ah, verstehe! Probiere ich nachher gleich mal aus. Vielen Dank!

Gruß

Christoph
 
Nachfrage

Hi,

auch wenn der Thread schon was älter ist.

Wie kann ich es realisieren, dass immer eine Mail an die E-Mail Adresse geschickt wird, dessen interne Nummer angerufen wurde?

Hier ist mein Code, der aber nur auf eine E-Mail Adresse geht und nicht anzeigt, wer versucht hat wen anzurufen.

Code:
exten => _555X.,1,NoCDR()
exten => _555X.,n,Dial,SIP/${EXTEN}|10|tr
exten => _555X.,n,Voicemail(${EXTEN})
exten => h,1,System(echo "Verpasster Anruf von ${CALLERID(num)} am `date`" | mail -s "Anruf verpasst" [email protected] &)
exten => h,n,Hangup

Und falls es jemand weiß:

Wie stelle ich einen "Absender" der E-Mail ein? Dass z.B. in der "Von" Zeile "Asterisk" steht? Hierzu habe ich im Forum leider nichts gefunden.

Danke für Eure Hilfe.
 
Du könntest "mutt" installieren und es per Kommandozeile mit der Option -F und einem dazu passenden .muttrc file füttern, der dann die Absenderdetails enthält. Ist einfach und funktioniert.

Code:
mutt -s "Test mail" -a /tmp/file.tar.gz [email protected] < /tmp/message.txt
mutt -a file.mp3 -s "neue Nachricht" [email protected]
 
Klingt erstmal nicht schlecht, aber ich habe leider nur einen VHost und kann nichts nachinstallieren, weil man dann ja auch "fast immer" den Kernel compilieren muss. UNd das geht leider nicht.

Aber es muss doch auch über die Extensions oder eine andere .conf eine Zuordnung geben oder? Schließlich funktioniert das ja über die Mailbox auch einwandfrei.
 
Also ich habe es momentan so

Code:
exten => _555X.,1,NoCDR()
exten => _555X.,n,System(echo "Es wurde ein interner Anruf von ${CALLERID(num)} an ${EXTEN} am `date` abgesetzt" > /tmp/asteriskmail)
exten => _555X.,n,System(mail -s Anrufbenachrichtigung [email protected] < /tmp/asteriskmail)
exten => _555X.,n,Dial,SIP/${EXTEN}|10|tr
exten => _555X.,n,Voicemail(${EXTEN})

Das Problem ist ja hier nur, dass immer nur die eingetragene E-Mail Adresse der Empfänger ist. Aber es müsste doch acuh möglich sein, dass derjenige, der angerufen wird (also der EXTEN) eine Mail kriegt. Seine Mailadresse ist ja über die Voicemail hinterlegt. Oder kann man die Mailadresse auch in der sip.conf angeben?

Danke für Eure Hilfe.
 
mach doch in der extensions.conf einfach unter dem context general entsprechende variablen...z.b.für die EXTEN 20

[globals]
[email protected]

welche du nacher als mail-empfänger verwendest....

_555X.,n,System(mail -s Anrufbenachrichtigung ${EXTEN}mail < /tmp/asteriskmail)


oder ist das nicht das was du suchst...?
 
Klingt gut. Aber zum besseren Verständnis, weil ich noch viel zu Lernen habe beim Thema Asterisk. Wenn eine interne Nummer 5551234 ist, dann trage ich unter globals z.B.

[email protected]

ein ?? Wieso denn 5551234mail ???


Aber wie weiß denn der Befehl:

_555X.,n,System(mail -s Anrufbenachrichtigung ${EXTEN}mail < /tmp/asteriskmail)

dann, an welche der Globals er das mailen muss? Aufgrund der internen CallerID?

Danke für die Hilfe.
 
Zuletzt bearbeitet:
sorry, habe aus der hektick heraus zwei klammern vergessen....dein system-string sollte so aussehen;

_555X.,n,System(mail -s Anrufbenachrichtigung ${${EXTEN}mail} < /tmp/asteriskmail)

zu deinen fragen:
ich nehme an, dass 5551234 deine EXTEN ist, also die nummer die gewählt wird. diese nummer ist ja wärend dem ablauf bereits an einer festen variable vergeben => ${EXTEN} trotzdem brauchst du die nummer, um anhand von dieser die entsprechende mail-adresse zu vergeben...also trägst du alle nummern (welche du als EXTEN verwendest) alle im "globals" context ein und hängst in der variablenbezeichnung zusätzlich irgendwas an (z.b. mail) an, damit du sozusagen die variable 5551234mail also "${${EXTEN}mail}" verwenden kannst, um auf die richtige email-adresse zu verweisen..denn ${EXTEN} "alleine" ist ja bereits standardmässig vergeben und kann für die "email-adresse-zuordnung" nicht gebraucht werden...

der system befehl löst dann, je nach dem welche nummer gewählt wird, die richtige variable aus...
also;

[email protected] (für nummer 5551234)
[email protected] (für nummer 5551235)
....usw.....

verstanden...?
 
KLAPPT SUPER!!!

Danke für die Hilfe und die gute Erklärung. Wieder was dazu gelernt.

Viele Grüße
 
freut mich :)

MfG
 
Hallo habe das auch mit der h extension gemacht nur leider funktioniert es bei mir nicht. Der schickt mir für jeden anruf eine Mail. Das heißt wenn niemand ran geht dann bekomme ich eine Mail, dass ist ja auch okay. Wenn ich aber mit jemanden Telefoniere und wir dann das Gesräch beenden bekomme ich auch eine Mail. Was mache ich falsch?

Code:
QSCUSERID1=01234567890
PHONE1=2000

[from-sip]
exten => _XX.,1,NoOp
exten => _XX.,2,Set(tmpcid=${CUT(SIP_HEADER(TO),':',2)})
exten => _XX.,3,Set(BNUMBER=${CUT(tmpcid,'@',1)})
exten => _XX.,4,Goto(qsc-incoming,${BNUMBER},1)

[qsc-incoming]
exten => ${QSCUSERID1},1,Dial(SIP/${PHONE1},20
exten => h,1,System(echo "Verpasster Anruf von ${CALLERID(num)} fuer ${BNUMBER} am `date`" | mail -s "Anruf verpasst" [email protected] $)
exten => h,n,Hangup
 
in die h extension kommst du immer, auch wenn der Anruf beantwortet wurde, das musst Du dann mit einem GotoIf machen


Code:
[qsc-incoming]
exten => ${QSCUSERID1},1,Dial(SIP/${PHONE1},20
exten => ${QSCUSERID1},n,GotoIf($["${DIALSTATUS}"!="ANSWER"]?sendmail:h|1)
exten => ${QSCUSERID1},n(sendmail),System(echo "Verpasster Anruf von ${CALLERID(num)} fuer ${BNUMBER} am `date`" | mail -s "Anruf verpasst" [email protected] $)
exten => h,n,Hangup

sollte so funktionieren, (habe ich allerdings nicht getestet)

Gruß
Klaus
 
1. Prüfe mit ${DIALSTATUS} und entscheide dann z.B. mit GotoIf() oder ExecIf() ob die mail verschickt werden soll oder nicht
2. Streiche "h,n,Hangup" denn das Aufhängen wurde bereits ausgelöst
 
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.