Recording Skype calls. Part 2. Skype Auto Recorder


In part 1 I have explained how to use Skype API and posted some code examples. In this part I will tell you about the result of my work - an open-source application Skype Auto Recorder that is used now in the conference room and workplaces in my company for recording Skype conversations with clients.

The requirements for the application that I wanted to develop:

  • high-quality recording with a possibility to improve the resulting sound,
  • silent working without any prompts,
  • auto-recording of the conversations,
  • auto start with Windows and auto-connect/reconnect to Skype,
  • flexible configuration,
  • filters for recording conversations with only specified contacts,
  • distribution of recorded files to different locations (including network paths) depends on set filters,
  • confidence in the application that it doesn’t steal conversation records.

Wish to make something useful for our company :) led me to the creation of my own application that will record Skype conversation and meets all points listed above.

It is developed using C# and WPF without any third-party libraries for communication with Skype.

It is always visible in the tray:


The tray icon and its tooltip show the current application state:

  • Disconnected - Skype isn't running or the user has declined attachment to it), the icon is grey. The application doesn't do anything in this state.
  • Connected and waiting for calls, the icon is colored. Application reacts on Skype calls and starts recording.
  • Recording - icon is colored with a red dot. Application is recording Skype conversation.

Tray icon has a context menu with the following items:

  • Settings - provides access to all application settings.
  • About - information about application and link to its home page and source code.
  • Close - closes the application.

Settings window has the next look:


It provides the following settings:

  • Set the application to auto-start with Windows. Setting's value is stored in the Run section of the Windows Registry.
  • Filters: you can bind different file names for different contacts or set of contacts. The filter provides a convenient way to distribute and sort recorded files automatically. For example, our team gets a recorded file to our local server using a network path just after the meeting.
  • Optionally, all calls can be recorded to the specified file name (Record unfiltered conversations setting); otherwise, Skype Auto Recorder processes only conversations with contacts specified in the filters. File name from this setting is used only when an application can’t find a filter for contact.
  • Some of the contacts can be ignored by using Don’t record conversations with contacts edit box. Note, that it works only for contacts that are not specified in the filters.
  • And the last setting – increasing volume of the resulting MP3 file. It is useful when your conversation partner has a low microphone. Note, that a too-high increase may corrupt a sound stream.

In the filter's list of contacts you must specify contacts Skype logins (can be seen in contact properties), not their display names. You can enter any number of contacts per filter separating them with comma or semicolon. For the output file name you must enter a path with the desired file name. If you don't specify an extension then .mp3 will be added automatically. File names can contain placeholders:

  • {contact} will be replaced with the login of contact who is speaking with you.
  • {date-time} - date and time of the conversation in format yyyy-MM-dd (when it is started).

If you want to save only one file with the last conversation then don't use placeholders and Skype Auto Recorder will rewrite it.

Settings window verifies all inputs to exclude possible mistakes in the file names.

All settings are stored per user in the Windows Roaming folder.

The output format of the recorded files after processing is MP3 with variable bit-rate and optionally increased sound volume. If the application for some reason can’t distribute files to the specified location (for instance, network path or removable drive is not accessible) then it stores it to the default Music folder of the current Windows user and tells about this via message box.

The developed application fully meets the requirements listed above.

The latest version and the source code can be found on GitHub.

Feel free to use it! :)

next post: JIRA Story Print