Conversion of Call History FreePBX -> MikoPBX
PT1C_cdr is the table containing the call history from the telephony panel version 1 in FreePBX.
Actions in FreePBX
Let’s navigate to the FreePBX working directory.
mkdir -p /usr/src/miko-mysql-to-sqlite;
cd /usr/src/miko-mysql-to-sqlite
Download the script to convert the MySQL table to SQLite3. If it’s not available, make sure to download it.
curl '' -o 'mysql2sqlite.sh'
Run the conversion script:
./mysql2sqlite.sh -ufreepbxuser -p123 asteriskcdrdb PT1C_cdr | grep -v 'CREATE INDEX
Actions in MikoPBX
The archive with the scripts is available via the provided link.
The file master.db, obtained in the previous step, must be transferred to MikoPBX in the directory: /storage/usbdisk1/mikopbx/freepbx-dmp.
Navigate to the MikoPBX working directory:
mkdir -p /storage/usbdisk1/mikopbx/freepbx-dmp;
cd /storage/usbdisk1/mikopbx/freepbx-dmp;
Prepare the list of files for uploading, specifying the date as "2020-02-07".
sqlite3 master.db 'SELECT strftime("%Y/%m/%d/", calldate) || recordingfile FROM PT1C_cdr WHERE recordingfile<>"" AND calldate > "2020-02-07"' > file-for-download.txt
Uploading call recordings and converting them to MP3.
curl '' -o ./download-and-convert.sh
sh ./download-and-convert.sh file-for-download.txt 10.70.10.6:443
Perform a backup of the call history database.
cp /storage/usbdisk1/mikopbx/astlogs/asterisk/cdr.db /storage/usbdisk1/mikopbx/astlogs/asterisk/cdr.db.dmp
Copy the call history database to the current directory.
cp /storage/usbdisk1/mikopbx/astlogs/asterisk/cdr.db ./cdr.db
Convert the call history to the MikoPBX format. The history in cdr.db will be CLEARED.
sqlite3 << EOF
ATTACH DATABASE 'cdr.db' as 'new';
ATTACH DATABASE 'master.db' as 'old';
delete from new.cdr_general;
INSERT INTO new.cdr_general (
src_num,
dst_num,
src_chan,
dst_chan,
start,
answer,
endtime,
duration,
billsec,
disposition,
UNIQUEID,
did,
linkedid,
recordingfile
)
SELECT src,
dst,
channel,
dstchannel,
calldate,
answer,
"end",
duration,
billsec,
disposition,
linkedid || id,
did,
linkedid,
"/storage/usbdisk1/mikopbx/voicemailarchive/monitor/" || strftime("%Y/%m/%d/", calldate) || recordingfile || ".mp3"
FROM old.PT1C_cdr;
DETACH DATABASE 'new';
DETACH DATABASE 'old';
.exit
EOF
Clear the empty recordingfile fields in the database.
sqlite3 ./cdr.db 'UPDATE cdr_general SET recordingfile="" where recordingfile LIKE "%/.mp3"'
There are no call recordings before "2020-02-07". Let’s clear the recordingfile field.
sqlite3 ./cdr.db 'UPDATE cdr_general SET recordingfile="" where start<"2020-02-07"'
After moving the database file.
cp ./cdr.db /storage/usbdisk1/mikopbx/astlogs/asterisk/cdr.db
Done! You can now check the call history in the web interface.