# Jami (logiciel)

Jami, anciennement appelé SFLphone puis Ring$^,$, est un logiciel libre qui permet aux utilisateurs de passer des appels téléphoniques ou vidéo via Internet ainsi que des partages d'écran. Il existe des fonctionnalités additionnelles comme la messagerie instantanée, le transfert de fichiers et la visioconférence. Il est disponible sur les environnements de bureau (Windows, macOS, Linux) ainsi que sur smartphone (Android, iOS).

## Historique

En 2005, Cyrille Béraud lance le projet de développement d'un téléphone numérique pour les entreprises, entièrement conçu à partir de technologies ouvertes (open source). SFLPhone est un « Téléphone Logiciel » professionnel pouvant gérer, de manière quotidienne, un nombre illimité de lignes et d'appels. Conforme aux standards de télécommunication (SIP, IAX), il s'interconnecte avec le logiciel Asterisk, autocommutateur téléphonique privé, distribué sous licence libre GPLv2 ou sous licence commerciale pour systèmes GNU/Linux.
SFLphone est l’un des rares logiciels de téléphonie sous Linux à prendre en charge PulseAudio dès le début. Ubuntu le recommande alors pour une utilisation en entreprise en raison de fonctionnalités telles que la téléconférence et le transfert d'appel assisté.
En novembre 2009, le magazine CIO a classé SFLphone parmi les cinq meilleurs logiciels de téléphonie VoIP open source. Au-delà de SFLphone, Ring a conservé la compatibilité et le support SIP, tout en ajoutant une nouvelle plateforme de communication ne nécessitant pas de serveur centralisé pour établir la communication.
En mai 2015, SFLphone devient Ring et intègre la technologie OpenDHT qui permet une architecture distribuée.
En novembre 2016, il est intégré au projet GNU. Ring est un logiciel gratuit et open source publié sous la licence GNU General Public License Version 3+.
En janvier 2019, Ring devient Jami afin de ne pas créer de confusion avec des produits commerciaux utilisant également le terme anglais ring.

## Généralités

Jami est un logiciel de téléphonie et de messagerie instantanée compatible avec SIP pour Linux, Microsoft Windows, OS X, iOS et Android. Développé et mis à jour par Savoir-faire Linux, ainsi qu'avec l’aide d’une communauté mondiale d’utilisateurs et de contributeurs, Jami se positionne comme un logiciel concurrent de l'application Skype$^,$$^,$.
Deux types de comptes sont actuellement disponibles : SIP et Ring. Les deux types de comptes offrent des fonctionnalités similaires, notamment la messagerie, la vidéo ainsi que l'audio. Un compte SIP permet au softphone Jami de se connecter à un serveur SIP standard, alors qu'un compte Ring peut enregistrer ou utiliser un compte configuré sur le réseau Jami décentralisé, ce qui ne nécessite aucun serveur central.
Jami créé son propre réseau sur lequel il peut répartir les fonctions de répertoire, l'authentification et le chiffrement sur tous les systèmes qui y sont connectés. Les paquets sont disponibles pour toutes les distributions principales Linux, y compris Debian, Fedora et Ubuntu. Des versions distinctes pour GNOME et de KDE sont également disponibles.

## Conception

Jami est basé sur un modèle MVC, avec un daemon (le modèle) et un client (la vue) en communication. Le daemon (processus informatique en arrière-plan) gère tout le traitement, y compris la couche de communication (SIP / IAX), la capture et la lecture audio. Le client est une interface graphique destinée à l'utilisateur. D-Bus peut servir de contrôleur permettant la communication entre le client et le daemon.

## Fonctionnalités

* Compatible SIP avec support OpenDHT
* Nombre illimité d'appels
* Messagerie instantanée
* Historique des appels consultables
* Enregistrement d'appel
* Transfert d'appels assisté
* Réponse automatique aux appels
* Mise en attente
* Appels audio et vidéo avec audio multipartie et vidéoconférence expérimentale
* Prise en charge audio multicanal (expérimental)
* Streaming de fichiers vidéo et audio pendant un appel
* Prise en charge de TLS et SRTP, méthode de chiffrement entre les appareils
* Plusieurs codecs audio pris en charge: G711u, G711a, GSM, Speex (8, 16, 32 kHz), Opus, G.722 (détection de silence prise en charge avec Speex)
* Prise en charge de plusieurs comptes SIP, avec prise en charge STUN par compte et abonnement de présence SIP
* Support DTMF
* Contrôle automatique du gain
* Assistant de compte
* Raccourcis clavier globaux
* Support de sonnerie Flac et Vorbis
* Notification du bureau : numéro de messagerie vocale, appel entrant, messages d'information
* SIP Re-invite
* Intégration du carnet d'adresses dans GNOME et KDE
* Prise en charge de PulseAudio
* Prise en charge du kit de connexion audio Jack
* Paramètres régionaux : français, anglais, russe, allemand, chinois, espagnol, italien, vietnamien
* Ouverture automatique de l'URL entrant
* Chiffrement de bout en bout utilisé pour le chat, la vidéo et la voix
* Décentralisée

## Fonctionnement

Jami est entièrement distribué et repose sur deux réseaux distribués distincts :
* OpenDHT, une table de hachage distribuée
* Un contrat Ethereum pour l'enregistrement des noms d'utilisateurs