E-Mail Benachrichtigung bei verpasstem Anruf?

Hallo,

ich würde gerne immer eine E-Mail bekommen, wenn ich einen Anruf verpasst habe. Ist dies möglich? Danke

hat keiner eine Idee? Mir wäre das sehr wichtig. Da ich so selten im Büro bin. Oder geht das vielleicht sogar schon mit Bordmitteln?

ich habe im Internet folgendes gefunden:
In der extensions.conf folgendes eintragen:
exten => 12345,1,System(echo “${DATETIME}: ${CALLERID} wollte was von dir.” | nail -s Anrufbenachrichtigung Meier.Kurt@myhost.de -)

Kann ich das einfach abändern? oder muss ich das über die GUI machen?

Guten Morgen,

du könntest bei den Benutzers als Aktion nachher mit dem Rufstatus keine Antwort (oder wie es für dich passend ist) auf ein Skript verweisen, was genau das tut.
Sprich du legst dir zuerst unter Erweitert->Skripte ein Skript (ohne Durchwahl) an, dort kannst du dann mit der s als Extension arbeiten und deinen oben genannten System-Call einbinden. Diese Skript bindest du dann als Aktion bei deinen Benutzern ein und verweist auf die verwendete Extension.
Du solltest noch zuvor deinen Mail-Server unter den Diensten konfiguriert haben.

Grüße
Markus

Guten Morgen Markus,

wenn man in der Aktion “nachher” auf das Skript verweist wird es nur ausgeführt wenn das Timeout erreicht wird, wenn aber der Anrufer vorher auflegt dann scheint der Anruf zwar im MD Client als verpasst auf aber das Skript wurde natürlich nicht ausgeführt.

Wie könnte man dies lösen? Praktischer wäre so eine Funktion dass der Benutzer selbst im Client eine eMail Benachrichtigung setzen könnte.

Danke!
Gruß
Mirko

Guten Morgen,

du könntest für den Fall, dass der Anrufer auflegt, den Einstiegspunkt im Hangup-Skript def_hangup (siehe Erweitert->Skripte) nutzen. Über die App DumpChan kannst du dir alle Variablen ausgeben lassen. Wenn du über die Systemeinstellung sys.asterisk.configure.extensions.dialoptions um g erweiterst, wird die Variable MDC_CALLEE_HANGUP gesetzt.
Darauf könntest du prüfen und dann deine Email verschicken.

Gruß
Markus

Guten Morgen,

danke für den Tipp ich werde es versuchen umzusetzen. :confused:

Gruß
Mirko

Hallo gumpix,

habe hier was fertig, was dir vielleicht hilft. In diesem Skript (Einstieg über die Hangup-Extension) wird die Mail immer ausgelöst wenn der Anruf beendet und vorher nicht beantwortet worden ist (voicemailboxen, Ansagen etc. sind also nicht abgedeckt). Die E-Mail wird über die Rest-Schnittstelle vom User ausgelesen und an den User versendet der ursprünglich angerufen wurde.

Skript def_hangup

exten => s,1,NoOp(Hangup Macro)
exten => s,n,GosubIf($ “${DIALSTATUS}”!=“ANSWER” ]?custom-missed,s,1)
exten => s,n,NoOp(>>>def_hangup:: EXTEN: ${ARG1} DIALSTATUS: ${ARG2} QUEUESTATUS: ${ARG3} REASON: ${ARG4})

Skript custom-missed

exten => s,1,NoOp(--------->> CHECK CALLEENUM: ${MDC_DIALCALLEENUM} <<--------)
; specify extensions here
same => n,GotoIf($ “${MDC_DIALCALLEENUM}” = “23” ]?getmail,1)
same => n,GotoIf($ “${MDC_DIALCALLEENUM}” = “42” ]?getmail,1)
same => n,Return()

exten => getmail,1,NoOp(GET MAIL)
same => n,Set(TEMP_EXTEN=${MDC_DIALCALLEENUM})
same => n,Set(mail=${SHELL(/etc/admin/getmail.py ${MDC_CALLER_NUM})})
same => n,NoOp( ----> ${mail})
same => n,GotoIf($ “${MAIL}” = “NONE” ]?hangup,1)
same => n,GotoIf($ “${MAIL}” != “” ]?mail,1)
same => n,Return()

exten => mail,1,NoOp(SCHREIBE EMAIL AN: ${MAIL})
same => n,GoSub(clearname,1)
same => n,system(echo “” | mail -s “Mobydick: Verpasster Anruf von ${CALLERID(num)} ${CALLERID(name)} um ${STRFTIME(${EPOCH},%Y-%m-%d %H:%M:%S)}” ${MAIL})
same => n,Return()

exten => clearname,1,NoOp(CLEAR CID-NAME)
same => n,GotoIf($ “${CALLERID(name):0:1}” != “0” ]?return)
same => n,Set(CALLERID(name)=unbekannt)
same => n(return),Return()

python skript für E-Mail Adressenermittlung in diesem Beispiel unter /etc/admin/getmail.py

#!/usr/bin/python

import urllib2
import json
import sys

user = ‘moybdickcmd’
password = ‘mobydick’
url = ‘http://127.0.0.1/services/voicemailbox/’ + sys.argv[1]

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(
None, url, user, password
)
auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)

data = json.loads(urllib2.urlopen(url).read())

print data’016voi_email’]

Hallo Tom,

großartiges Skript, vielen herzlichen Dank!
Ich mußte aber eine Zeile abändern:

von
same => n,Set(mail=${SHELL(/etc/admin/getmail.py ${MDC_CALLER_NUM})})
nach
same => n,Set(mail=${SHELL(/etc/admin/getmail.py ${MDC_DIALCALLEENUM})})

MDC_CALLER_NUM ist bei mir leer.

Wozu ist diese Zeile?
same => n,Set(TEMP_EXTEN=${MDC_DIALCALLEENUM})

Vielen Dank nochmal!

Gruß
Mirko

Ok, cool.

same => n,Set(mail=${SHELL(/etc/admin/getmail.py ${MDC_CALLER_NUM})})
nach
same => n,Set(mail=${SHELL(/etc/admin/getmail.py ${MDC_DIALCALLEENUM})})

Kann gut sein, dass sich hier noch alte Variablen eingeschlichen haben, habe ich jetzt nicht im Kopf :slight_smile:

Wozu ist diese Zeile?
same => n,Set(TEMP_EXTEN=${MDC_DIALCALLEENUM})

Hm… ist an dieser Stelle tatsächlich sinnlos :wink: kannst du einfach rausnehmen.

Hallo Tom,

das Skript funktioniert perfekt! :smiley:

Vielen Dank!!!

cu
Christoph

Hallo Tom,

irgendwas ist ja immer… :rolleyes:

Nachdem die eMailbenachrichtigung bei direkten Anrufen auf die im Skript eingetragenen Nebenstellen richtig gut funktioniert, haben wir versucht, das auch für eine Team- Nebenstelle einzurichten. Das funktioniert leider nicht. Nach Beendigung eines erfolgreich geführten Telefonates wird eine Verpasst- eMail gesendet mit der Nummer des Anrufers, also so, als wäre der Anruf verpasst.

Mit einem Blick in die CLI wird auch schnell klar warum. Die Durchwahl der Teamnebenstelle erhält nach Beendigung den Dialstatus ““ womit ist die Bedingung “!ANSWER“ erfüllt ist und die eMail geht raus.
Da die CLI ausgibt, welche Nebenstelle das Gespräch angenommen hat, habe ich versucht, das Skript entsprechend anzupassen, bin gescheitert weil ich nix Ahnung :slight_smile:

Hast Du einen Tipp für mich…?

Vielen Dank!

cu
Christoph

Hi Christoph,

bei Teams sieht das ganze deutlich anders aus, die Queue Applikation ist in sich geschlossen und man kann deshalb nicht ohne weiteres sagen ob der Anruf in der Queue beantwortet worden ist oder nicht.

Man könnte eine Abfrage gestalten wenn die Queue auf ‘Freizeichen’ statt ‘Musik’ steht, dann wäre bekannt das der Anruf sich zuletzt in der Queue befunden hat und noch von niemanden (auch nicht Musik oder Ansage) beantwortet wurde. Wäre das bei dir der Fall?

Tom

Hallo Tom,

vielen Dank für Deine Antwort!
Genau so wie Du es beschreibst, ist es bei uns der Fall. Die Queues stehen alle auf Freizeichen.

cu
Christoph

In dem Fall kannst du in der hangup extension prüfen ob der Kanal zum einen von deiner Queue kommt und zum anderen bislang unbeantwortet ist. So in der Art (für queue 5000):

exten => s,n,Set(chanstate=${CHANNEL(state)})
exten => s,n,GoToIf($ “${MDC_EXTEN}” = “5000” & “${CHANSTATE}” = “Ring” ]?custom-missed,s,1)

Ich habe das ganze Skript inkl. dem queue Check auch mal hier zur Verfügung gestellt

Hallo Tom,

vielen Dank für Dein Antwort und das Skript.
Werde es bei Gelegenheit testen und dann berichten.

cu
Christoph

Hallo,

ich weiß das Thema hängt hier schon ein weilchen - bei uns gab es die gleiche Anforderung und ich war froh dafür ein fertiges Script gefunden zu haben - ich hatte es bei unserem alten Asterisk ähnlich gelöst. Aber bei weitem nicht so komfortabel :slight_smile:

Mir ist nur noch eine Sache aufgefallen an der ich gerade rumgrüble…

Bei uns haben manche User mehere Telefone - soll vorkommen :wink: - und eben diese User bekommen dann pro Telefon eine Emailbenachrichtigung. Auch wenn ein Telefon ran geht kommt für die beiden anderen in diesem Moment die Meldung, dass der Anruf verpasst wurde. Hab ich das nur an einer falschen Stelle eingeklinkt - oder ist das tatsächlich ein “Design”-Problem?

MfGrüßle,
Jesko

Hallo Jesko,

das ist mal eine gute Gelegenheit, wie versprochen, zu berichten.
Wir haben die Skripte seit einigen Wochen bei uns selbst und bei Kunden im Einsatz - und sie funktionieren perfekt.
An dieser Steller nochmals vielen DANK an TOM!!!

Ich selbst habe an meinem Benutzer auf unserer eigenen Anlage 4 Telefone hängen, (Telefone kann man nie genug haben :slight_smile: )
kann aber nicht bestätigen, dass es eine eMail (verpasster Anruf) für einen beantworten Anruf gibt, egal an welchem Telefon
ich das Gespräch entgegen nehme. Ebenfalls egal ist auch, ob ein Anruf direkt auf meine Duchwahl kommt oder mich über
eine Warteschlange erreicht.

Wenn Du eine eMail nach erfolgr. beantwortetem Anruf erhälst, dann trifft die Bedingung ${CHANSTATE}" = “Ring” bzw. ${DIALSTATUS}"!=“ANSWER” in Deiner Konfig nicht zu.
Hast Du schon mal in der CLI nachgeschaut wie der entsprechende Status nach Beendigung eines Telefonats ist?

Ich stelle Dir mal ein Teil von unserem def_hangup Skript ein. Dann kannst Du mal mit Deinem vergleichen…


exten => s,1,NoOp(Hangup Macro)
exten => s,n,Set(chanstate=${CHANNEL(state)})

; Teams (Warteschlangen)
exten => s,n,GoToIf($ "${MDC_EXTEN}" = "93" & "${CHANSTATE}" = "Ring"  ]?custom-missed,s,1)


; Benutzer (direkte DW)
;DW Christoph
exten => s,n,GoToIf($ "${MDC_EXTEN}" = "32" & "${DIALSTATUS}"!="ANSWER" ]?custom-missed,s,1)


exten => s,n,NoOp(>>>def_hangup:: EXTEN: ${ARG1} DIALSTATUS: ${ARG2} QUEUESTATUS: ${ARG3} REASON: ${ARG4})


cu
Christoph

Hallo Tom,

kannst Du mir das noch genauer erklären, wie ich wo was eintragen muss?
Und wie genau die Reihenfolge beim Abwerfen ist
Bin noch nicht wirklich drinnen in der Materie, würde das “Feature” aber gerne nutzen!

Habe eine MobyDick mit v7.11.1 und Nutzer mit Dreistelliger Durchwahl.

Vielen Dank im vorraus

Danke, habs gelöst.

Jedoch habe ich auch das Problem, dass wenn der CALL an eine Rufgruppe geht, alle eine Mail erhalten auch wenn einer in der Gruppe das Gespräch abgenommen hat.
Vielleicht findet sich da ja noch eine Lösung.

Gruß
Linuxuser