About SFLphone

Architecture details

SFLphone is based on a MVC model; The daemon and the client are two separate processes and communicate via DBus.

The model would be the daemon. All the processing is done by the daemon; it handles the communication layers (SIP/IAX), the capture and the playback, it maintains internally data structures for accounts and calls. It provides also the DBus XML interfaces, which reflects the methods the client will be able to call.

The vue would be the GTK graphical user interface. As much as possible, the client should not make any processing, but only display and reflect the internal state of the daemon.

The controller would be DBus; it makes the communication between the client and the server. We mostly use methods (when a client calls the daemon) but signals too to implement callbacks.

This architecture is very flexible, even though the code writing might be more tedious.

Features map

In this section are described the implemented and functional features of SFLphone. Some are already available in the 0.9.1, some will be added in the next 0.9.2 release.

SIP features

We were limited by the exosip library for the multiple sip account support; now we migrated to pjsip and everything is fine; this library is very great and provides one of the most comprehensive documentation. So, we support every functionalities a softphone may dream of: transfer, hold, dtmf support, stun server. Used with asterisk as a proxy, you can be notified of your voicemail.

IAX2 features

The IAX (Inter-Asterisk eXchange) part is also quite complete, even though the multi-IAX account is not supported. But all the other functionalities are available; The voicemail notification will be added in the 0.9.2 release.

Audio layer

The previous 0.9.1 release used to provide only an ALSA interface, with the support of dmix plugin for software sound mixing. So we kept the old alsa interface, with the same GTK GUI and the possibility to select a plugin and an audio device. The next one (0.9.2) will provide an extra native pulseaudio interface also. The user will have the choice in the GTK GUI.

Dynamic Codecs

Here are the supported codecs:

  • G711a/G711u
  • GSM
  • Speex (8khz)
  • ILBc: in progress

SFLphone Client

Desktop Integration

SFLphone can be run on the system tray icon to free space on the desktop. For that, you have to enable the notification zone of the system tray. Moreover, we implemented the desktop notifications for some events like an incoming call, a voicemail waiting, an error while registering an account. So, even if SFLphone is hidden in the system tray, you will never miss a call with the desktop notification. Check out the screenshots to see how it looks.

Packaging

The package for the previous release (0.9.1) are available for Ubuntu 8.04. For the next release, we will try to take some time packaging the software for other linux distributions. The tarball will be also available.

Locale settings

Here are the supported languages

  • French
  • English
  • Spanish

History

The history is not persistent yet, but during a session, you can have access to every events (incoming-outgoing-missed calls), with date information and duration.

Configuration wizard

An account creation assistant is available. When no account is configured, it will launch automatically; It is always available though.

Goals

Previous release (0.9.1)

  • Server side
    • Functional IAX transport
    • Near perfect audio
    • Multiple-client (GUI or other) connectivity to server
  • New Gtk+ GUI with following functionality (although the server can do more)
    • User can place a call
    • User can answer a call
    • User can transfer a call
    • User can put a call on hold and off hold
    • User can have unlimited number of calls
    • User is informed of waiting voice mail
    • User can set up new SIP/IAX accounts
    • User can edit current accounts
    • User can delete accounts
    • User can adjust speaker and microphone volume
    • All instances of the UI must stay in sync

Next release 0.9.2

  • Server side
    • Perfect audio
    • Better error handling of failed account registrations
    • Fully working multiple SIP account functionality
    • Pulseaudio support
    • Gtk+ GUI updates
    • Call history
    • User can set up audio parameters
    • User can set up STUN and proxy settings for SIP accounts
    • User can choose a ringtone theme
    • Desktop notification of events
    • User can choose an account to place a call with
  • Basic Python command line client
    • User can place a call
    • User can answer a call
    • User can send DTMF
    • User can transfer a call

For release 0.9.5

  • Server side
    • Contact management (LDAP)
    • SMS sending
    • Status (DND, Available, …)
  • Gtk+ GUI updates
    • User can receive and send SMS messages
    • User is informed of call duration
    • User can set up speed call buttons
    • User can set a status
  • Python command line client
    • Stable and mature code
    • Extensible and configurable client
    • User can put a call on hold and off hold
    • User can adjust speaker and microphone volume
    • User can script the client and integrate into other components
    • CLI stays in sync with any other number of GUI/CLI/clients