History Of Changes
Please note: this is legacy documentation. Please check out https://docs.miarec.com/all/ for the most up-to-date documentation and user guides.
2014-08-19 Version 3.1.484
Recording engine
- Fixed occasional crash of application, which was introduced in version 3.1.475.
- [SIP protocol] Fix of processing Remote-Party-ID in UPDATE message for outgoing call scenario. This issue caused both callers and called numbers to have the same value.
- Added support of Windows Performance Counters. Many performance metrics are available in Perfmon for the MiaRec application, like current active calls, peak active calls, calls per second, etc. It requires Vista/2008 or newer operating system.
- Significantly improved performance of recording engine under high load (200+ concurrent calls) for Cisco Active Recording method.
2014-07-24 Version 3.1.481
Recording engine
- [SIP protocol] Added support for handling Remote-Party-ID in an UPDATE message. In some incoming call scenarios, Cisco UCM may send INVITE with an incorrect caller number. Then CUCM sends an UPDATE message with the correct number in the Remote-Party-ID header
2014-07-23 Version 3.1.480
Recording engine
- [Cisco active recording, Built-in-Bridge] Added support of Cisco Built-in-Bridge recording method. Configuration is available in section [Protocol::CiscoBiB] in MiaRec.ini file
2014-07-21 Version 3.1.475
Recording engine
- [SIP protocol] Added support for handling P-Asserted-Identification. This allows recording correctly Call Pickup scenarios when the user dials a feature code like *33 to pick up the incoming call
- Fixed issue in call scenarios, when codec sample rate changes in a middle of a call. For example, when a call is established with G.722 wideband 16KHz codec and then it is changed to G.711 narrowband. As a result, the audio file was recorded with a distorted voice.
2014-07-14 Version 3.1.473
Web interface
- Fixed Recording Rule edit dialog. The Unsorted folder was not selected automatically.
- Fixed issue with using mask symbols (_ and %) in recording rules. The issue is caused by changes in the PostgreSQL database engine from version 8.x to 9.x. Update of the PostgreSQL engine was made on 2014-06-20
2014-07-02 Version 3.1.463
Web interface
- Replaced Windows Media Player plugin with HTML5 Audio Player, which is supported by all modern web browsers. On older web browsers, a Flash or Silverlight plugin is used. This change allows for playback of call recordings on any web browser (IE, Chrome, Firefox, Safari) and even on any platform (Windows, Mac, Linux, iOS, Android).
- Fixed issue with the editing of Recording rules. The folder was not pre-selected.
- Recording rules are displayed ordered ("not recording" rules first).
- Recording rules are loaded to MiaRec in a particular order ("not recording" rules first)
- Fixed link "Live monitoring" for Callee Party
Recording core
- Changed order in which recording filters are processed from INI file and Database. Now the filters from the INI file are checked first, then filters (recording rules) from the database, and then default_action from the INI file.
2014-06-20 Version 3.1.457
Recording core + Web interface
- Added support for configuring recording filters inside the Web interface
- Added support for live monitoring in a distributed environment with a single web portal and multiple remote recorders
- Added support of live monitoring of consecutive calls of the particular user without restart of Live Player application
- Display call details of monitored calls inside Live Player application
Database
- Updated PostreSQL database engine to version 9.3.4.4
2014-04-09 Version 3.1.445
Recording core
- [Broadsoft SIPREC interface] Fixed issue: 200 OK response from MiaRec was sent to the same port, on which the original INVITE message was received, but the BroadWorks system expects to receive a response on the port as specified in "send-by" of Via header. New configuration parameter:
[Protocol::SIPREC]
SendRespToSrcPort = [yes | no]
2014-04-08 Version 3.1.443
Web interface
- Significant improvement of display/search calls on high volumes (millions of records). Changes:
- Paging: show only Next/Prev buttons. Do not show the total number of calls as this requires the execution of a very expensive database command "SELECT COUNT(*)".
- Disabled sorting on all columns except setuptime, callid, agentid. Reason: only the mentioned columns have database indexes, which speed up the search process. When sorting calls by other columns, the indexes were not utilized and the database was forced to scan all existing records from the disk
2014-02-19 Version 3.1.440
Recording core
- Added support for changing code sample rate on the flight. For example, when the call is established with an 8000Hz sample rate (codec G.711) and then in a middle of a call the codec is re-negotiated to a 16000Hz sample rate (G.722). This happens with the Cisco UCM phone system in the following scenario:
- The user dials the extension of another user in the same network (a call will be established between two Cisco IP phones)
- The call is established and the user hears a welcome message like "All calls will be recorded for quality assurance purposes" (G.711 codec)
- Then the call is transferred.
- A call is established between two users with G.722 codec.
- Added support for live monitoring of calls, which utilize wide-band codecs (G.722). Audio is automatically resampled to 8KHz.
Other
- Password for MiaRecUser is randomly generated during installation for security purposes. Additionally, password length is increased to 32 characters to comply with security policies at some sites.
2014-02-17 Version 3.1.439
Recording core
2013-12-18 Version 3.1.437
Recording core (MiaRec.exe version 3.0.662)
- Added integration with Broadsoft SIPREC interface. Configuration is available through the MiaRec.ini file, section [Protocol::SIPREC]
- Added support of non-ANSI character encoding for Cisco Skinny protocol. Normally string values are encoded with UTF-8, which was supported in the old version of MiaRec. But with some CUCM versions, the string values inside the Skinny packet may be encoded with "iso-8859-2" or any other character encoding set. This caused an "empty caller-id" issue.
Configuration parameter "CharacterEncoding" was added to MiaRec.ini file inside section [Protocol::Skinny]. - Workaround for call scenarios when Cisco IP Phone changes RTP SyncId in the middle of the call. This caused "one-way audio" issue. In old version, it was required to manually adjust the parameter "IgnoreRtpSyncInfoChange" according to the behavior of IP Phones. In the new version, it is automatically adjusted.
- Fixed processing of SIP re-INVITE message for phones behind NAT/DMZ. This caused a "one-way audio" issue.
- Decreased delay of reading license from a HASP USB dongle, when the latter is connected while MiaRec service is running.
Other
- Change default settings. The audio format is "mono" now and "AGC" is disabled. This can be changed through the MiaRec.ini file
- It is possible to disable VoIP Passive Recording modules and keep only active recording (for example, Broadsoft SIPREC). The parameter "Listen" should be set to "-1" inside the MiaRec.ini file.
- Link "Download file" can be hidden from the web interface. Parameter "hide_download_link" should be modified inside "config.php" file.
2013-06-18 Version 3.1.429
Recording core (MiaRec.exe version 3.0.646)
- Improvements in a workaround for a bug in Cisco phones firmware. Cisco CCM sends CallInfo msg formatted as CCM7+, but the version header field contains version CCM 5. Now MiaRec analyzes CallInfo message content and automatically fixes the version of the packet. There is no need for the option 'ForceVersion' anymore (see log for the previous version).
2013-06-16 Version 3.1.428
Recording core (MiaRec.exe version 3.0.645)
- Added option 'ForceVersion' in section [Protocol::Skinny]. This is a workaround for a bug in the Cisco phone's firmware. Sometimes CCM sends CallInfo packet formatted as version CCM 8.x, but Skinny packet contains "version" field set to 0 (basic version). This causes incorrect parsing of caller/called phone numbers and names because Cisco has changed the format of the CallInfo packet. This occurred with CCM 8 and Cisco wireless phone 7921.
Other
- Added SyncWebSettings.py script. This script synchronizes web settings between two instances of MiaRec (primary and redundancy). When this script is run (on a scheduled basis), the changes in web settings (users' login/password, access permissions, auto-sort into folders rules) are automatically populated to the second server (redundancy).
- Fixed BackupDaily.py script
- Fixed incorrect handling of time savings in Scheduler and trace/log rotation functions (which appeared in MiaRec releases since 2012/03/28. Because of this bug a log file was rotated indefinitely during one hour period. For example, log file rotation is scheduled every Sunday at 4:00 am, But it was executed in a loop between 4:00 and 5:00.
2013-05-08 Version 3.1.418
Other
- Fixed issue in Backup script. The sub-folder was not created when in non-interactive mode.
- Fixed DeleteOldCalls.py and DeleteOldIgnoredCalls.py scripts as they were not working due to an update in the Backup script some time ago.
- Replaced default "demo/demo" account with "admin/admin"
2013-04-18 Version 3.1.417
Recording core (MiaRec.exe version 3.0.639)
- Added support for Muting recording (PCI Compliance). A third-party application can initiate mute/unmute recording on a particular extension via Web-services SOAP API
Web-services SOAP API
- Added functions 'muteRecording' and 'unmuteRecording'.
- Renamed [SOAP] to [API::SOAP].
- Added support of authorization (by login/password) and permissions for API. For example, it is possible to limit from which IP-address API client can connect, what operations it can perform, which phones it can control/monitor, etc. See details in MiaRec.ini file in section [API::User::user1]
- IpAddress for default API user (when LoginRequired=no) is limited to 127.0.0.1 for security reasons
- Web-services API supports a higher number of clients. Requests from multiple clients are processed simultaneously.
- Improved SOAP logging. Ip-address is put into log filename
- Improved PTRACE for SOAP (write client IP-address inside messages)
- Dynamically replace service URL inside returned WSDL file. The old version always returned http://localhost:6084
The newIP address version puts the correct IP-address and port on which SOAP is listening.
2013-04-15 Version 3.1.416
Web-interface
- Fixed Chrome25 bug with rendering of date picker (it was rendered with 100% width)
- Calls per page are fixed to values 5, 10, 20, 50, 100, 200, 500, and 1000 rather than a dynamic list
- Fixed rare issues with the web interface when different elements were rendered with incorrect dimensions or positions.
2013-04-10 Version 3.1.414
Recording core (MiaRec.exe version 3.0.634)
- Fixed issue with correct handling of duplicating packets (when two ports are mirrored on a network switch and the packets come through both ports). The byte-to-byte comparison doesn't work because the network switch may modify IP headers (QoS) for the out packet. It caused a one-way audio issue for some Skinny call scenarios: When a call is put on hold and the second "consultative" call is made from the same phone.
2013-04-08 Version 3.1.413
Other
- Updated WinPCap version to 4.1.3 (compatible with Windows 8 and Server 2012).
2013-04-06 Version 3.1.412
Recording core (MiaRec.exe version 3.0.633)
- Continue of fix with SIP TCP packets reassembling (see the previous version).
2013-04-04 Version 3.1.411
Recording core (MiaRec.exe version 3.0.632)
- Fixed issue with SIP TCP packets reassembling. Large packets were not reassembled and only the first portion was parsed. This may cause empty caller-ids issue.
2013-03-07 Version 3.1.409
Recording core (MiaRec.exe version 3.0.631)
- Substitute automatically "%23" with "#" inside SIP phone number
- Added support of PCap BPF filter (option "PcapFilter" inside MiaRec.ini file), which allows filtering of network packets on a network driver level. This is useful in two cases:
- complex call scenarios
- high traffic on the mirroring interface (50+ Mbps), which is necessary to ignore
- Fixed crash of application, which occurs in some rare call scenarios under high load (500+ concurrent calls)
Other
- Updated Apache to the latest version 2.2.22 and PHP to version 5.3.22
- Fixed length of value "protocol-callid". It was truncated to 32 bytes in StartQuery SQL
- Refactoring of Backup/Restore scrips (cleaner code, add Spinner, CDR only backup/restore)
- Increased AJAX timeout to 240 seconds which fixes the "Transaction aborted" error when loading calls from the database with millions of records.
- Added ExportToExcel.py script file for exporting call details into Excel file
2012-08-27 Version 3.1.406
Recording core (MiaRec.exe version 3.0.628)
- Fixed one-way audio issue for some particular call scenarios on Talkswitch IP PBX
2012-07-13 Version 3.1.405
Recording core (MiaRec.exe version 3.0.627)
- Fixed crash of application, which occurs during parse of corrupted SIP packets
- Fixed crash of application, which occurs when received IP packet has bogus data (UDP header contains data length, which is less than UDP header length).
- Removed limitations for MinConsecutiveRtpMaskMatch and MinConsecutiveRtpSyncIdMatch. They were a minimum of 5 and a maximum of 500 packets. Now there are no limits. The default value is set to 10,000. This is necessary for some buggy IP PBX systems, which continue to send RTP packets to old port after re-INVITE is received with new port in SDP. This causes "one-way audio" issue.
- Fixed "one-way audio" issue in Cisco Skinny protocol. Some Cisco UC5XX models may send CloseReceiveChannel immediately after OpenReceiveChannel. Then they send new OpenReceiveChannel message. IP Phone doesn't have even time for response with acknowledge to the first request (OpenReceiveChannelAck). Acknowledge to the first request is received after CloseReceiveChannel message.
- Added support of TCP reassembling. This fixes issue with empty caller-ids for some SIP calls. When SIP is sent over TCP protocol and the receiving party has too small TCP window size value, then the message is sent over multiple TCP fragments.
2012-03-30 Version 3.1.404
Recording core (MiaRec.exe version 3.0.623)
- Fixed the "one-way audio" issue in SIP protocol for the scenario when the to INVITE message is not responded (for example, because of called party is off-line). In this case, CANCEL message is not sent. The caller party may re-use the same RTP port for the next calls.
Other
- Fixed automatic update of the database from old versions
- Added new scripts ImportCallsFromCSV.py and ImportFromSolo.py
2011-10-07 Version 3.1.398
Recording core (MiaRec.exe version 3.0.621)
- New method of Avaya call recording. MiaRec tightly integrates with Avaya via the TSAPI interface.
- Added support of Skinny protocol for Cisco CallManager v.8.5
- Fixed issue with Avaya VoIP Passive Call Recording method for a scenario when the phone is rebooted and all subsequent calls are recorded with one-way audio. The other side of the audio is recorded into one very long call, which is created after a phone reboot.
- Multicast and broadcast RTP packets are ignored now. This eliminates a need to create custom recording filters, which would filter out Music-On-Hold audio that is generated by IP-PBX and sent with multi-cast to IP phones (this happens on some Cisco systems).
- Added call parameter %{filename-dir} which contains a directory path without a drive letter, for example, \Recordings\20110828\. More details: File name format
- Decreased default value of PcapMinToCopySize from 4000 to 500 bytes. This fixes issues with audio quality during live monitoring when there is low network traffic (less than 5 active calls).
- Increased default no-audio timeout values. This is necessary for the following call scenarios:
- The call is put on hold for a long time
- There is a duplicating call, which shares RTP streams with another call. This call normally remains in a validating state.
- Changed a default value for FileNameFormat: %{call-id} is added to the end of filename. This guarantees that all files have unique names even if multiple calls were started at the same time. By default, MiaRec creates audio files with names, which contain the date and time of call start. If multiple calls are started at the same time, then MiaRec adds a unique digit to the end of the file, like 20100810104533_2.mp3, 20100810104533_3.mp3, etc. This works very well but may still cause file name conflict when the customer has configured automatic renaming/moving of files to other locations upon call complete. The new default value for FileNameFormat guarantees that no conflict will arise in this scenario.
Web-interface
- Fixed issue "unable to log in" when the user is located behind HTTP Proxy. And this proxy sends subsequent requests from different IP addresses.
- MAC address is removed from call details pane because in 99% cases it is not important for customers. Anyway, it is possible to see the MAC address of the caller and called party inside the calls table (change the visibility of the corresponding column).
- Fixed issue with incorrect restoring of custom "Calls Per Page" value after user re-logins.
- Fixed alphabetical sorting of Folders on the 2nd and bottom levels of the hierarchy.
Other
- WinPCap timestamp calculation method is changed to KeQuerySystemTime, which is more reliable than the default method (KeQueryPerformanceCounter). A default method may cause a shift in time values (up to 5 seconds) on SMP systems.
- Fixed an installer restore script, which returns a database connection error in scenarios when restoring is made only for database files but not for configuration files.
2011-06-22 Version 3.1.383
Recording core (MiaRec.exe version 3.0.595)
- Fixed issue with "cropping" audio during live monitoring, which may appear in some rare call scenarios
2011-06-17 Version 3.1.382
Web-interface
- Fixed compatibility with Google Chrome, Safari, and IE 9.0
2011-06-15 Version 3.1.380
Recording core (MiaRec.exe version 3.0.594)
- Fixed bug, which causes a crash of application under high load
- Added support of Alcatel OmniPCX Enterprice. Alcaltel softphones use non-symmetric RTP streams. This caused a problem with recording: each side of the conversation was stored in a separate file. By default support of Alcatel is not enabled. It is necessary to enable it inside the MiaRec.ini file:
[Protocol::Alcatel]
Also, IgnoreRtpPortChange should be set to "yes" inside MiaRec.ini file:
Enable=1IgnoreRtpPortChange=yes
Other
- Removed documentation file MiaRecAdminGuide.pdf from an installer. Instead, a link to online documentation on our website is created.
2011-05-17 Version 3.1.378
Web-interface
- Added closing button on "Auto-sort calls into folders" tab.
Other
- Python scripts support reading of settings from MiaRec.ini file, which is saved in UNICODE format
2011-05-04 Version 3.1.376
Other
- Updated Python scripts according to recent changes in database structure
2011-05-03 Version 3.1.375
Web-interface
- Fixed issue with "Auto-sort into folders". The issue appears when a folder is deleted by the user and a sorting rule existed for that deleted folder. The sorting rule was not deleted automatically with a deletion of the appropriate folder. At the same time, the rule was not visible to the user. This invisible sorting rule continued to sort calls into the non-existent folder.
2011-04-14 Version 3.1.374
Recording Core (MiaRec.exe version 3.0.591)
- Increased performance for scenarios, when less than 100% of calls are recorded (some calls are ignored by filters).
- Added support of "sip-header-invite" variable inside recording filters.
For example:
filterX condition = sip-header-invite#User-Agent = "Softphone v.1.0"
filterX filename = C:\Calls\%{sip-header-invite#From}.mp3
Web-interface
- Updated PHP to v.5.3.5
- Updated Apache to 2.2.17
2011-01-28 Version 3.1.360
Recording Core (MiaRec.exe version 3.0.587)
- Added support for IP fragmentation for TCP packets. Some phones (for example, Cisco 7975G) may send big SIP messages over TCP, which are fragmented on two or more IP frames. This issue caused the recording of calls with empty caller-ids.
- Do not analyze TCP packets, which are sent to/from ports less than 1024. Usually, VoIP signaling packets should be sent from higher ports. This change in a program decreases CPU load in situations when mirrored traffic contains a lot of non-VoIP packets, like RDP, HTTP, Windows File Sharing, etc.
- Fixed bug, which may cause a crash of application on some call scenarios.
2011-01-25 Version 3.1.359
Recording Core (MiaRec.exe version 3.0.586)
- Increased performance. The recording engine was optimized.
2010-12-31 Version 3.1.358
Recording Core (MiaRec.exe version 3.0.575)
- Added support of G.722 wideband codec. This codec is widely used by Cisco for internal calls (between two IP phones).
- Silence detection is enabled. It was temporarily disabled since version 3.1.348
- Fixed issue in processing of UNISTIM protocol. If OpenAudioStream and CloseAudioStream are duplicated, then this may cause incorrect detecting of caller-ids when call waiting is used.
2010-10-21 Version 3.1.351
Recording Core (MiaRec.exe version 3.0.574)
- Added support for the new version of Skinny protocol (version 17 or CCM8). The old version recorded such calls with empty caller-ids.
- Fixed the "one-way audio" problem, which happens in some rare call scenarios (SIP protocol).
- Fixed compatibility with some voice gateways, which use the same RTP port for multiple concurrent calls at the same time. Such behavior may cause horrible recorded audio because the recorded file contains audio from two calls at the same time (20ms from the first call, then 20ms from the second call, then again 20ms from the first call, and so on). Additionally, some calls may be recorded with one-way audio.
- Fixed issue with Avaya protocol. Extension number/name was extracted from display message only if RTCP had non-empty values for number/name. But should be reversed (... if RTCP had empty values).
- Support of new firmware for Cisco IP Phones (MGCP protocol). Added new parsing rules for extracting caller/called phone numbers from MGCP RQNT messages. The old version recorded such calls with empty caller-ids. If you update from an older version, then contact us to receive detailed instructions on how to apply this update.
2010-09-29 Version 3.1.348
Recording Core (MiaRec.exe version 3.0.571)
- Significant re-design of a recording engine, which gives better audio quality on highly loaded servers (more than a few hundred concurrent calls). The new version is not exposed to CPU overloads while the old version may drop some RTP packets when the CPU load is near 100%. Such dropping of packets causes an absence of audio for short periods (1-2 seconds) inside the recorded audio file. Note, that such a problem occurred on highly loaded servers (600 and more concurrent calls). On smaller servers, an old version works fine.
- Prevent a recording of too long silence periods into an audio file. For example, if a call is put on hold and then retrieved from hold in 30 minutes, then normally the resulting file would have 30 minutes of silence. The new version limits silence to a maximum of five minutes. The resulting file will have only 5 minutes of silence. This results in a much shorter file size.
- Fixed compatibility with some buggy phones (SIP protocol), which change SDP ownerSessionId and version without changing other SDP parameters (address, codecs list, etc.). This change of SDP occurs usually when a call is answered (when the dial tone is stopped and audio from the remote side is started). It may cause a loss of audio for up to 5 seconds.
- Changed the logic of how Hold/Retrieve is processed for Skinny protocol. The old version created multiple call instances. The new version records all parts into one file.
2010-09-02 Version 3.1.347
Recording Core (MiaRec.exe version 3.0.568)
- Ignore Remote Desktop (RDP) traffic because it is encoded into TPKT frames and every packet is checked for H.225 validity (this consumes CPU power). With the new version traffic on port 3389 is discarded much earlier than with the old version (here we assume that H.225/H.323 traffic is never sent over port 3389).
- Fixed bug with degradation of audio quality on RTP streams, which have syncId = 0. Every second packet was ignored. This produced crops inside the recorded audio file. Such bug occurs very rarely because according to standard, phones should send RTP with unique syncId (not equal to 0) and only some "buggy" phones/PBXs don't follow standard (this happens with some Aastra and Talkswitch PBX systems)
- Added support for recording calls in the situation when both PBX and IP phone are behind NAT (and they are not in the same network, that is each device is behind its device NAT). With the old version, it caused some calls to be recorded with empty caller ids. With the new version, we try to automatically detect such a situation and do appropriate adjustments to RTP packet processing.
2010-08-20 Version 3.1.345
Recording Core (MiaRec.exe version 3.0.566)
- Fixed bug introduced in the previous version (two days ago). This bug causes some audio files to be empty (size 1KB). This bug touches the following protocols: H.323, MGCP, MGCP PRI Backhaul, SIP, Skinny.
- Ignore non-symmetric endpoints by default. "Non-symmetric" means that the endpoint has multiple NICs and can receive messages on one NIC (for example, with IP 192.168.0.10) but send a response from another NIC (with IP 10.0.0.20).
This causes problems with SIP protocol when Linksys SPA 9000 PBX sends SIP INVITE to multiple phones at the same time.
The call is answered by one of the phones and then the call is transferred to another phone.
Because each SIP INVITE has the same callid, messages from different phones are processed in MiaRec in the same call instance rather than in separate instances.
This causes two issues:
- incorrect callerid (RemoteParty Number) is displayed inside MiaRec web-interface
- "one-way audio issue" after the call is transferred to another phone. - Added new configuration parameter to INI file (see explanation above):
[Protocol::SIP]
SupportNonSymmetric = [0 | 1]
2010-08-02 Version 3.1.344
Recording Core (MiaRec.exe version 3.0.565)
- Changes to MiaRec Web Services (SOAP API):
- WSDL file is possible to retrieve now via http://<ip-address>:<port>?wsdl (for example, http://localhost:6084?wsdl)
2010-07-20 Version 3.1.343
Recording Core (MiaRec.exe version 3.0.563)
- Changes to MiaRec Web Services (SOAP API):
- RecordingFilter.action is String now instead of Enum.
- Disabled PingRecorder.py script by default. On some systems, it causes constant restart of application every 5-10 minutes. Probably, because of some security settings on Windows Server, which prevent communication between Python script and MiaRec service.
2010-07-18 Version 3.1.342
Recording Core (MiaRec.exe version 3.0.560)
- Added support of custom parameters per filter basis. If the call matches the filter condition, then it can be assigned an unlimited number of custom parameters. This can be used for integration with CRM systems, for example. For example, a call can be assigned the customer name/id.
Example:
filter1 action = record
filter1 condition = caller-number = '123' OR callee-number = '123'
filter1 customer-name = John Smith - Changes to MiaRec Web Services (SOAP API):
- It supports now storing custom parameters inside filters.
- Also, it supports adding filters to [Filters::OnCallStop] section inside the INI file.
- When a SOAP request fails, it generates how Exception with a detailed description of the error instead of pure SOAP_FAULT.
- Fixed SOAP log capability. In the previous version, the received SOAP packets were not stored inside the log file. Only sent packets were stored.
- Better naming of soap log files (easier to find the correct log file for analysis):
soap_20100101_000000_recv.log
soap_20100101_000000_send.log
Instead of:
soap_recv_20100101_000000.log
soap_send_20100101_000000.log
2010-07-02 Version 3.1.341
Recording Core (MiaRec.exe version 3.0.557)
- Fixed bug in Avaya protocol handling, which caused a deadlock in a program and then automatic restart of it.
2010-07-01 Version 3.1.340
Recording Core (MiaRec.exe version 3.0.556)
- Fixed bug introduced in the previous version (two days ago). This bug causes some audio files to be empty (size 1KB). This bug touches the following protocols: H.323, MGCP, MGCP PRI Backhaul, SIP, Skinny.
2010-06-29 Version 3.1.339
Recording Core (MiaRec.exe version 3.0.555)
- Fixed support of fragmented UDP packets. For example, the SIP INVITE message is sent inside multiple IP frames instead of one. This happens because an IP packet can hold a maximum of 1514 bytes by default. This issue caused some calls recorded with empty caller-ids
- Added support of SIP over TCP. Some softphones (based on Microsoft RTC API) use always TCP rather than UDP for SIP messages.
- Improved significantly Avaya protocol: now the extension is extracted from the RTCP packet, which is sent by IP phone. This is a very reliable method of getting the caller ID on the Avaya system.
Web-interface
- Allow create/edit/delete of Notes for regular users. Permissions can be flexibly configured. It is possible to grant some users rights to create/edit/delete Notes while disallowing such operations for other users.
- Fixed issue with deleting Notes. The old version didn't delete notes from the database.
- The width, position, and visibility of columns in the calls table are remembered now and restored after the user logins into the system again.
2010-06-04 Version 3.1.331
Recording Core (MiaRec.exe version 3.0.552)
- Fixed compatibility with UNISTIM, Avaya, and TAPI protocol, which was broken by the new recording engine (previous change)
- The backup script ignores active calls and checks if the call was already archived in a destination database (SQLite). So, it is possible to run a backup script many times with the same destination directory. New calls will be added to the backup. Existing calls will remain untouched.
2010-05-27 Version 3.1.330
Recording Core (MiaRec.exe version 3.0.551)
- A new recording engine is implemented: improving significantly performance of MiaRec when it is used for recording hundreds of concurrent calls.
- Fixed mistyping inside INI parameters: should be "consecutive" instead of "cosective"
- Fixed issue during creating an audio file with name, with exists already. Sometimes OS returns the error ENOENT instead of EEXIST
- Use only SrcIp:SrcPort -> DstIp:DstPort for Pure RTP call. Other masks (like SrcIp -> DstIp:DstPort, SrcIp:SrcPort -> DstIp) create problems on some buggy telephone systems.
For example, some Cisco Call Managers use always port 2000 for RTP streams. Use "IgnoreRtpPortChangeLight" configuration option (see below) if you want to use old behavior. - Added configuration parameter 'IgnoreRtpPortChangeLight' to section [Protocol::Rtp]
2010-05-17 Version 3.1.328
Recording Core (MiaRec.exe version 3.0.546)
- MiaRec writes now messages to the Windows NT Event Log system: start/stop the application, license type, errors, etc.
- Fixed serious bug in Skinny packets parser. If bogus data is detected as a Skinny packet and the skinny message length is too big, then the program will go out of memory because of excessive reassembling of bogus packets.
- Fixed bad audio quality on systems, where the CPU is loaded significantly (more than 80%).
2010-05-13 Version 3.1.326
Recording Core (MiaRec.exe version 3.0.543)
- Added ability to limit port on which we expect Skinny packets. By default, all packets are analyzed (decoded). Now it is possible to decode only packets on port 2000, for example.
This is very useful if MiaRec receives a lot of TCP packets from the mirroring interface, which is not Skinny (for example, HTTP, File Transfer, etc.). A decoding thread is overloaded and MiaRec crashes because the watchdog expires. See configuration parameter "SignalingPort" inside section [Protocol::Skinny] - Added option '--older [days]' to BackupDaily.py script.
With this option, it is possible to backup, for example, all calls, which are older than 30 days. - Added option '--remote-calls' to BackupDaily.py script.
2010-05-07 Version 3.1.324
Recording Core (MiaRec.exe version 3.0.542)
- Disabled "TRACE" method inside default configuration of Apache as recommended b PCI compliance check tool: "Web Server HTTP Trace/Track Method Support Cross-Site Tracing Vulnerability"
- "expose_php" is set to "off" inside the default PHP.ini file as recommended by PCI compliance check tools
Other modules:
- Telnet CLI: Show statistics about dropped packets
2010-04-29 Version 3.1.322
Recording Core (MiaRec.exe version 3.0.541)
- Updated Apache to the latest version (2.2.15)
- Updated PHP to the latest version (5.3.2)
- Improved support of Skinny protocol: sometimes Cisco Call Manager (CCM) restarts the RTP stream unpredictable (usually it happens when a call is answered and the dial tone is replaced with a real voice). That non-standard behavior caused a splitting of a call through multiple files: one side of the conversation is stored in one file and the other side is stored in a separate file with empty caller IDs.
- Improved support of TAPI protocol: some calls were recorded incorrectly (with empty caller-ids).
- Added UNICODE support for TAPI protocol (sometimes Cisco softphone sends name in UNICODE instead of ANSI).
2010-04-18 Version 3.1.318
Recording Core (MiaRec.exe version 3.0.539)
- Fixed memory leakage, which happens with very short calls (less than 1 second). Such calls were left in memory for a relatively long period (30 minutes), which may cause performance degradation if the system records hundreds of concurrent calls.
2010-04-08 Version 3.1.316
Recording Core (MiaRec.exe version 3.0.537)
- Added support of the Call Pick-Up feature. Call pick-up is a feature used in a telephone system that allows one to answer someone else’s telephone call.
If a colleague's telephone is ringing, one can answer that call by picking up one’s own telephone
and then using the “call pick-up” feature, instead of walking to the colleague’s desk.
The "call pick-up" feature is accessed by pressing a preprogrammed button (usually labeled "Pick-Up"),
or by pressing a special sequence of buttons (like *30) on the telephone set.
For example, the initial call was made from 555 to 1111.
Phone 1111 is ringing, but nobody answers the call on that phone.
Some other phone is used for "call pick-up". The one makes an outgoing call to *30 (or any other predefined sequence of buttons).
This call appears on the SIP protocol level like a call from 2222 (the phone, from which pickup is made) to *30.
Then IP-PBX stops ringing the first phone (1111) and audio from 555 is connected to the second phone (2222).
On the SIP protocol level, such a call still appears as a call between 2222 and *30.
Usually, IP-PBX sends a "Remote-Party-ID" header inside 200 OK responses.
This header contains information about the party, to which the second phone was connected actually.
So, instead of *30, the phone can display 555 as a remote party number. - Added support for rewriting caller-ids (source and/or destination phone number) by using REGEX rules. Configuration is stored inside section [RewriteCallerId] (read comments inside MiaRec.ini file for details).
Web-interface
- Optimized displaying of "Active calls only". The list of calls is sorted by setup time instead of lastupdatetime
2010-04-06 Version 3.1.312
Recording Core (MiaRec.exe version 3.0.533)
- Added support of SIP Remote-Party-ID header
Example of SIP INVITE message:
INVITE sip:5555@example.com:5060 SIP/2.0
From: "Sales Department" <sip:2222@example.com>;tag=5BB58307-10EC6E72
To: <sip:5555@example.com>
Remote-Party-ID: "John Smith" <sip:7777@example.com>;party=calling;
...
In this case, the call will be stored as "7777 (John Smith) --> 5555" instead of the expected "2222 (Sales Department) --> 5555".
The "Remote-Party-ID" header is used instead of the "From" header. - Added "IgnoreRemotePartyId" configuration parameter to INI file
Web-interface
- Columns "Time", "Disconnect Time" and "Caller Port" are sortable now
- Fixed mistake in search parameters (Data From/To). When both "From" and "To" are set to the same date, then no calls were returned at all, but should return calls in 24 hours intervals between 'From' and 'From + 24 hours'
2010-03-23 Version 3.1.309
Recording Core (MiaRec.exe version 3.0.532)
- Fixed crash of application, which may occur in some circumstances.
- Improved support of Avaya protocol (Avaya 1608 D01A phone is supported now).
2010-03-08 Version 3.1.306
Recording Core (MiaRec.exe version 3.0.529)
- A 64-bit version of MiaRec is released, which increases performance on 64-bit OS and eliminates the memory limit, which exists on 32-bit OS (a maximum of 2GB is available to 32-bit applications).
- Fixed issue with TAPI protocol.
Some buggy endpoints (Cisco softphones) do not change the RTP port and SyncId!!! between calls.
This caused a voice from one call to appear in another call record.
2010-01-28 Version 3.1.301
Recording Core (MiaRec.exe version 3.0.525)
- Added 'LowPriority' configuration option for Pure Rtp calls (section [Protocol::Rtp]).
Other modules
- The new version of WinPcap (4.1.1) is included in the MiaRec Business installer.
2010-01-28 Version 3.1.301
Recording Core (MiaRec.exe version 3.0.523)
- Added support of TCP packets fragmentation, when a very large signaling packet (H.323, TAPI, Skinny, MGCP PRI Backhaul) is sent in multiple portions (two or more TCP packets) because TCP packet has by default maximum size of 1514 bytes.
- Added support of UDP packet fragmentation (SIP protocol and other UDP-based signaling protocols). Sometimes SIP INVITE message can be larger than a single UDP packet can hold (maximum 1514 bytes by default).
- Fixed bug in MGCP protocol. MDCX message with incorrect call-id caused unexpected call disconnect of an active call.
- Added support of the "Diversion" header in the SIP protocol. This header exists in the SIP INVITE message of the forwarded call. It contains a phone number, from which the call was forwarded from.
- Added support of using 'transfer-to-number/transfer-to-name/transfer-to-id' and 'transfer-from-number/transfer-from-name/transfer-from-id' inside call recording filters
- Added support for the new version of Skinny protocol, which is used in Cisco Call Manager 7.1
2009-11-12 Version 3.1.297
Recording Core (MiaRec.exe version 3.0.518)
- A fixed serious problem with Ignored calls. If recording filters are configured to ignore some calls, then in some circumstances call can be wrongly recorded with empty caller-ids or not recorded at all because it is wrongly detected as ignored call.
- Fixed support of MGCP and MGCP PRI Backhaul protocols, which were broken in the previous version.
- Added support of protocols priority, which is useful when the same call appears in the system in many protocols, for example, the call is received by Voice Gateway (VG). VG communicates with Cisco Call Manager (CCM) with H.323 protocol. At the same time, CCM communicates with IP phones with Skinny protocol. So, there are two call legs: the first is between VG and CCM, and the second is between CCM and IP Phone. Protocols priority allows solving the issue when a call is recorded with a public DNIS number instead of a local extension number.
2009-11-04 Version 3.1.293
Recording Core (MiaRec.exe version 3.0.514)
- Increased performance and optimized memory usage.
- Added workaround for buggy IP PBX systems, which use the same RTP port for multiple rtp streams at the same time. This caused the incorrect recording of such calls: missing calls and crops in the recorded audio file. For these purposes new configuration parameter was added: 'RtpCompareBothSrcAndDstIp'
- Fixed problem with audio shifting because of long silence (for example, the call is put on hold)
- Added workaround for Rtp pure calls, which are sent to the gateway on the same RTP port. In this case, multiple RTP streams are handled by a single call instance (recorded into a single audio file) but should be processed by multiple instances.
- Added ability to disable resolving of phone's IP into NETBIOS/DNS name. By default is disabled now.
- Added support of very large trace files (> 4GB)
Web-interface
- Fixed error, which occurs when a user tries to delete a call. This error was introduced in the previous version.
- Replaced script "OptimizeDatabase.py" with "Pgsql\bin\vacuumdb.exe". This script is executed regularly on the database (every night) and optimizes indexes and other data structures in order to make access to the database faster.
- Added script 'DeleteOldIgnoredCalls.py', which can be used to automatically delete from database calls, which are stored there because of option 'SaveCDRsForIgnoredCalls = 1'. This script is to be executed automatically at night and delete calls, which are older, let's say 30 days. This allows to decrease database size and thus makes it faster for the search operation. Usually storing of ignored calls inside the database for a long period is not necessary. 'SaveCDRsForIgnoredCalls' is used usually only for testing call recording filters.
2009-10-03 Version 3.1.292
Web-interface
- Added support for creating Notes on recorded calls. In this version, only administrators can add/edit/delete notes. Regular users have no sufficient rights yet (will be added in one of the next versions).
2009-09-28 Version 3.1.290
Recording Core (MiaRec.exe version 3.0.501)
- Added support for recording very long calls (trader calls). The call is established once in the morning and disconnects only at the end of the day. During a day such a call contains phases of "talk" and "silence". The old version was recording such calls into a single very large audio file. The new version is able to detect silence periods and splits the audio into multiple small parts. Only "talk" periods are recorded. "Silence" is ignored and not stored on a disk.
2009-09-24 Version 3.1.285
Recording Core (MiaRec.exe version 3.0.500)
- Added ability to, optionally, disable Automatic Gain Controller (AGC) and Packet Loss Concealment (PLC) filters. See options 'UseAGC', 'AGCMaxGain' and 'UsePLC' inside MiaRec.ini file. Disabling these filters can increase overall performance in the cost of audio quality.
- MP3 bitrate and quality settings are configurable now. See options 'Mp3Bitrate' and 'Mp3Quality' inside the MiaRec.ini file.
2009-09-22 Version 3.1.284
Recording Core (MiaRec.exe version 3.0.499)
- Added support of Packet8 phones. They have created their own version of the RTP protocol.
- Fixed rare deadlock in the application, which causes automatic restart of the service (watchdog mechanism)
2009-09-17 Version 3.1.282
Recording Core (MiaRec.exe version 3.0.496)
- Added support of opening Network Interface Card (NIC) in non-promiscuous mode. Some Wi-Fi adapters don't support promiscuous mode and recording is possible only when such mode is disabled.
- Added support for configuring Pcap kernel buffer size (see 'PcapKernelBuffer' inside MiaRec.ini)
2009-08-24 Version 3.1.275
Recording Core (MiaRec.exe version 3.0.494)
- Fixed problem with automatic creating of non-existing parent directories, when an audio file is stored on a network share (UNC path)
2009-08-18 Version 3.1.272
Recording Core (MiaRec.exe version 3.0.491)
- Improved processing of Skinny protocol. Sometimes Cisco Call Manager sends OpenReceiveChannel command to IP phone and then immediately CloseReceiveChannel and again OpenReceiveChannel.
This causes a call recorded with empty caller-ids. - Fixed compatibility with Broadsoft IP PBX (SIP protocol). When Broadsoft receives INVITE from an endpoint, which is behind NAT (SDP contains the local IP address, for example, 192.168.0.1), it starts sending RTP to this local IP. Such packets go nowhere, but the recorder sees them and starts recording.
Sometimes it is only 10 packets, sometimes more than 100.
Broadsoft continues sending such RTP packets till the moment when at least one RTP is received from the remote endpoint.
In this case, it can extract the real IP address and port of the NAT server and start sending RTP to the new address.
This non-standard behavior caused calls to split into two files: one side of the conversation is stored in one file and the other side is stored in a separate file with empty caller IDs. - Fixed compatibility with Broadsoft IP PBX (SIP protocol), which sends RE-INVITE with the same CSeq as original INVITE (bug in Broadsoft?). This causes a problem with distinguishing responses between INVITE and RE-INVITE.
- SIP Protocol: fixed bug with call scenario, when INVITE has no SDP, but ACK has SDP.
Web-interface
- Fixed incorrect displaying of date/time, when the customer has timezone with half-hour, like -4:30 (Caracas)
2009-07-24 Version 3.1.270
Recording Core (MiaRec.exe version 3.0.488)
- By default, audio files are encoded into MP3 rather than WAV. MP3 encoding routines were optimized significantly in recent versions and now hundreds of calls can be encoded simultaneously.
- Added new configuration parameters: 'RtpHoldTimeout', 'SaveCDRsForIgnoredCalls', 'RtpFastAccessListAddTimeout'
- Increased default value of 'MinCosecutiveRtpMaskMatch' to 100. The old value (50) is not enough.
- SQL ConnectQuery modifies the record state column now
- Display "Protocol CallId" in web-interface
- Improved processing of Avaya protocol: some calls were recorded with empty caller-ids
- Fixed bug in processing of MGCP protocol: some calls were recorded with empty extension numbers.
- Improved recording algorithms for situations, when the first RTP packet is received before the signaling packet (SIP, H.323, etc.). This may happen because RTP is sent over UDP, while signaling may be sent over TCP, which is slower than UDP.
- Improved recording algorithms for situations, when IP PBX starts sending new RTP stream (with newly generated sync id) even if SDP parameters were not changed. This situation caused the splitting of audio onto two files. The first files contained one side of the conversation, while another side is stored in a separate file.
Web-interface
- Added support for displaying Ignored calls in the web interface (configuration option 'SaveCDRsForIgnoredCalls' should be set to 1)
2009-06-26 Version 3.1.263
Recording Core (MiaRec.exe version 3.0.479)
- Added configuration parameter 'AudioBufferSize' to MiaRec.ini file.
- Optimized algorithms for processing of Avaya protocol: less memory usage, higher performance under high load.
- Fixed memory leakage
- Fixed rare crashes during the processing of some UNISTIM packets
- Fixed issue in RTP stack, which may cause recording of excessive silence periods into the audio file.
Web-interface
- Fixed bug with inability to play an audio file if its call state is not 6 (normal disconnect), but for example, 7 (hold) or 8 (transferred)
Other modules
- Changes inside Python script "MyConfigParser.py": print warning instead of throwing an exception, when MiaRec.ini file has incorrect syntax (for example, because of mistyping made by the user)
- Telnet CLI: added command 'show pcap stat'
2009-06-18 Version 3.1.259
Recording Core (MiaRec.exe version 3.0.473)
- Added configuration parameters for different timeout into MiaRec.ini (RtpStartTimeout, RtpNormalTimeout, RtpEndTimeout)
- Fixed memory leakage because some of the calls are never disconnected.
- Added workaround for Aastra PBX, which has a bug in the RTP stack: it sends all packets with SSRC equal to 0.
If the duration between consecutive calls is less than 5 seconds, then a voice will be recorded into an incorrect file. - Default value for configuration parameter "MinCosecutiveRtpMaskMatch" is increased from 10 to 50.
Empiric tests show that MIN_CONSECUTIVE_MASK_MATCHES = 10 is too low.
It should be at least 50, otherwise, on some systems, it may produce a one-way call without call signaling (pure RTP).
When Cisco receives an incoming call from the phone behind NAT,
It tries first to send RTP packets to the IP address and port, which is provided inside INVITE SDP.
This IP and port may be local and not reachable from the public network.
After sending about 20-30 packets, CCM sends its own SDP to the phone.
The phone starts sending its own RTP to CCM and this opens a NAT hole on the router.
CCM detects this incoming traffic and starts sending its own packets in the reverse direction. So, for a single call, it may be three (3) unique RTP streams instead of the normal two streams. - Fixed rare deadlock in the program, which causes automatic restart of the service (watchdog mechanism).
Other modules
- Telnet CLI: trace configuration is reloaded upon command "config reload".
Web-interface
- Fixed incorrect display of partially recorded files.
2009-05-30 Version 3.1.251
Recording Core (MiaRec.exe version 3.0.460)
- Added support of SQLite database engine. CDRs can be stored inside this database.
- Added support of Cisco MGCP PRI Backhaul protocol, which is used very often between Voice Gateway and Cisco Call Manager.
2009-05-27 Version 3.1.250
Recording Core (MiaRec.exe version 3.0.458)
- Fixed crash with SIP and MGCP protocols, when the response is parsed with an invalid status code.
- Fixed crash caused by some packets in UNISTIM protocol.
Other modules
- Added "FixDisconnectTime.py" script, which is to be run periodically (every night, for example). And it will fix a disconnected time for all calls which were not completed normally (because of an application crash).
2009-05-22 Version 3.1.246
Recording Core (MiaRec.exe version 3.0.454)
- Fixed compatibility with Polycom phones (SIP protocol). Sometimes they can send CANCEL after 200 OK is received. In this case, CANCEL should be ignored according to RFC (The CANCEL request, as the name implies, is used to cancel a previous request sent by a client. Specifically, it asks the UAS to cease processing the request and to generate an error response to that request. CANCEL has no effect on a request to which a UAS has already given a final response).
2009-05-19 Version 3.1.244
Other modules (MiaRec.exe version 3.0.451)
- Added Telnet command "config reload", which reloads configuration without the necessity to restart service.
- Added SOAP interface (integration with third-party applications). It allows to add/edit/delete recording filters and reload configuration through the SOAP interface.
- Ports for Telnet, LiveMonitoring, and SOAP interface are configurable now through the INI file.
2009-05-05 Version 3.1.243
Recording Core (MiaRec.exe version 3.0.446)
- Fixed rare deadlock inside the program, which caused an automatic restart of the service (watchdog mechanism).
- Fixed memory leakage happens with Skinny packets that contain multiple messages inside a single TCP packet.
- Fixed rare crash in H.323 protocol, which is caused by corrupted packet.
2009-04-30 Version 3.1.241
Recording Core (MiaRec.exe version 3.0.444)
- Fixed rare deadlock inside the program, which caused an automatic restart of the service (watchdog mechanism).
Other modules
- Telnet CLI: correct processing of "Left Arrow" and "Right Arrow" keys
2009-04-26 Version 3.1.240
Recording Core (MiaRec.exe version 3.0.439)
- Live Monitoring: changed "RTSP://" link to "live://" to prevent conflict with other programs, which may be installed on the user's computer and which attached themselves to "RTSP://" link.
- Live Monitoring: dynamically decrease RTP jitter buffer size when live monitoring is used on the call. This decreases significantly audio latency.
2009-04-24 Version 3.1.239
Recording Core (MiaRec.exe version 3.0.438)
- Improved processing of Skinny protocol: some "buggy" Cisco IP phones send RTP packets with comfort noise and sync is = 0 (this is not standard behavior). This issue caused the splitting of calls into two parts: one side of the conversation is recorded in one file, while the other side is recorded in a separate file with empty caller ids.
- Fixed random crashes, which are caused by a deadlock in the program
- Fixed issue with creating incorrect filenames, like "D:\Recordings\D:\Recordings\call.wav", which occurs when both configuration parameters "OutputDirectory" and "FileNameFormat" have absolute paths.
- Optimized MP3 encoding algorithms
2009-04-16 Version 3.1.237
Recording Core (MiaRec.exe version 3.0.432)
- Improved processing of Avaya protocol: some calls are detected with empty caller-id because Avaya has changed its own protocol.
- Fixed problem with recording calls on high load servers: some calls were recorded with empty caller-ids or audio from one call appeared inside the file of another call.
- Fixed rare crash on Skinny protocol, when a single Skinny packet contains multiple messages belonging to different calls (like "DisconnectCall A" and immediately "ConnectCall B").
- Improved processing of Skinny protocol: if the signaling message (OpenReceiveChannel) is lost or delayed, then the call was recorded into two files: one side of the conversation was stored in one file and the other side was stored in another file with empty caller-ids.
Other modules
- Added support of Live Monitoring: it is possible to listen to an active call in realtime with very low latency (about 200ms)
Web Interface
- Access rights permissions (extensions) can be matched to "number" (default), "name" or both fields (configurable via config.php)
2009-04-03 Version 3.1.235
Recording Core (MiaRec.exe version 3.0.423)
- Improved processing of H.323 and Skinny protocols: ignore duplicating packets, which may occur when port mirroring is configured on multiple ports.
- Fixed issue with memory leakage, which happens with very short calls.
2009-04-02 Version 3.1.234
Recording Core (MiaRec.exe version 3.0.421)
- Fixed processing of RE-INVITE with Packet8 phones. This error caused that only the first 2 minutes of a call were recorded.
Web Interface
- Fixed incorrect displaying "Partial record (license limit)" on good calls. This problem happened only between version 3.1.226 (released on 2009-03-16) and this one.
2009-04-01 Version 3.1.232
Recording Core (MiaRec.exe version 3.0.420)
- Added support of protocol configuration (enable/disable, ports). This allows to switch off parsing of a particular protocol, like SIP, H.323, Skinny, MGCP, and others.
2009-03-30 Version 3.1.230
Other modules
- Added script DeleteOldCall.py, which can be used for automatic deleting of old calls (older than 30, 60, or any other number of days).
- Fixed mistake inside script Restore.py