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

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)

@IT-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")

Hallo @nada,

nada

cu
Christoph

Hallo Thomas,

sry – hatte irgendwie Deine Antwort übersehen…:dizzy_face:

Der Dialplan der Pascom ruft offensichtlich 2x das def_hangup auf, wenn der Mobil-Client im Spiel ist. Zu erkennen an Zeile 8 u. 12.


Wie auch immer – wenn es so ist, soll es so sein….

In beiden Fällen sind die Bedingungen des ExecIf nicht erfüllt (zu erkennen an der 0 in Zeile 10 u. 14) –
"0?System(echo……
Wäre die Bedingung erfüllt, müsste an der Stelle eine 1 stehen und die eMail geht raus.

Wenn wir den ersten Aufruf ab Zeile8 betrachten und das ExecIf in Deinem Script so aus sieht
th2
erkennen wir in Zeile 8 u. 9, dass MDC_EXTEN gleich 10 ist. (DW des Teams) Das würde also passen. Bleibt die Vermutung, dass Variable CHANNEL(state) anstelle -Ring- etwas anderes enthält. (wenn auch nur schwer vorstellbar). Leider sehen wir den Inhalt von CHANNEL(state) in der CLI nicht.
Das kannst Du aber ändern, indem Du in der def_hangup, in Zeile 2 u. 3 folgendes einfügst

exten => s,n,NoOp(>>>> MDC_EXTEN / ${MDC_EXTEN})
exten => s,n,NoOp(>>>> CHANNEL(state) / ${CHANNEL(state)})

Im zweiten Aufruf ist ExecIf nicht erfüllt, weil MDC_EXTEN offensichtlich LEER ist. (Erkennbar in Zeile12 u. 13 / vergl. Zeile8 u. 9) Das soll uns nicht weiter stören, da wir sonst 2 eMails bekommen würden.

Ist Deine Anlage 19.06 oder ist das noch eine ältere Version?

cu
Christoph

Hi Christoph!

Vielen Dank für deinen ausführlichen Beitrag! Ich werde vermmutlich morgen dazu kommen das auszuprobieren und werde das Ergebnis im Anschluss hier posten.

LG THOMAS

Hallo!

Im Anhang der Auszug aus der CLI. Bin gespannt, was du damit herausfindest.

Danke!

THOMAS

cli_def_hangup1.txt (6,4 KB)