Pascom 17.10 & 18.03 - Benachrichtigung per E-Mail bei verpassten Anrufen

Ich glaube, mit der 18er hat sich da was geändert. Es gibt ja journalctl mit diversen Parametern.

Inzwischen konnte ich das Problem allerdings auch eingrenzen und lösen. Ich hatte das von @radek gepostete Skript verwendet. Dieses enthält allerdings Syntaxfehler. Die habe ich nun beseitigt und alles ist schick. Ich werde das Skript nun noch ein wenig hübsch machen und dann hier posten für alle, die in der Zukunft Bedarf haben.

Gruß
Michael

Hallo Noses,
ich wäre dir sehr Dankbar wenn du dein Script hier posten könntest ich habe das gleiche Problem und noch keinen Erfolg

vielen Dank

Hallo wir haben ein funktionierendes Script ( als def_hangup)

exten => s,1,NoOp(>>>def_hangup:: EXTEN: ${ARG1} DIALSTATUS: ${ARG2} QUEUESTATUS: ${ARG3} REASON: ${ARG4})
exten => s,n,ExecIf($[("${MDC_EXTEN}" = “7355”)&("${CHANNEL(state)}" = “Ring”)]?System(echo “Hallo”, “am ${STRFTIME(${EPOCH}„%Y-%m-%d um %H:%M:%S)}” “hat ${CALLERID(num)} versucht Sie (Ihre Durchwahl: ${MDC_EXTEN}) anzurufen.” | mail -s “PASCOM - Verpasster Anruf” MAIL@TEST.de))

Lediglich die MAIL-Adresse (MAIL@TEST.de) und die Durchwahl (7355) würden wir gerne mit einer Variable und einem Inline-Script beim Benutzer austauschen - hat jemand hierzu eine Idee ?

vielen Dank

Hallo liebe Leut,

ich hänge mich hier auch noch einmal ein, weil es so schön passt. Gestern habe ich festgestellt das mein wie folgt angepasstes “def_hangup” Skript nicht mehr funktioniert.
Ob dies mit dem kürzlichem Update (Cloud) auf die 19.06R zusammenhängt, oder mit etwas anderem, kann ich nicht sagen.

exten => s,1,NoOp(>>>def_hangup:: EXTEN: ${ARG1} DIALSTATUS: ${ARG2} QUEUESTATUS: ${ARG3} REASON: ${ARG4})
exten => s,n,ExecIf($[("${MDC_EXTEN}" = “10”)&("${CHANNEL(state)}" = “Ring”)]?System(echo Verpasster Anruf von ${MDC_DIALCALLERNUM:1} | mail -s “Anruf verpasst ${MDC_DIALCALLERNAME} ${MDC_DIALCALLERNUM:1}” mail@meinedomain.de))

Mit dieser Anpassung bekamen wir dann immer eine Mail, wenn jemand in der Warteschlange aufgelegt hat, mit Namen (sofern im Telefonbuch) und mit der Rufnummer.

Ich habe dann das “def_hangup” so wie von Tyrion weiter oben geschrieben angepasst. Nun schaut es wie folgt aus:

exten => s,1,NoOp(>>>def_hangup:: EXTEN: ${ARG1} DIALSTATUS: ${ARG2} QUEUESTATUS: ${ARG3} REASON: ${ARG4})
exten => s,n,System(echo “Verpasster Anruf von ${CALLERID(num)}” | mail -s “Anruf verpasst” mail@meinedomain.de.de)

Damit wird die Mail versendet, aber es werden Anrufe als verpasst via Mail versendet die angenommen wurden. Außerdem ist die Mail nicht mehr so formatiert wie vorher. Weiterhin kommen bei einem wirklich verpassten Anruf, drei Mails und manchmal auch eine “verpasste Anruf Mail” von der externen Rufnummer unseres Teams (wir haben nur eines) in welchem der Anruf aufläuft

Kann mir bitte jemand helfen? Vielen Dank im voraus!

LG THOMAS

P.S.: Das Skript von @razorspade funktioniert bei mir ebenfalls nicht.

Hallo,

in unserer 19.06 Cloud funktionieren die Skripte immer noch und tun zuverlässig das, was sie sollen.
Bitte beachtet, dass nicht jeder Anruf zwingend in Extern/Nachher oder in def_hangup landet! Das ist abhängig davon, was mit dem eingehenden Anruf alles passieren kann. (Abwürfe,Umleitungen, AB, Blindtransfer, Übernahmen usw…) Deshalb ist es durchaus möglich, dass ein verpasster Anruf nicht als verpasste eMail zugestellt wird, weil ggf. 1. das entsprechende Skript erst gar nicht aufgerufen wurde oder 2. die Bedingung im Skript zum Versenden einer eMail nicht zu trifft.

So ist zB. ${CHANNEL(state)} bei einem verpassten Anruf auf die direkte DW eines Benutzers anders, als bei einem verpassten Anruf auf ein Team. Das muss im Script entsprechend abgefangen werden.
Dazu unbedingt die CLI anschauen, um den entsprechenden Status an zu erfahren!

@razorspade
mit Variablen geht auch… (ungetestet)

@EDV-Service

Ja, klar… Die Bedingung fehlt auch.

Ohne die wird jedes mal eine eMail versendet!
Warum hast Du sie entfernt?

cu
Christoph

Weil du weiter oben folgendes geschrieben hast:

Die verpassten Anrufe kommen über das Team rein und das “def_hangup” hat früher ja auch die Mails versendet. Ich denke ich werde das mal in einer Testanlage ausprobieren, wenn es eigentlich noch funktionieren sollte.

LG THOMAS

Hallo Thomas,

das war nur zum Test für @radek angedacht, ob seine Anlage überhaupt eMails verschickt…

Ändere es mal wieder wie es war. Wenn Du copy/paste verwendest achte drauf, dass sich keine falschen Hochkomma im Skript einschleichen.
Ruf das Team an und und beende den Anruf bevor Timeout Extern des Teams abgelaufen ist.

Habe es gerade mal auf unserer 19.06 Cloud-Spieleanlage getestet. Funktioniert auf Anhieb…
Und weil ich so gerne Bilder mache… :slight_smile:

Gutes Gelingen…

cu
Christoph

Hallo Christoph,

auf einer anderen Anlage funktioniert das Skript, daher muss hier irgendwas an unserer Instanz “kaputt” sein…

LG THOMAS

Hallo Tyrion - leider klappt das bei mir nicht … sobald ich die Email durch $(var_mail) ersetze wie in deinem script kommt leider keine E-mail an

Hallo @razorspade,

ich hab’s mal quickanddirty in def_hangup eingetragen und funktioniert.
So sieht es bei mir aus…

Für den Live-Betrieb muss noch die Bedingung für verpasst rein…
vlt. kannst Du ja mal ein Screenshot von Deinem def_hangup posten…!?

cu
Christoph

Hallo Thomas,

hast Du schon mal getestet, ob Du von der Konsole aus eine eMail verschicken kannst?

echo "Konsolentest" | mail -s "Test von Konsole" email@domain.de

cu
Christoph

Hallo Christoph,

vielen Dank für deine Hilfe. Scheinbar mache ich was falsch?! Wenn ich den Befehl von dir eingebe, copy & paste funktioniert leider nicht, erhalte ich:

No such command 'echo “Konsolentest”

LG THOMAS

Hallo Thomas,

steht in der Zeile weiter hinten ggf. noch… (type 'core show help echo…
Dann hast Du die echo-Zeile an der CLI eingetippt und nicht an der Konsole!?
CLI mit ! beenden (Ausrufezeichen eintippen und mit ENTER bestätigen)- dann bist Du an der Konsole. (asterisk@deinInstanzName:/$)
Die echo-Zeile in meinem Post habe ich in einen Code-Block eingefügt. Die solltest Du beruhigt mit CTRL+c kopieren können und an der Cloud-Konsole mit SHIFT+CTRL+v einfügen, email@domain.de mit Deiner eMail-Adresse ersetzten und mit ENTER abschicken.

cu
Christoph

Hallo Christoph,

danke für deine ausführliche Anleitung, damit habe ich es hinbekommen. Mailversand klappt in der Anlage, das weiß ich nun.

LG THOMAS

Hallo es klappt :slight_smile: allerdings sieht das Script jetzt so aus:

exten => s,n,Set(var_mail=xxxxx@mail.com)

exten => s,n,ExecIf($[("${MDC_EXTEN}" = “2275”)&("${CHANNEL(state)}" = “Ring”)]?System(echo “Hallo”, “am ${STRFTIME(${EPOCH}„%Y-%m-%d um %H:%M:%S)}” “hat ${CALLERID(num)} versucht Sie (Ihre Durchwahl: ${MDC_EXTEN}) anzurufen.” | mail -s “PASCOM - Verpasster Anruf” ${var_mail}))

gibt es eine Möglichkeit die Variable beim Benutzer zu definieren ? - als Inline script oder script ?

vielen dank und viele Grüße

Hallo Thomas,

spuckt die CLI an der Anlage, an der das Skript nicht funktioniert evtl. einen Fehler/Fehlermeldung aus, die uns ggf. auf die Spur bringt?

cu
Christoph

Hallo @razorspade,

…coool! :+1:

Wenn Inline-Skript würde ich die Variable beim Benutzer in Extern/Vorher setzten.

Da jeder Benutzer seine eigene DW hat, kannst Du die var_mail auch im hang-up Skript setzten.
Der Vorteil ist halt, dass Du alles kompakt an einer Stelle konfigurieren kannst.

Du kannst natürlich auch ein eigenes Skript erstellen, in dem Du die entsprechende eMail-Adresse setzten lässt. Dazu musst Du dann natürlich aus dem hang-up in Dein eigenes Skript verzweigen und mit dem Ergebnis als Übergabeparameter wieder zurück zu hang-up.
Die Möglichkeiten sind vielfältig…

cu
Christoph

Hallo!

Ich habe einen Anruf abgesetzt und den relevanten CLI Auszug in eine Textdatei kopiert, die ich an diesen Beitrag angehängt habe. Kannst du damit etwas anfangen und einen Rückschluss ziehen, warum es nicht funktioniert?

Danke!

THOMAS

cli_def_hangup.txt (1,7 KB)

vielen dank :slight_smile: -so ist es perfekt

für alle intressierten:
das ist im Benutzer als Inline-Script: VORHER

und das ist im def_hangup als Nachher:

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

exten => s,n,ExecIf($[("${MDC_EXTEN}" = ${var_dw})&("${CHANNEL(state)}" = "Ring")]?System(echo "Hallo", "am ${STRFTIME(${EPOCH}"%Y-%m-%d um %H:%M:%S)}" "hat ${CALLERID(num)} versucht Sie (Ihre Durchwahl: ${MDC_EXTEN}) anzurufen." | mail -s "PASCOM - Verpasster Anruf" ${var_mail}))

Hi ,
hab es wie von Dir beschrieben eingetragen , es funktioniert !

In der Cli hab ich eine Warnung

  [May 28 10:35:57] WARNING[21582][C-000000bc]: ast_expr2.fl:470 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected ')', expecting '-' or '!' or '(' or '<token>'; Input:
("100" = )&("Ring" = "Ring")