cdr_syslog erstellt keine Einträge wenn VOIP Client nicht verbunden ist

blubbersuelze

Neuer User
Mitglied seit
29 Okt 2007
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich nutze Asterisk 11.13 auf einem Debian System.
Da ich ein Logging haben möchte welche Nummern insgesamt versucht haben einen Client anzurufen, egal ob erfolgreich oder nicht,
habe ich in cdr_syslog.conf template wie folgt angepasst:

template = "Incoming call from,${CDR(src)},${CDR(dst)},${CDR(start)}"

Das Template funktioniert auch solange für die entsprechende dst ein Client verbunden ist.
Ist kein Client für die entsprechende dst verbunden, werden scheinbar keine Einträge über cdr erstellt.

Wie bekomme ich das hin das ich custom Syslogeinträge bekomme über ankommende Anrufe,
selbst wenn kein Client für eine dst verbunden ist?

Danke für die Hilfe im voraus.
 
Bau doch einfach eine entsprechende System() Anweisung in den Dialplan ein.
 
Moins

Beispiel gefällig?
Code:
exten => s,1(start),Answer
exten => s,n,SendText(${STRFTIME(${EPOCH},,%d.%m.%Y-%H:%M:%S)}:${EXTEN}:${CALLERID(all)})
exten => s,n,TrySystem(echo '${STRFTIME(${EPOCH},,%d.%m.%Y-%H:%M:%S)}:${EXTEN}:${CALLERID(all)}' >> /var/log/asterisk/sas.log)
exten => s,n,TrySystem(echo 'Incoming call from,${CDR(src)},${CDR(dst)},${CDR(start)}'  >> /var/log/asterisk/new.log)
exten => s,n,Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=1200)
exten => s,n,StartMusicOnHold
exten => s,n,WaitExten

Selbst bevorzuge ich: TrySystem()
...aber es gibt auch noch einen Anderen: SHELL()
 
Zuletzt bearbeitet:
Selbst bevorzuge ich: TrySystem()
...aber es gibt auch noch einen Anderen: Shell()

Würde ich nicht so pauschal sagen. In diesem Fall wird es egal sein, ob System oder TrySystem, bei echo kann ja nicht viel schief gehen. Es gibt aber Fälle, in denen eine Rückmeldung sinnvoll bzw. erforderlich ist.

Shell ist eine Funktion und nur erforderlich, wenn man die Standardausgabe des Kommandos braucht.
 
Moins

Aha, das bedeutet ja, mein Beispiel käme völlig mit SHELL() aus.
System() oder TrySystem() sind da sowas von: Überflüssig
...unnötig kompliziert, sozusagen.

Um die Fehlerausgabe/behandlung darf sich nur Jeder selber kümmern.
...was dann mit dem echo* passieren kann. Weil: Standardausgabe

Das hier erspart auch noch das Set(VARIABLENNAME=) und macht eine einfache Fehlerbehandlung**...
Code:
exten => s,n,SendText(${SHELL(echo '${CDR(src)}<-->${CDR(dst)},${CDR(start)}'  >> /var/log/asterisk/new.log && echo -n 'Anrufinfo wurde gespeichert' || echo -n 'Anrufinfo wurde nicht gespeichert')})
...getestet mit/ohne schreibgeschützter Logdatei (und PhonerLite).
Natürlich kann es auch mit NoOp() getestet und/oder betrieben werden.
Denn auch mit NoOp() wird ins Log geschrieben und NoOp() zeigt an obs geklappt hat oder nicht.
Code:
exten => s,n,NoOp(${SHELL(echo '${CDR(src)}<-->${CDR(dst)},${CDR(start)}'  >> /var/log/asterisk/new.log && echo -n 'Anrufinfo wurde gespeichert' || echo -n 'Anrufinfo wurde nicht gespeichert')});
Im Log (asterisk -rvvvvv) erscheint dann...
Code:
    -- Executing [s@sas:2] NoOp("SIP/1001-00000002", "Anrufinfo wurde gespeichert") in new stack

* echo gibts übrigens auf Linux und MS Windows ;) und Umleitungen gehen auch, nur Slash/Backslash (Pfadkonvention) muss beachtet werden.
** Auf Shellebene, nicht Asteriskebene!
 
Zuletzt bearbeitet:
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.