Ausführliche Protokollierung abgehender Gespräche

ZakMcRofl

Neuer User
Mitglied seit
28 Aug 2006
Beiträge
62
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,
ich hätte gerne ein Protokoll alle abgehenden Gespräche mit folgenden Informationen:
Quell-Aparat/SIP-ID, Angerufene Rufnummer, Dauer, genutzter Anbieter

Weiss jemand, wie man so etwas in Asterisk umsetzen kann? Habe die hier angebotene Standardinstallation für meine Bedürfnisse angepasst und auf Basisfunktionallität runtergekürzt (kein Voicemail, keine Interngespräche).

Etwas offtopic: weiss vielleicht jemand, wie ich eine per SIP an * angemeldete Fritzbox dazu bekomme, auch kurze Rufnummern (z.B. 123) über den SIP-Account zu leiten? Scheinbar fängt dies ja der interne Telefon-Daemon ab, oder?
 
Einen kleinen Ansatz zum Probieren und Anpassen kann ich Dir geben:
Code:
exten => h,1,system,chroot /oldroot echo "=> ${STRFTIME(,GMT+2,%C%y%m%d%H%M)} - ${CALLERID(num)}${DIALEDNUMBER} Dauer: $[0${ANSWEREDTIME} / 3600 % 24]:$[0${ANSWEREDTIME} / 600 % 6]$[0${ANSWEREDTIME} / 60 % 10]:$[0${ANSWEREDTIME} / 10 % 6]$[0${ANSWEREDTIME} % 10] Status: ${HANGUPCAUSE} -- für ${AVAILORIGCHAN}" >> /var/media/ftp/USBFlashMemory-Partition-0-1/log/telefon.log
Für Die Umrechnung der Sekunden und Stunden:Minuten:Sekunden habe ich lange nachdenken müssen. Ich hoffe, dass es funktioniert.
 
Zuletzt bearbeitet:
So, nach einigem gebastel habe ich das offizielle CDR logging (Call Detail Record) aktivieren können.

Man muss dafür das Modul cdr_csv.so runterladen, in das Modules-Verzeichnis legen und die cdr.conf der offiziellen Asterisk-Distribution verwenden.

Mit dieser cdr.conf funzt es bei mir:
Code:
;
; Asterisk Call Detail Record engine configuration
;
; CDR is Call Detail Record, which provides logging services via a variety of
; pluggable backend modules.  Detailed call information can be recorded to
; databases, files, etc.  Useful for billing, fraud prevention, compliance with
; Sarbanes-Oxley aka The Enron Act, QOS evaluations, and more.
;

[general]

; Define whether or not to use CDR logging.  Setting this to "no" will override
; any loading of backend CDR modules.  Default is "yes".
enable=yes

; Define the CDR batch mode, where instead of posting the CDR at the end of
; every call, the data will be stored in a buffer to help alleviate load on the
; asterisk server.  Default is "no".
;
; WARNING WARNING WARNING
; Use of batch mode may result in data loss after unsafe asterisk termination
; ie. software crash, power failure, kill -9, etc.
; WARNING WARNING WARNING
;
;batch=no

; Define the maximum number of CDRs to accumulate in the buffer before posting
; them to the backend engines.  'batch' must be set to 'yes'.  Default is 100.
;size=100

; Define the maximum time to accumulate CDRs in the buffer before posting them
; to the backend engines.  If this time limit is reached, then it will post the
; records, regardless of the value defined for 'size'.  'batch' must be set to
; 'yes'.  Note that time is in seconds.  Default is 300 (5 minutes).
;time=300

; The CDR engine uses the internal asterisk scheduler to determine when to post
; records.  Posting can either occur inside the scheduler thread, or a new
; thread can be spawned for the submission of every batch.  For small batches,
; it might be acceptable to just use the scheduler thread, so set this to "yes".
; For large batches, say anything over size=10, a new thread is recommended, so
; set this to "no".  Default is "no".
;scheduleronly=no

; When shutting down asterisk, you can block until the CDRs are submitted.  If
; you don't, then data will likely be lost.  You can always check the size of
; the CDR batch buffer with the CLI "cdr status" command.  To enable blocking on
; submission of CDR data during asterisk shutdown, set this to "yes".  Default
; is "yes".
;safeshutdown=yes

; Normally, CDR's are not closed out until after all extensions are finished
; executing.  By enabling this option, the CDR will be ended before executing
; the "h" extension so that CDR values such as "end" and "billsec" may be
; retrieved inside of of this extension.
;endbeforehexten=no

;
;
; CHOOSING A CDR "BACKEND"  (what kind of output to generate)
;
; To choose a backend, you have to make sure either the right category is 
; defined in this file, or that the appropriate config file exists, and has the 
; proper definitions in it. If there are any problems, usually, the entry will
; silently ignored, and you get no output.
; 
; Also, please note that you can generate CDR records in as many formats as you 
; wish. If you configure 5 different CDR formats, then each event will be logged
; in 5 different places! In the example config files, all formats are commented
; out except for the cdr-csv format.
;
; Here are all the possible back ends:
;
;   csv, custom, manager, odbc, pgsql, radius, sqlite, tds 
;    (also, mysql is available via the asterisk-addons, due to licensing
;     requirements)
;   (please note, also, that other backends can be created, by creating
;    a new backend module in the source cdr/ directory!)
;
; Some of the modules required to provide these backends will not build or install
; unless some dependency requirements are met. Examples of this are pgsql, odbc,
; etc. If you are not getting output as you would expect, the first thing to do
; is to run the command "make menuselect", and check what modules are available,
; by looking in the "2. Call Detail Recording" option in the main menu. If your
; backend is marked with XXX, you know that the "configure" command could not find
; the required libraries for that option.
;
; To get CDRs to be logged to the plain-jane /var/log/asterisk/cdr-csv/Master.csv 
; file, define the [csv] category in this file. No database necessary. The example
; config files are set up to provide this kind of output by default.
;
; To get custom csv CDR records, make sure the cdr_custom.conf file
; is present, and contains the proper [mappings] section. The advantage to
; using this backend, is that you can define which fields to output, and in
; what order. By default, the example configs are set up to mimic the cdr-csv
; output. If you don't make any changes to the mappings, you are basically generating
; the same thing as cdr-csv, but expending more CPU cycles to do so!
;
; To get manager events generated, make sure the cdr_manager.conf file exists,
; and the [general] section is defined, with the single variable 'enabled = yes'.
;
; For odbc, make sure all the proper libs are installed, that "make menuselect"
; shows that the modules are available, and the cdr_odbc.conf file exists, and
; has a [global] section with the proper variables defined.
;
; For pgsql, make sure all the proper libs are installed, that "make menuselect"
; shows that the modules are available, and the cdr_pgsql.conf file exists, and
; has a [global] section with the proper variables defined.
;
; For logging to radius databases, make sure all the proper libs are installed, that 
; "make menuselect" shows that the modules are available, and the [radius]
; category is defined in this file, and in that section, make sure the 'radiuscfg'
; variable is properly pointing to an existing radiusclient.conf file.
;
; For logging to sqlite databases, make sure the 'cdr.db' file exists in the log directory,
; which is usually /var/log/asterisk. Of course, the proper libraries should be available
; during the 'configure' operation.
;
; For tds logging, make sure the proper libraries are available during the 'configure' 
; phase, and that cdr_tds.conf exists and is properly set up with a [global] category.
;
; Also, remember, that if you wish to log CDR info to a database, you will have to define
; a specific table in that databse to make things work! See the doc directory for more details
; on how to create this table in each database.
;

[csv]
usegmtime=yes    ; log date/time in GMT.  Default is "no"
loguniqueid=yes  ; log uniqueid.  Default is "no
loguserfield=yes ; log user field.  Default is "no

;[radius]
;usegmtime=yes    ; log date/time in GMT
;loguniqueid=yes  ; log uniqueid
;loguserfield=yes ; log user field
; Set this to the location of the radiusclient-ng configuration file
; The default is /etc/radiusclient-ng/radiusclient.conf
;radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf

Wichtig ist, dass der [csv]-Eintrag aktiv ist, sonst passiert nichts.
Danach musste ich nur noch die /var/log/asterisk/cdr-csv/Master.csv anlegen. Dort stehen dann die Anrufdaten als comma seperated values, z.B. zum Import in Excel.
 
Gut zu sehen, dass es funktionert :)
 
Hallo ZackMcRofl!

Ich habe es auf dem gleichen Weg wie du geschafft das CDR-logging zu aktivieren. Funktioniert super und alles wird in die Master.csv geschrieben.

Eine Kleinigkeit stöt mich aber noch. Die Master.csv ist nach einem Neustart der Box weg. Nicht gerade praktisch für die Gebührenabrechnung. Wie hast du das gelöst? Schreibst du auf einen USB-Stick oder etwas vergleichbares?

Meiner 7050er hat ja keinen USB Anschluss. Ich habe deshalb per smbmount eine Freigabe auf einem netzinternen NAS auf meiner 7050 gemountet. Der Gedanke war die Master.csv dort abzulegen und per Softlink in das Vezeichnis /var/log/asterisk/cdr-cdv/ einzufügen. Von dort könnte ich sie auch bequem per Excel auswerten.

Asterisk weigert sich aber aus irgendeinem Grund in diese verlinkte Datei zu schreiben. Von der shell aus kann man mit "echo Text > /var/log/asterisk/cdr.csv/Master.csv" problemlos in die Datei schreiben.

Wie wertest du die Daten aus? Und wie sichserst du sie vor ungewolltem Verlust bei z.B. Stromausfall?

Gruß, Chris
 
Asterisk weigert sich aber aus irgendeinem Grund in diese verlinkte Datei zu schreiben. Von der shell aus kann man mit "echo Text > /var/log/asterisk/cdr.csv/Master.csv" problemlos in die Datei schreiben.
Wie sieht denn die entsprechende Anweisung im Asterisk aus ? Welche Fehlermeldungerhältst DU ?

Man bräuchte schon ein paar weitere Angaben ( Console log usw. ) um helfen zu können.

Gruß
dynamic
 
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.