Rapport de Projet de Fin D'études: Développement Et Intégration de Solutions CTI Dans Une Plateforme Cisco
Rapport de Projet de Fin D'études: Développement Et Intégration de Solutions CTI Dans Une Plateforme Cisco
Rapport de Projet de Fin D'études: Développement Et Intégration de Solutions CTI Dans Une Plateforme Cisco
des abréviations
Cycle de formation des ingénieurs en Télécommunications
Option :
Ingénierie des Réseaux
Seifeddine Tlili
Encadrants :
M. Riadh Tebourbi (SUP’COM)
M. Nizar Hedhili (OneTech Development)
Travail proposé et réalisé en collaboration avec
Année universitaire : 2006/2007
Dédicaces
A mes parents,
A mon frère,
A ma soeur,
A Weal et Youssef
A mon beau frère Hamadi
A toute ma famille,
Je dédie ce modeste travail
ii
Remerciements
Ce projet, réalisé au sein du Groupe OneTech dans l’entreprise OneTech développement
s’inscrit dans le cadre du Projet de Fin d’Etudes à l’Ecole Supérieure des Communications
de Tunis (SUP’COM) pour l’obtention du diplôme d’ingénieur en Télécommunications.
Au terme de ce projet, je tiens à exprimer ma profonde gratitude et mon immense respect à
M.. Riadh Tebourbi, maître assistant à Sup’Com, ainsi que M. Nizar Hedili Directeur
Technique à OneTech Développement pour m’avoir soutenu durant la période de mon projet.
J'aimerais témoigner du plaisir qu'était pour moi de travailler sous leurs directives.
Je tiens également à exprimer ma profonde reconnaissance à M. Samy Chapoutot, directeur
Commercial à OneTech développement pout sa disponibilité, ses qualités humaines et ses
conseils précieux.
De même, je souhaite transmettre l'expression de ma reconnaissance et ma plus profonde
gratitude aux ingénieurs de OneTech Développement qui m’ont offert un excellent cadre de
travail ainsi qu’un climat extrêmement agréable.
Avec beaucoup d'égard, je ne manquerai pas d'exprimer ma grande reconnaissance à tous les
enseignants et administrateurs de l'école supérieure des communications de Tunis et tous les
membres du jury pour avoir accepté de juger ce modeste travail
iii
Avant propos
Dans le cadre da ma formation d’ingénieur en télécommunication à l’École Supérieure
des communications de Tunis, j’ai effectué un projet de fin d’études au sein de l’entreprise
OneTech développement filiale du groupe tunisien One TECH Group. Le sujet porte sur la
conception et l’implémentation de services liés à la téléphonie IP et le couplage téléphonie
informatique sur la plateforme Cisco CallManager.
Avec son concept « One Stop Shop », le groupe One TECH fournit une multitude de
solutions complémentaires pour la réalisation d’un large éventail de sousensembles complets
et de produits finis selon les exigences des clients et les normes internationales.
Les sociétés du groupe One Tech offre des solutions complémentaires, garantissant ainsi des
économies de temps, de transport et d’intégration [1].
Conscient des évolutions et des mutations dans le domaine des Technologies de l’information
et des communications, vecteurs de croissance et de développement à l’échelle mondiale, et
des enjeux vitaux à réduire la fracture numérique, OneTech affirma la détermination à
orienter sa stratégie vers les nouvelles Technologies de l’information et des communications
dans le cadre de partenariats internationaux axés sur la complémentarité [1].
iv
Table des matières
Table des matières :
I.1. Introduction générale........................................................................................................1
Chapitre 1 : Etude de problématique
I.1. Introduction.......................................................................................................................3
I.2. Architecture CTI de CallManager...................................................................................4
I.3. Déploiement de JTAPI dans une architecture Cisco......................................................5
I.4. Déploiement de services de téléphonie IP dans une architecture Cisco.......................6
I.4.1. Principe de fonctionnement des services de téléphonie IP.........................................7
I.5. Bilan de l’analyse et choix de la solution.........................................................................7
I.5.1. Ressources matérielles................................................................................................8
I.5.2. Etude des solutions possible........................................................................................8
I.5.2.1. Partie utilisateur.....................................................................................................8
I.5.2.1.1. Intégrer l’interface dans un Formulaire HTML..............................................8
I.5.2.1.2. Intégrer l’interface dans une interface utilisateur graphique.....................9
I.5.3. Partie serveur...............................................................................................................9
I.5.4. Choix de la solution.....................................................................................................9
I.6. Spécifications des besoins................................................................................................10
I.6.1. Spécifications des besoins fonctionnels....................................................................10
I.6.1.1. Développement de la partie Serveur d’application CTI......................................10
I.6.1.2. Développement de la partie Client......................................................................10
I.6.1.2.1. Développement de l’interface Client................................................................10
I.5.1.2.2. Développement de la partie CTI au niveau du client....................................11
I.7. Spécifications des besoins non fonctionnels...................................................................11
I.7.1. Contrainte temps de réponse.....................................................................................11
I.7.2. Contraintes liées au développement..........................................................................11
I.8. Conclusion........................................................................................................................11
Chapitre 2 Architecture et conception
II.1. Introduction....................................................................................................................12
II.2. Architecture matérielle et protocolaire........................................................................12
II.3. Choix de l’architecture..................................................................................................14
II.3.1. Diagramme de déploiement......................................................................................14
II.3.2. Justification conceptuelle..........................................................................................15
II.3.2.1. Choix de l’architecture client serveur.................................................................15
v
Table des matières
II.3.2.2. Choix du client CRM..........................................................................................15
II.4. Diagrammes de cas d’utilisation de la solution...........................................................15
II.4.1. Définition des différents acteurs agissant sur le système..........................................15
II.4.2. Les packages du diagramme de cas d’utilisation......................................................17
II.4.3. Diagrammes de cas d’utilisation...............................................................................18
II.4.3.1. Package IpPhoneService.....................................................................................18
II.4.3.2. Package PushtoPhone..........................................................................................19
II.4.3.3. Package Database................................................................................................20
II.4.3.4. Package GUICrm................................................................................................21
II.4.3.5. Package Telephony.............................................................................................22
II.5. Diagrammes de classes...................................................................................................22
II.5.1. Diagramme de classe du Client Crm.........................................................................23
II.5.1.1. La Classe CallerInfoServer.................................................................................24
II.5.1.2. La classe GuiCrm................................................................................................24
II.5.1.3. La classe updateDb..............................................................................................24
II.5.1.4. La classe NumberFind.........................................................................................25
II.5.1.5. La classe Affiche.................................................................................................25
II.5.1.6. La classe AddToDb.............................................................................................25
II.5.1.7. La classe main.....................................................................................................25
II.5.2. Diagramme de classe du serveur d’application CTI.................................................26
II.5.2.1. La classe PushXML............................................................................................27
II.5.2.2. La classe Findnum...............................................................................................27
II.5.2.3. La classe Index....................................................................................................27
II.5.2.4. La ClasseMenuDirectory.....................................................................................28
II.5.2.5. La Classe Search.................................................................................................28
II.6. Digrammes de séquence.................................................................................................28
II.6.1. Diagramme de séquence du serveur d’application CTI............................................29
II.6.2. Digramme de séquence du client CRM.....................................................................30
II.7. Conclusion.......................................................................................................................30
Chapitre 3 : Solution et implémentation
III.1. Introduction..................................................................................................................31
III.2. Environnement et langage de programmation..........................................................31
III.3. Choix de l’architecture logicielle.................................................................................32
III.3.1.Le package JTAPI.....................................................................................................32
vi
Table des matières
III.3.2.L’API Swing :...........................................................................................................36
III.3.3.L’API « JDBC »........................................................................................................36
III.3.4.Les serveurs...............................................................................................................37
III.3.5.Le système de gestion des bases de donnés :............................................................37
III.3.6.Les JSP......................................................................................................................37
III.3.7.XML..........................................................................................................................38
III.4. Les interfaces................................................................................................................38
III.4.1.Les interfaces utilisées pour les IP Phones................................................................39
III.4.2.Les interfaces graphiques..........................................................................................40
III.4.3.Lancement du Service...............................................................................................44
III.5. Conclusion.....................................................................................................................46
Conclusion générale ..............................................................................................................46
Annexe.....................................................................................................................................49
Bibliographie...........................................................................................................................54
vii
Table de figures
Table de figures
Figure 1 Interfaces applicatives de CallManager.......................................................................4
Figure 2 Architecture Cisco CTI................................................................................................5
Figure 3 Composants essentiels pour les services de téléphonie IP Cisco.................................6
Figure 4 Enregistrement du téléphone IP et consultation des services......................................7
Figure 5 Architecture matérielle de la solution........................................................................13
Figure 6 Diagramme de déploiement du Service.....................................................................14
Figure 7 Les packages utilisés..................................................................................................17
Figure 8 Diagramme des packages...........................................................................................17
Figure 9 Diagramme du package « IpPhoneService ».............................................................19
Figure 10 Package PushToPhone.............................................................................................20
Figure 11 Package PushToPhone.............................................................................................21
Figure 12 Package GuiCrm......................................................................................................21
Figure 13 Package Telephony..................................................................................................22
Figure 14 Diagramme de classe du Client Crm.......................................................................23
Figure 15 Diagramme de classe du serveur d'application CTI.................................................26
Figure 16 Diagramme de séquence du serveur d'application CTI...........................................29
Figure 17 Diagramme de séquence du Client Crm..................................................................30
Figure 18 Modèle d’appel Jtapi................................................................................................33
Figure 19 Transition d’état du Provider...................................................................................34
Figure 20 Diagramme de transition d’un call...........................................................................35
Figure 21 Initialisation du moteur JTAPI et connexion au CallManager................................36
Figure 22 Exemple d'utilisation de l'API XML de Cisco.........................................................38
Figure 23 Interfaces du service de téléphonie IP.....................................................................39
Figure 24 Page d’accueil..........................................................................................................40
Figure 27 Interfaces Swing......................................................................................................41
Figure 28 Ajout d’un agent d’une société................................................................................42
Figure 29 Rechercher un utilisateur.........................................................................................42
Figure 30 Ajout d’informations d’une société dans notre base de données.............................43
Figure 31 Recherche d’informations d’une société..................................................................43
Figure 32 Affichage des coordonnées de l’interlocuteur.........................................................44
Figure 33 Affichage des données à l'écran du poste IP............................................................45
Figure 34 Numéros non reconnus dans la base de données.....................................................45
Figure 35 Architecture globale du CTI....................................................................................51
Tlili.Seifeddine PFE Juin 2007 viii
Liste des abréviations
Liste des abréviations:
A
ACD Automatic Call Distributor
API Application Programming Interface
C
CCM Cisco CallManager
CRM Customer Relationship Management
CTI Computer Telephony Integration
CTIQBE Computer Telephony Interface Quick Buffer Encoding
G
GUI Graphical User Interface
H
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
I
IVR Interactive Voice Response
J
JDBC Java DataBase Connectivity
JSP Java Server Page
JTAPI Java Telephony API
JVM Java Virtual Machine
L
LDAP Lightweight Directory Access Protocol
Tlili Seifeddine PFE Juin 2007 ix
Liste des abréviations
T
TAPI Telephony API
TAPI SRV TAPI Server
TOIP Telephony Over IP
TSP Tapi Service Provider
U
UML Unified Modelling Language
X
XML Extensible Markup Language
Tlili Seifeddine PFE Juin 2007 x
Introduction générale
Introduction générale
Dans un monde économique toujours plus actif, il n'est pas nécessaire de rappeler
l'importance de la relation clientèle. S'il est nécessaire de trouver de nouveaux prospects, il est
aussi important de conserver ses actuels clients.
Hors, il apparaît que la relation avec ces derniers passe en grande partie par le téléphone : le
média le plus utilisé et le plus accessible.
Traditionnellement séparés, la téléphonie et l’informatique font aujourd’hui l’objet d’une
convergence de plus en plus marquée se manifestant notamment par l’émergence des
solutions de téléphonie sur IP. Cette convergence a donné naissance à un nouveau concept, le
CTI ou le Couplage Téléphonie Informatique.
Le concept de Couplage Téléphonie Informatique permet de mettre en place des applications
nouvelles qui s’appuient sur l’exploitation simultanée de deux grandes dynamiques : la
puissance des services de commutations en temps réel des platesformes de communications,
et la capacité de traitement de l’information des réseaux informatiques.
La plupart des projets d'intégration entre téléphonie et informatique concernent,
essentiellement, la gestion de la relation client ou le help desk, au sein des centres d'appels.
Fonction la plus courante : la montée de fiche ; le numéro de l'appelant est reconnu et sa fiche
apparaît.
C’est dans ce cadre que ce projet s’inscrit. Il s’agit de concevoir, implémenter et intégrer le
service « Client CRM » sur une plateforme à base d’équipements Cisco qui aura comme
acteur principal le serveur IPPBX de Cisco, le CallManager. Le projet s’élargit encore plus,
permettant d’intégrer cette fonctionnalité au téléphone IP Cisco ainsi que le développement et
l’intégration de services de téléphonie IP accessible à partir de ce poste.
La plupart des terminaux IP de Cisco faisant partie de la gamme 7900 à savoir le IP phone
7940 peuvent accéder à différents services en utilisant le langage XML. Ce qui offre une
facilité d'utilisation via une interface graphique et permet ainsi l’accroissement de la
productivité personnelle.
Tlili Seifeddine PFE Juin 2007 1
Introduction générale
Dans ce rapport de fin d’étude, nous commencerons, dans un premier chapitre par une
recherche bibliographique. Nous présenterons à travers cette partie l’infrastructure sur
laquelle nous nous sommes basés pour implémenter ce service à partir de cette étude, nous
allons choisir la solution qui va être implémentée, et nous spécifierons les besoins de cette
solution.
Dans le deuxième chapitre, nous nous sommes basés sur le formalisme UML pour concevoir
la solution choisie.
Dans le troisième chapitre, nous présentons les différents outils utilisés et les interfaces
d’accès aux services, soit à partir d’un poste PC ou d’un téléphone IP.
Tlili Seifeddine PFE Juin 2007 2
Etude de problématique
Chapitre 1
I.Etude de problématique
I.1.Introduction
Le CRM (Customer Relationship Management) est l’un des aspects des applications du CTI,
il permet à l'entreprise d'obtenir des données importantes sur ses clients (liste de contacts,
pistes, opportunités, contrats, messages électroniques, comptes, historiques d'achats et
préférences) de manière à leur proposer des produits et des services qui répondent
précisément à leurs besoins lors d’un appel téléphonique et ainsi améliorer la qualité de
service offerte aux clients. Parmi les applications CRM qui sont étroitement liées au CTI on
cite la montée de fiche client lors d’un appel. L'analyse de ces données aide notamment les
entreprises à déterminer qui sont leurs meilleurs clients, à enrichir et à personnaliser les
relations avec ces clients, à gérer leurs campagnes de marketing, à réduire les délais de
réponse lors d’un processus de transaction téléphonique.
Dans ce chapitre nous allons analyser la solution que nous allons développer qui se résume à
la montée de fiche client lors d’un appel téléphonique que se soit sur l’ordinateur de
l’utilisateur ou encore sur un téléphone IP de la gamme Cisco 7900 ainsi que l’intégration de
services de téléphonie IP pour un poste IP afin de lui permettre d’interagir avec un serveur de
base de données utilisateurs. Dans cette partie nous allons présenter l’architecture Cisco pour
l’implémentation de solutions CTI ainsi que le déploiement de JTAPI dans une telle
infrastructure. Puis nous passons à l’architecture adoptée par Cisco pour le déploiement et
l’intégration de solutions de services de téléphonie IP.
Tlili Seifeddine PFE Juin 2007 3
Etude de problématique
I.2. Architecture CTI de CallManager
Cisco CallManager (voir Annexe) contient un ensemble d’interfaces qui permettent la
communication avec des applications extérieures. La figure 1 illustre les différents types
d’interfaces que peut fournir le CallManager ainsi que les applications qui peuvent interagir
avec ces interfaces [2].
Figure 1Interfaces applicatives de CallManager
TAPI et JTAPI permettent de faire connecter au CallManager via les ports CTI les clients ou
encore les serveurs d’application CTI. Parmi les applications CTI on retrouve la messagerie
unifiée, Call Center, EConferencing et les systèmes IVR.
L'Access aux services d'annuaire à partir de requêtes LDAP permettent l'authentification
d'appel dans un environnement d’application d'entreprise.
En utilisant XML à travers des message http,Cisco 7940 et 7960 IP Phones sont équipés d’un
client web leur permettent d’afficher des données sous forme XML[2].
Tlili Seifeddine PFE Juin 2007 4
Etude de problématique
I.3.Déploiement de JTAPI dans une architecture Cisco
L’architecture CTI de Cisco renferme les composants suivants :
Application Provider ou Fournisseur de plateforme applicative
Serveur CCM
Controllable CTI devices
La figure 2 illustre les composants CTI et l’interaction du CallManager avec deux
applications CTI utilisant différente API, une qui implémente le JTAPI et une autre qui
implémente le TAPI [2].
Figure 2 Architecture Cisco CTI
Le CallManager est capable de traduire différents protocoles CTI à savoir le CTIQBE (CTI
Quick Buffer Encoding) véhiculé à travers un lien TCP/IP.
Le lien entre l’application et le CallManager renferme un ensemble de protocoles CTI
compréhensible par le CallManager puisque ce dernier ne distingue pas entre les applications
TAPI et JTAPI.
Pour permettre à une application de dialoguer avec le Serveur de CallManager, Cisco fourni
un logiciel qu’on appelle TSP ou Telephony Service Provider. Ce logiciel peut être installé
sur le serveur CTI ou sur une machine à part. Dans notre exemple le TSP offre des API
comme le TAPI ou le JTAPI aux applications du serveur CTI et d’un autre côté dialogue avec
le CallManager via le protocole propriétaire de Cisco le CTIQBE. Ce TSP est relié au
CallManager grâce au lien CTI à travers le LAN de l’entreprise.
Tlili Seifeddine PFE Juin 2007 5
Etude de problématique
Les implémentations Cisco Tapi Service provider (TSP) et le JTAPI traduisent les APIs
utilisées par notre application en message CTIQBE compréhensible par le CallManager
Les applications CTI peuvent contrôler un certain nombre d’entité à travers le CallManager
parmi lesquelles on retrouve :
Appareil ou Device : Les appareils tel que IP Phones peuvent être contrôlés et surveillés à
partir d’une application CTI.
Port CTI : Les Ports CTI sont des dispositifs virtuels qui servent à manipuler les
applications CTI. Par exemple, un IP Softphone de Cisco peut être relié au CallManager par
l'intermédiaire d'un port de CTI.
Point d’itinéraire CTI (CTI route Point) : Un point d'itinéraire CTI est un dispositif virtuel
qui peut manipuler simultanément des appels multiples et tous sur la même ligne. Par
exemple, un point d'itinéraire CTI peut être un numéro 1800 qui recevra des appels et assurera
la fonction de routage de ces appels au port CTI approprié [2].
I.4.Déploiement de services de téléphonie IP dans une architecture Cisco
Parmi les atouts de l’architecture Cisco pour la TOIP ou Téléphonie IP est le fait de pouvoir
déployer une panoplie de services basé sur le langage XML et qui seront accessible via le
téléphone IP. Parmi les services qui peuvent être intégrés dans une telle architecture on cite
l’interaction du terminal IP avec un serveur de base de données, la consultation des nouveaux
produits offert par Cisco via Internet ainsi que les bulletins d’informations. La figure 3 illustre
les composants clé de déploiement des services de téléphonie IP [2].
Figure 3 Composants essentiels pour les services de téléphonie IP Cisco
Tlili Seifeddine PFE Juin 2007 6
Etude de problématique
I.4.1. Principe de fonctionnement des services de téléphonie IP
Dans un premier lors du démarrage du téléphone IP, ce dernier échangera des messages avec
le serveur CallManager en utilisant le protocole SCCP afin de s’enregistrer et obtenir ainsi
une adresse dans le réseau. Mais l’échange de messages SCCP entre le CCM et le IP Phone ne
s’arrête pas juste au fait de l’obtention d’une adresse mais aussi à la récupération des
privilèges accordé à savoir le droit de consulter les services de téléphonie IP disponible et une
fois que l’adresse du serveur a été récupéré, le poste IP envoi une requête de type http vers ce
serveur afin de consulter les services mis à sa disposition, la figure 4 illustre les étapes
décrites cidessus :
Figure 4 Enregistrement du téléphone IP et consultation des services
I.5. Bilan de l’analyse et choix de la solution
Ce projet consiste à concevoir et développer une application CTI qui se résume à établir une
connexion avec le IPPBX CCM afin de récupérer le numéro de la partie appelante et
permettre ainsi l’identification de l'interlocuteur.
Cette solution est basée sur l’API Cisco JTAPI dédiée pour le développement de solutions de
téléphonie et permet ainsi de bénéficier de nouveaux services.
La solution proposée a pour but de simplifier l’interaction de l’utilisateur avec les services de
téléphonie tout en masquant la partie CTI.
Tlili Seifeddine PFE Juin 2007 7
Etude de problématique
I.5.1. Ressources matérielles
Pour réaliser ce projet, la société OneTech développement m’a offert les ressources
nécessaires pour mener à bien mon projet à savoir :
Une plateforme Cisco CallManager installée sur un Serveur HP DL380 G4
Un commutateur Cisco Catalyst 2960 series
Un routeur Cisco Catalyst 2080 series
Cisco IP Phone 7940 ainsi que Cisco Ip Communicator (softphone).
I.5.2. Etude des solutions possible
Dans cette section nous avons étudié les différentes solutions possibles en présentant les
avantages et les inconvénients de chaque solution.
I.5.2.1. Partie utilisateur
L’interface utilisateur doit être compréhensible et simple à manipuler par tous les utilisateurs,
il y a beaucoup de solutions possibles pour implémenter cette partie.
I.5.2.1.1. Intégrer l’interface dans un Formulaire HTML
L’idée est inspirée des formulaires HTML qu’on peut trouver sur certains sites web. Pour
accéder au service, l’utilisateur devra à chaque fois se connecter au serveur web afin
d’interagir avec ce formulaire qui intégrera les différents champs nécessaire pour le stockage
et la consultation des informations des clients de la société. Cette interface devra contenir les
différentes possibilités qu’un utilisateur aura besoin pour interagir avec la base de données à
savoir l’ajout d’un client ou agent d’une société, l’ajout d’une société, la recherche des
informations concernant un client ou une société ainsi que la possibilité d’effectuer une mise à
jour de la base de données.
Cette méthode présente beaucoup d’avantages :
Profiter des technologies du développement web pour implémenter cette interface.
L’interface est facile à manipuler par l’utilisateur.
Cette méthode présente aussi quelques inconvénients :
Tlili Seifeddine PFE Juin 2007 8
Etude de problématique
Le client doit impérativement passer par le serveur Web de la société et donc devra connaître
l’emplacement exacte du lien du service.
Le temps de traitement est assez long puisque le flux d’informations qui passera à travers le
réseau sera assez chargé donc risque de blocage et le service ne pourra pas être ainsi lancé.
I.5.2.1.2. Intégrer l’interface dans une interface utilisateur graphique
Dans une application, la partie graphique est aussi importante que la partie traitement car c’est
cette partie qui reste le plus visible pour l’utilisateur.
L’interface graphique utilisateur présente les mêmes fonctionnalités que celles d’un
formulaire HTML mais ne nécessite pas de serveur Web, elle fonctionne sur tout système
d’exploitation intégrant la machine virtuelle Java (JVM) et le traitement sera effectué sur le
poste utilisateur. Cette partie devra prendre en charge la partie CTI c'estàdire l’échange de
flux d’information avec le CallManager pour récupérer l’état de la ligne téléphonique et
extraire ainsi le numéro de téléphone de l’interlocuteur lors d’un processus d’appel.
Cette approche présente des avantages par rapport à un formulaire HTML à savoir :
Pas besoin de connaître le lien, l’interface est sous forme d’un programme que l’utilisateur
final installera sur son ordinateur.
I.5.3. Partie serveur
Cette partie interprète les messages échangés avec le CallManager sur l’état de la ligne
téléphonique. Ainsi, lors d’arrivées d’un appel depuis l’extérieur, le serveur doit être capable
d’interpréter les messages échangés avec le CallManager afin de récupérer le numéro de
téléphone de l’interlocuteur et ainsi renvoyer les informations de l’interlocuteur vers le
téléphone IP impliqué lors de la communication téléphonique.
Cette partie intégrera aussi des services qui peuvent être consultés par un téléphone IP Cisco
et prendra en charge l’adaptation de l’affichage sur le poste IP.
Ce module doit être en mesure de communiquer avec le CallManager, il faudra donc
développer une interface le reliant à ce système.
I.5.4. Choix de la solution
Selon ce qui a déjà été avancé, on remarque que chaque solution a ses avantages et ses
inconvénients, le but de ce projet est de trouver un compromis entre ces différentes solutions
Tlili Seifeddine PFE Juin 2007 9
Etude de problématique
pour que ce service soit accessible et facile à utiliser par tout le monde, pour cela, la solution
intégrant l’interface utilisateur sous forme de formulaire HTML est à écarter.
La solution qui sera retenu pour l’implémentation de ce service est celle qui permettra un
accès facile pour les utilisateurs. Pour cela on a opté pour la solution interface utilisateur
graphique, il s’agit de développer une interface graphique pour les utilisateurs finaux du
service, cette interface contiendra les mêmes champs qu’un formulaire HTML. Non
seulement, cette approche offre la possibilité de jouer sur la présentation mais elle est très
maniable et extensible. Mais cependant l’intégration de se service au poste de téléphone IP
utilisera l’approche adoptée pour la partie serveur puisque les téléphones IP de Cisco
n’intègre pas la machine virtuelle Java et peuvent supporter l’affichage XML selon les
spécifications de Cisco.
I.6.Spécifications des besoins
La spécification des besoins constitue la première phase formelle et obligatoire du
développement informatique, en d’autres termes c’est un modèle d'un logiciel. C'est aussi
l'étape en génie logicielle qui consiste à décrire ce que le logiciel doit faire.
I.6.1. Spécifications des besoins fonctionnels
I.6.1.1. Développement de la partie Serveur d’application CTI
Cette partie constitue le noyau de notre projet vu que celle ci qui va s’interfacer avec le
CallManager et observer ainsi l’état de la ligne téléphonique, si l’état de la connexion passe
du mode IDLE en mode ALERTING (annexe) le serveur d’application CTI alerte le client
qu’un appel lui ait destiné et affiche ainsi les données de l’interlocuteur sur le téléphone IP.
Ce serveur d’application contient aussi une gamme de service accessible à partie du téléphone
IP afin d’interagir avec le serveur de base de données.
I.6.1.2.
Développement de la partie Client
I.6.1.2.1. Développement de l’interface Client
Cette partie a pour objectif de simplifier l’interaction du client avec le programme en question
et de lui permettre d’identifier l’interlocuteur afin de modifier ou ajouter des informations le
concernant, et de noter les transactions effectuées avec l’entreprise concernée lors de l’appel.
Tlili Seifeddine PFE Juin 2007 10
Etude de problématique
I.5.1.2.2. Développement de la partie CTI au niveau du client
Cette partie aura comme tache de s’interconnecter au serveur CallManager et observer les
événements sur la ligne téléphonique, dans ce cas si un appel a été initié par le réseau PSTN
cette partie renvoie ainsi le numéro de téléphone au programme CRM qui effectuera
l’affichage à l’écran de l’utilisateur (poste PC) des données de l’interlocuteur. Sans cette
partie notre application ne pourra pas s’interconnecter avec le CallManager et récupérer ainsi
le numéro de téléphone ou le CallerID.
I.7.Spécifications des besoins non fonctionnels
I.7.1. Contrainte temps de réponse
Un des impératifs les plus immédiats de ce projet est la contrainte temps de réponse .En effet
le but de cet application est de pouvoir identifier notre interlocuteur avant même de décrocher
l’appareil téléphonique et collecter ainsi toutes les informations qui le concernent. En ce sens,
il faut optimiser le temps de traitement de l’application étant donné l’important volume des
informations dont nous disposons concernant l’interlocuteur.
I.7.2. Contraintes liées au développement
L’adoption du langage de programmation Java pour cette application s’impose. Une telle
contrainte se justifie par le fait que les API fournis pour notre programme afin de se
s’interagir avec le CallManager sont des APIs java.
Une deuxième contrainte s’impose au fait que les IP Phone Cisco ne prennent en charges que
des formats XML bien spécifiques à Cisco.
I.8.Conclusion
Dans ce chapitre nous avons présenté l’architecture réseau et l’environnement propice pour le
déploiement d’applications CTI dans une plateforme Cisco .Nous avons aussi exploré le
service qu’on va intégrer dans cette architecture en présentant différentes solutions pour
l’implémentation, ainsi que la spécification des différents besoins fonctionnels et non
fonctionnels requis pour l’implémentation de la solution.
Dans le chapitre suivant nous allons passer à la partie conception de notre solution sous forme
d’approche UML.
Tlili Seifeddine PFE Juin 2007 11
Architecture et conception
Chapitre 2 :
II.Architecture et conception
II.1.Introduction
Pour mettre en oeuvre les propositions expliquées dans le chapitre précédent, il faut avant tout
spécifier l’architecture matérielle et logiciel nécessaire. Cette étape est très importante car elle
permet par la suite de concevoir la solution d’une façon plus précise et de ne pas être obligé
de refaire la conception au cours de l’implémentation effective de la solution.
Dans ce chapitre, nous allons présenter la conception du projet. Notre étude se base sur le
formalisme UML, nous identifierons les différents acteurs agissant sur notre solution ainsi que
l’architecture de déploiement proposé pour ce type de service CTI.
II.2.Architecture matérielle et protocolaire
Si nous revenons un peu au scénario d’utilisation du service, nous pouvons dégager les
différentes parties nécessaires pour réaliser la solution proposée. En fait, nous aurons besoin
d’une communication CTI pour établir la connexion avec le CallManager, d’une connexion
au Cisco JTAPI pour échanger les données JTAPI, d’un serveur d’application CTI qui aura
pour rôle d’assurer l’affichage des données clients sur le téléphone IP impliqué lors du
processus d’appel et d’assurer de servir des services à valeurs ajoutées pour la téléphonie IP.
Nous aurons aussi besoin d’une session avec un serveur de base de données pour la
récupération des données de l’interlocuteur. Ces différentes parties sont présentées dans la
figure 5 qui explique l’architecture matérielle obtenue en déployant notre solution dans une
architecture TOIP.
Tlili Seifeddine PFE Juin 2007 12
Architecture et conception
PSTN
CT
IQB
E /J A V
IP AJ
TA
PI
P/
TC
CP
CP SC
P
SC
T
P
HT
T
HT
Figure 5 Architecture matérielle de la solution
Les différents éléments nécessaires pour cette architecture sont :
Un serveur CallManager : Ce serveur est l’élément le plus important car il englobe plusieurs
fonctions tel que la collecte des flux concernant les appels entrants, la communication avec
les clients JTAPI et la supervision des IP phones.
Un serveur de base de données : Dans ce serveur, nous allons stocker les contenus statiques
telles que les informations de la partie appelante ainsi que les informations de la société
concernée par la transaction avec l’agent.
Un serveur d’application CTI : Cette partie prendra en charge les différents services que peut
y accéder le téléphone IP ainsi que l’affichage des informations de la partie appelante lors
d’un appel, ce serveur est en communication permanente avec Cisco CallManager.
Le client JTAPI : Ce client renferme l’application CRM développée qui, de son cotée aussi,
est en communication permanente avec le CallManager.
Tlili Seifeddine PFE Juin 2007 13
Architecture et conception
Notre mission consiste à développer le client JTAPI ainsi que le serveur d’application CTI et
de les intégrer avec les autres équipements présentés dans la figure 5 pour assurer le
fonctionnement du service.
II.3.Choix de l’architecture
II.3.1. Diagramme de déploiement
Le déploiement d’une solution de couplage de téléphonie informatique présente quelques
difficultés puisque de son côté, chaque constructeur précise ces propres spécifications pour
l’implémentation de JTAPI. La figure 6 présente le diagramme de déploiement est
équivalente à la figure présentée cidessus concernant l’architecture matérielle de la solution
mais plus en détails
Serveur
d’application CTI
JTAPI/
CTIQBE
Serveur J2EE Tomcat Module JTAPI
Cisco
JSP CallManager
Module Affichage vers le Ip Phone
LAN
Ip Phone Cisco
LAN
LAN
LAN
Serveur Base de donnée relative aux clients
Serveur de donnée
JTAPI/
CTIQBE
Module DataBase
Module JTAPI
Module JVM
Client CRM
Figure 6 Diagramme de déploiement du Service
Tlili Seifeddine PFE Juin 2007 14
Architecture et conception
II.3.2. Justification conceptuelle
II.3.2.1. Choix de l’architecture client serveur
Pour les services de téléphonie IP, une telle architecture s’impose du fait de la faible capacité
de traitement des téléphones IP puisque les capacités de calcul des téléphones IP ne sont pas
encore suffisantes pour pouvoir embarquer la totalité du service. De plus, les téléphones IP
Cisco ne sont pas conçus pour intégrer les fonctionnalités du JTAPI, qui pour bien
fonctionner, doivent être lancés dans une machine intégrant JVM. Ainsi le choix d’une telle
architecture porte tous les traitements relatifs au contrôle d’appel et l’échange de messages
CTIQBE au serveur d’application CTI.
II.3.2.2. Choix du client CRM
Le choix d’intégrer le composant CTI pour un client CRM dans un ordinateur personnel
utilisant une machine virtuelle JVM s’explique du fait que l’un des obstacles des solutions
CTI est de pouvoir collecter les flux d’informations concernant l’interlocuteur sans pour
autant que le client final envoie une requête au serveur exécutant la partie CTI. Cette
approche a été traitée par Cisco pour ces téléphones IP en utilisant une fonction bien
particulière propre à Cisco qui permet de forcer l’affichage sur un téléphone IP Cisco.
La plupart des projets CTI de ce genre utilisent la même architecture que celle adoptée pour le
client CRM.
II.4.Diagrammes de cas d’utilisation de la solution
Le modèle du diagramme d’utilisation permet de donner une vue d’ensemble sur le
fonctionnement globale de la solution ainsi que les interactions qui peuvent y avoir lieu entre
les différents composants du système.
II.4.1. Définition des différents acteurs agissant sur le système
Le système interagit avec 5 acteurs à savoir :
Client CRM : Le client est ici le programme qui va être responsable d’interpréter les
commandes envoyées par le serveur de Base de données ainsi que le flux d’informations
retournés par le CallManager pour l’identification et la récupération du numéro de téléphone
de l’interlocuteur. Ce client se présente sous formes d’interface graphique interactive
Tlili Seifeddine PFE Juin 2007 15
Architecture et conception
affichant les données concernant l’interlocuteur ainsi que l’entreprise concernée par la
transaction lors de l’appel téléphonique.
Cette partie offre aussi la possibilité à l’utilisateur de s’interagir avec le serveur de base de
données.
CallManager : Cisco CallManager est un composant serveur de traitement et de contrôle des
appels de la solution de téléphonie IP de Cisco. Il a pour rôle d’interpréter le flux
d’informations échangées avec l’application et de superviser de l’état de la connexion de
l’adresse rattachée au poste téléphonique, le flux échangé avec notre application est un flux
JTAPI interprété par le CallManager sous forme de messages CTIQBE.
Téléphone IP Cisco : C’est ce terminal qui affichera les informations de l’interlocuteur lors
d’un appel, cet affichage est sous formes de balise XML interprétable par la gamme Cisco
7900, l’accès au service de téléphonie IP sera initié à partir de ce composant.
Le serveur d’application CTI : Il est responsable de la partie CTI conçus pour récupérer le
numéro de l’interlocuteur, faire une recherche dans la base de données selon le numéro de
l’interlocuteur et afficher le résultat sur l’écran du téléphone IP.
Une autre fonctionnalité a été intégrée à ce serveur : Celle des services de téléphonie IP.
Parmi les services à intégrer on cite : Recherche dans la base de données à partir du téléphone,
consultation de l’annuaire qui établie une connexion à notre base de données et consultation
de l’actualité en ligne de Cisco et de CNN
La base de données : Elle contient des données relatives aux clients Parmi ces données on
cite le numéro de téléphone à partir duquel le système extrait les informations de
l’interlocuteur.
Tlili Seifeddine PFE Juin 2007 16
Architecture et conception
II.4.2. Les packages du diagramme de cas d’utilisation
Dans cette partie nous allons définir les différents packages qu’on a développé ainsi que
l’interaction entre eux à travers le diagramme de packages.
Pour notre projet les packages sont aux nombres de 5 comme l’illustre la figure 7
Figure 7 Les packages utilisés
IP Phone Cisco
Serveur d'application CTI
Include
PushToPhone IpPhoneServices
Include
Telephony
CallManager Include
Include
DataBase
GUICrm Include
Serveur Base de donnée
Client Crm
Figure 8 Diagramme des packages
Tlili Seifeddine PFE Juin 2007 17
Architecture et conception
II.4.3. Diagrammes de cas d’utilisation
Dans le diagramme des cas d’utilisation, interviennent trois éléments : les acteurs, le système
et les cas d’utilisation. L’acteur représente une personne ou un autre système qui interagit
avec le système en cours de modélisation. Pour indiquer la participation d’un acteur à un cas
d’utilisation, nous utilisons une flèche (UML). Les cas d’utilisation peuvent être en relation
(uses ou extension) [3].
II.4.3.1. Package IpPhoneService
Ce package permet d’étendre les fonctionnalités du téléphone IP. En effet, il a pour rôle
d’offrir une panoplie de services mis à la disposition de l’utilisateur du téléphone et de
profiter des capacités et des services que peuvent intégrer les téléphones de la gamme Cisco
7900.
Parmi les services offerts par ce package on cite :
La possibilité d’effectuer une recherche en se connectant au serveur de la base de
données, consulter le répertoire de la société et d’y extraire les numéros de téléphone de ces
clients.
La possibilité de se connecter au site de Cisco et d’afficher l’actualité dans le monde des
réseaux ainsi que les nouveaux produits lancés sur le marché ou encore de consulter
l’actualité à partir du site de CNN.
Le fonctionnement du service de News utilise une connexion au serveur de Cisco et de CNN
pour y extraire l’information demandée sous format RSS (voir Annexe) et d’adapter ce format
au téléphone IP Cisco pour pouvoir l’afficher sur l’écran.
La première étape de fonctionnement de ce service est de consulter le serveur CallManager
pour y extraire l’adresse du serveur d’applications CTI et d’extraire ainsi les services mis à la
disposition de l’utilisateur, ce service est accessible par les IP Phones Cisco une fois que
l’adresse du serveur d’application est configuré comme lien des services de téléphonie (voir
Annexe) au niveau CallManager.
La figure 9 présente le diagramme de cas d’utilisation de ce package ainsi que les différents
acteurs qui agissent directement sur le système.
Tlili Seifeddine PFE Juin 2007 18
Architecture et conception
Figure 9 Diagramme du package « IpPhoneService »
II.4.3.2. Package PushtoPhone
Cette partie est une sorte de passerelle entre la partie CTI et le téléphone IP. En effet, elle a
pour objectif d’informer le poste IP qu’un appel lui est destiné et d’afficher sur son écran les
informations de son interlocuteur.
Dans sa spécification pour JTAPI, Cisco a implémenté une fonction prédéfinie qui permet de
forcer un téléphone IP Cisco à afficher des données sous format XLM interprétable par le
poste IP.
Une fois qu’on a récupéré le numéro de l’interlocuteur, notre application extrait les
informations concernant le client depuis le serveur de la base de données et envoie le résultat
retourné par ce serveur au poste IP concerné.
Tlili Seifeddine PFE Juin 2007 19
Architecture et conception
Cette partie force le terminal IP à afficher des données sur son écran sans pour autant avoir
besoin de l’intervention de l’utilisateur.
Récupération du
numéros de l'interlocuteur
IpPhone Cisco
CallManager
«uses»
Récuperer les
informations «uses»
Récuperations des
informations de la partie
appelante
Serveur d'applications CTI
«extends» «extends»
«uses» «uses»
Interrogation de la
Base de donnée
Figure 10 Package PushToPhone
II.4.3.3. Package Database
Ce package traduit les éventuelles requêtes susceptibles d’être lancées par l’utilisateur final
afin d’interagir avec la base de données utilisateur.
Parmi ces requêtes on retrouve:
La possibilité d’ajouter une nouvelle entrée à la base de données.
Lancer une recherche par nom et prénom pour les clients ou simplement par nom de société
dans la base de données et afficher le résultat sur l’écran que ce soit celui d’un PC ou d’un
poste IP.
Tlili Seifeddine PFE Juin 2007 20
Architecture et conception
Effectuer une mise à jour des informations relatives à un client ou d’une société.
Figure 11 Package PushToPhone
II.4.3.4. Package GUICrm
Ce package se résume en une interface graphique interactive mise à la disposition de
l’utilisateur final afin de faciliter l’interaction avec le serveur de la base de données et c’est
cette interface qui nous servira à afficher les données relatives à l’interlocuteur lors d’arrivée
d’un appel.
Figure 12 Package GuiCrm
Tlili Seifeddine PFE Juin 2007 21
Architecture et conception
II.4.3.5. Package Telephony
Le package Telephony est le cœur même de notre projet, en effet ce composant permet
d’assurer la connexion au serveur CallManager et de placer ainsi un observateur sur l’état de
la ligne téléphonique ainsi que sur l’état de connexion des postes IP.
Dans un premier temps, notre package s’authentifie auprès du CallManager afin de lancer un
observateur sur les appels entrants. Ainsi lors d’un appel entrant, ce package sera alerté par le
CallManager que l’état de la connexion du poste concerné par la transaction téléphonique
passe du mode Idle en mode Active.
Une fois alertée, ce composant récupère le numéro de la partie appelante ainsi que le poste de
la partie appelée et le renvoi au package PushToPhone ainsi que le package GUICrm
Figure 13 Package Telephony
II.5.Diagrammes de classes
Les diagrammes de classes modélisent les interactions et les hiérarchies entre les classes les plus
importantes conçues pour la réalisation de ce service. Pour modéliser les différentes classes du
système final. Nous avons regroupé les principales classes en des paquetages selon leurs rôles.
Dans ce qui suit nous représentons le Diagramme de classes constituants chaque paquetage. Nous
nous sommes appuyés sur le formalisme UML pour les représenter.
Tlili Seifeddine PFE Juin 2007 22
Architecture et conception
II.5.1. Diagramme de classe du Client Crm
Le diagramme suivant présente les interactions entre les différentes classes utilisées lors du
développement de la partie Client Crm.
CallerInfoServer
-CTIServer
-DestNumber NumberFind
AddToDb
-IdJTAPI -NumberOrigin
-PassJTAPI +FindfirmInformationByNumber()
+AddfirmInformation()
+ProviderChangeEvent() +FindCustumerInformationbyNumber()
+AddCustumerInformation()
+CallChangeEvent() +LoadJDBCDriver()
+LoadJDBCDriver()
+GetActiveCallPartyNumbers() +Connection()
+Connection()
+GetCallerInfoServer()
Main
-Numbers
-GetCallerInfoServer
-Cmd
+CallerInfoServer()
+GetCallerInforServer() GuiCrm
+Runtime.getRuntime().exec()() -OrigNumber
-JPannel1
-JPannel2
-JPannel3
-JPannel4
+NumberFind()
+AddToDb()
+Affiche()
+updateDb()
Affiche
updateDb +DisplayfirmInformation()
+DiplayCustumerInformation()
+LoadJDBCDriver()
+UpdatefirmInformation()
+Connection()
+UpdateCustumerInformation()
+LoadJDBCDriver()
+Connection()
Figure 14 Diagramme de classe du Client Crm
Tlili Seifeddine PFE Juin 2007 23
Architecture et conception
II.5.1.1. La Classe CallerInfoServer
La connexion au serveur CallManager est impérative afin de récupérer le numéro de la partie
appelante, ainsi que pour l’interroger sur l’état de la connexion. Afin de subvenir à ce besoin,
la méthode Provider permet d’initier l’adresse du CallManager en passant comme paramètre
le login de connexion ainsi que le mot de passe mais avant cela notre application doit lancer le
moteur JTAPI à partir de la fonction « peer ». Une fois ces deux étapes franchies, la méthode
GetCallerInfoServer nous sert d’observateur sur l’état de la ligne et si un appel entrant est
détecté elle nous informe du changement d’état de la connexion en récupérant le numéro des
deux parties impliquées lors du processus d’appel. Ces paramètres sont ensuite enregistré
dans les variables OrigNumber pour le numéro d’origine et DestNumber pour le numéro de
destination.
II.5.1.2. La classe GuiCrm
Cette classe hérite des classes NumberFind, AddToDb, Affiche et updateDb. Elle est sous
forme d’interface graphique. Elle renferme les fonctions que peut utiliser la personne final
afin d’interagir avec le serveur de la base de données et elle permet l’affichage des données de
l’interlocuteur lors de l’arrivée d’un appel.
Cette classe renferme les interfaces JPannel1, JPannel2, Jpannel3, JPannel4 et JPannel5
qui sont sous formes d’interface graphiques, chacune d’elles offre la possibilité d’interagir
avec le serveur de la base de données selon les besoins de l’utilisateur qui parmi celleci on
retrouve : Ajouter, modifier ou rechercher des informations concernant un client ou une
société, ces fonctions sont intégrées dans les interfaces Jpannel1, JPannel2, JPannel3 et
JPannel4.
Quant à l’interface JPannel5, elle prend en charge l’affichage des données de la partie
appelante en récupérant le numéros de téléphone et en exécutant la méthode Numberfind ().
II.5.1.3. La classe updateDb
Cette classe prend comme arguments d’entrée les données à mettre à jour dans la base de
données et elle modifie les informations concernant le client ou la société.
Tlili Seifeddine PFE Juin 2007 24
Architecture et conception
II.5.1.4. La classe NumberFind
Cette classe prend en entrée un numéro de téléphone et parcourt l’ensemble de la base de
données afin de trouver une similitude avec les numéros de téléphones déjà enregistrés, que
ce soit ceux d’un client ou d’une société.
II.5.1.5. La classe Affiche
Cette classe prend comme paramètre d’entrée le nom et prénom d’un client ou le nom d’une
société et retourne les informations correspondantes depuis la base de données.
II.5.1.6. La classe AddToDb
Cette classe permet à l’utilisateur d’ajouter de nouvelles entrées dans la base de données que
ce soit des informations relatives à une société ou à un client.
II.5.1.7. La classe main
Cette classe assure la fonction de lancer l’ensemble des classes citées cidessus, elle hérite des
classes CallerInfoServer et GUICrm.
Dans un premier temps elle fait appel à la classe CallerInfoServer, en utilisant comme
paramètre CTIServer qui est l’adresse du serveur CallManager, IdJtapi qui représente le
login et PassJtapi qui est le mot de passe ainsi que DestNumbr qui représente le poste à
observer par l’application. Une fois ces paramètres chargés et la connexion au serveur
CallManager est établi, si un appel arrive et a comme destination le poste observé, le numéro
de téléphone est passé comme paramètre à l’interface GUICrm qui s’encharge de lancer la
classe NumberFind et ainsi de récupérer les informations de l’appelant.
Tlili Seifeddine PFE Juin 2007 25
Architecture et conception
II.5.2. Diagramme de classe du serveur d’application CTI
CallerInfoServer
-CTIServer
-DestNumber
-IdJTAPI
-PassJTAPI
+ProviderChangeEvent() findnum
PushXml
+CallChangeEvent()
+GetActiveCallPartyNumbers() -firmName -NumberOrigine
+GetCallerInfoServer() -FirmAddress -XML
-FirmActivities +LoadJDBCDriver()
-Firmphone +Connection()
-Fcomments
-Cname
-Cfname
-Cphone
-Ccomments
-CustumerContact
-CustumerComment
-NumbersOrigin
-NumbersDest
-XML
+termTo.sendData()()
+CalleInfoServer()
+getCallerInfoServer()
FindFirm FindCustumer
-FirmName -Custumername
-CustumerLastname
+LoadJDBC()
+LoadJDBCDriver()
+Connection()
+Connection()
Search
DirectoryFirm
Index
+LoadJDBC()
+Connection()
MenuDirectory
DirectoryCustumer
+LoadJDBCDriver()
+Connection()
Figure 15 Diagramme de classe du serveur d'application CTI
Tlili Seifeddine PFE Juin 2007 26
Architecture et conception
Le serveur d’application CTI fournit le même service que celui du ClientCrm à l’exception
prés que l’affichage des informations de l’interlocuteur seront affichées à l’écran du téléphone
IP de l’utilisateur du service. Il offre également d’autres services qui seront accessibles à
partir d’un poste téléphonique IP Cisco.
II.5.2.1. La classe PushXML
Cette classe est équivalente à la classe main du Client Crm, elle hérite de la classe
CallerInfoSever et findnum.
Elle récupère le numéro de téléphone à partir de la classe CallerInfoServer, et fait appel à la
classe Findnum en lui passant comme argument NumberOrigin ensuite elle récupère la
variable XML qui va être affiché à l’écran du téléphone IP en utilisant la fonction déjà
prédéfinie par Cisco « SendData ».
II.5.2.2. La classe Findnum
Cette classe s’occupe de parcourir la base de données et d’y extraire les informations d’un
client (agent de la société) ou celle d’une société selon le numéro de téléphone passé en
argument. Une fois ces informations récupérées, elle les stocke dans la variable XML en
utilisant les balises XML selon la spécification de Cisco.
II.5.2.3. La classe Index
Cette classe définit une liste de quatre choix : Directory, Find Custumer, CNN’s News et
Cisco’s News. Elle hérite des classes Search et MenuDirectory.
Le choix des éléments CNN’s News et Cisco’s News crée une nouvelle instance de la classe
en index. En ce sens, le choix du service News permet de ce connecter à un serveur extérieur
et d’afficher les informations demandées à l’écran tout en utilisant cette classe c'estàdire
index. Alors que le choix de Directory et Find Custumer nous renvoie aux classes
MenuDirectory et Search.
Tlili Seifeddine PFE Juin 2007 27
Architecture et conception
II.5.2.4. La Classe MenuDirectory
Cette classe hérite des classes DirectoryFirm et DirectoryCustumer. Elle permet, selon le
choix de l’utilisateur d’afficher le répertoire par Société ou par Client en faisant appel aux
classes DirectoryFirm et DirectoryCustumer.
Ces classes se chargent d’extraire les informations de la base de données et de les afficher à
l’écran du téléphone. Une fois l’affichage effectué, ces deux classes offrent la possibilité à
l’utilisateur de composer le numéro souhaité extrait de la base de données depuis la touche Dial
affichée à l’écran.
II.5.2.5. La Classe Search
Cette classe hérite des classes FindCustumer et FindFirm. Elle est équivalente à la classe
MenuDirectory à l’exception qu’elle fait appel aux classes FindCustumer et FindFirm en
utilisant comme argument d’entrée CustumerName et CustumerLastname pour le cas de
FindCustumer et Firmname pour le cas de FindFirm. Les classes FindCustumer et
FindFirm se chargent après de parcourir la base de données et d’afficher le résultat à l’écran
du téléphone IP.
II.6.Digrammes de séquences
Les diagrammes de séquence permettent de décrire les interactions entre les objets pour
chaque cas d'utilisation. Dans notre cas, ces diagrammes sont liés aux diagrammes de cas
d’utilisation représentés auparavant.
Pour illustrer la différence entre nos deux clients : le client CRM et le cas du serveur
d’application CTI qui prend en charge l’affichage du service sur les postes IP de l’utilisateur.
Nous allons assigner à chaque type de client le diagramme de séquence correspondant.
Tlili Seifeddine PFE Juin 2007 28
Architecture et conception
II.6.1. Diagramme de séquences du serveur d’application CTI
Ce scénario représente les fonctionnalités de base du serveur d’application CTI à savoir
l’affichage des données de l’interlocuteur sur le IP Phone Cisco ainsi que l’affichage du
service de téléphonie IP intégrer dans notre solution.
Figure 16 Diagramme de séquences du serveur d'application CTI
Tlili Seifeddine PFE Juin 2007 29
Architecture et conception
II.6.2. Digramme de séquences du client CRM
Ce scénario fait intervenir une autre entité ; le client CRM. En effet dans ce composant l’affichage
est effectué sur un PC intégrant la machine virtuelle Java. Le diagramme de séquences suivant
représente la succession chronologique des différentes étapes intervenant dans la réalisation de la
solution proposée pour le Client CRM.
Figure 17 Diagramme de séquences du Client Crm
II.7.Conclusion
Dans ce chapitre, nous avons présenté les différents diagrammes de cas d’utilisation et de
classes de notre application pour enfin aboutir à l’établissement des diagrammes de
séquences.
Dans le chapitre suivant nous allons expliquer les choix utilisés pour l’implémentation de la
solution adoptée et décrire la démarche de la réalisation.
Tlili Seifeddine PFE Juin 2007 30
Solution et implémentation
Chapitre 3 :
III.Solution et implémentation
III.1.Introduction
Après avoir déterminé les besoins de l’application et conçu les différentes parties de ce
service, nous sommes passés à la réalisation de la solution conçue. Mais avant tout, nous
présentons les outils utilisés pour le développement du service de téléphonie IP ainsi que de
montée de fiche client.
III.2.Environnement et langage de programmation
Le choix du langage de programmation est un point crucial pour tout projet de développement
puisque il faut que ce dernier puisse subvenir à nos besoins.
Parmi les APIs de téléphonie disponible, on cite le JTAPI qui est une implémentation de Sun
utilisant le langage Java et Tapi, étant développée à l’origine par Intel et Microsoft comme
interface de développement d’application CTI pour les systèmes d’exploitation Windows.
Ces deux APIs sont les plus couramment utilisées et constituent la clé pour toute application
CTI développée dans une plateforme Cisco intégrant le CallManager, qui offre la possibilité
de communiquer avec ces applications à travers la couche TAPI. Cependant le choix reste
restreint à l’utilisation de TAPI et JTAPI. Si on examine de près ces deux technologies, on
distingue des avantages qu’offre JTAPI par rapport à TAPI, parmi lesquelles la richesse de la
bibliothèque implémentée par Cisco pour le JTAPI ainsi que la simplicité de l’implémentation
de cette API.
Nous avons opté pour Java, en raison de la simplicité de l’API JTAPI évoquées
précédemment mais aussi, parce que ce langage est le plus utilisé dans le domaine du
développement des services. Surcroît, la plupart des API disponibles sur Internet sont des API
Java.
Java est un langage de programmation de quatrième génération développé par Sun. Il doit sa
popularité croissante à une caractéristique majeure : sa portabilité. En effet, contrairement aux
langages classiques dont le code doit être compilé en fonction de la plateforme pour laquelle
Tlili Seifeddine PFE Juin 2007 31
Solution et implémentation
ils sont prévus, le code Java est compilé vers un état intermédiaire. Le programme résultant
doit être exécuté via une machine virtuelle JVM (Java Virtual Machine). La machine virtuelle
quant à elle est liée à la plateforme utilisée, néanmoins à l’heure actuelle, de très nombreux
systèmes sont supportés tels que les PC tournant sous Windows, les Macintosh, etc. Il existe
même des JVM allégées pour les PDA (Personnal Digital Assistant) ou certains téléphones
portables. Grâce à cette technique, un programme ne doit être compilé qu’une seule fois, et
peut ensuite être utilisé sur n’importe quelle version de la JVM.
Traditionnellement, les langages interprétés tels que Java sont moins rapides que leurs
concurrents compilés, mais le développement de plus en plus poussé de la JVM, est en train
de rapprocher les performances de Java de celles des langages tels que le C++.[4]
III.3.Choix de l’architecture logicielle
III.3.1. Le package JTAPI
Le Jtapi renferme un ensemble de packages java. Chaque package fournit un service de
téléphonie bien particulier pour les applications de couplage téléphonie informatique. Parmi
ces packages on retrouve javax.telephony.callcontroll qui renferme l’aspect contrôle et
traitement d’appel à savoir initier un appel, répondre à un appel.
Cette partie est essentielle pour notre application puisque elle sert à s’interconnecter avec le
CallManager pour échanger les informations relatives à un terminal tout en s’intégrant avec la
spécification de Cisco. Afin de répondre aux besoins essentiels de notre application, il est
nécessaire d’introduire le modèle de Jtapi pour modéliser le processus de communication
entre la parie responsable du couplage téléphonie informatique avec le CallManager.
III.3.1.1. Modèle d’appel de la téléphonie Java
Le modèle d’appel englobe un ensemble d’objets java. Chaque modèle d’appel représente à la
fois une entité physique (appareil téléphonique) ou logique (une connexion) dans le monde de
la téléphonie. L’objectif du modèle d’appel est de décrire les appels téléphonique et les points
terminaux impliqués lors d’un appel téléphonique [5].
Le diagramme cidessous illustre le modèle d’appel de Jtapi et les différentes entités qui le
composent.
Tlili Seifeddine PFE Juin 2007 32
Solution et implémentation
Figure 18 Modèle d’appel Jtapi [5]
La partie qui va suivre détaillera les principaux acteurs lors du processus d’appel téléphonique
entre deux terminaux utilisant l’API Jtapi.
III.3.1.1.1. Provider
Un provider représente l’entité logicielle d’un central téléphonique avec ces interfaces et un
système de téléphonie sousjacent dans notre cas le provider est le CallManager. Un provider
peut se trouver dans l'un de ces trois états : Provider.IN_SERVICE,
Provider.OUT_OF_SERVICE ou Provider.SHUTDOWN. L'état du provider détermine la
validité de ces diverses actions possibles. Détaillons quelque peu ces différents états [5] :
IN_SERVICE : Cet état indique que le provider est actuellement en service et disponible
pour les utilisateurs.
OUT_OF_SERVICE : Cet état indique qu'un provider n'est temporairement pas
disponible pour une utilisation. Beaucoup de méthodes du provider sont incorrectes lorsqu’il
se trouve dans cet état. Les providers peuvent revenir en service à tout moment, cependant,
l'application ne peut prendre aucune mesure directe pour causer ce changement.
Tlili Seifeddine PFE Juin 2007 33
Solution et implémentation
SUTDOWN : Cet état indique qu'un provider n'est plus disponible à une utilisation. La
plupart des méthodes du provider sont incorrectes lorsqu’il se trouve dans cet état
Le diagramme suivant montre les transitions d'état permises pour le provider défini par le
core package :
Figure 19 Transition d’état du Provider
III.3.1.1.2. Call
Un objet call représente un appel téléphonique.
III.3.1.1.2.1. Etats d’un call
Un call peut se trouver dans trois états : Call.IDLE, Call.ACTIVE ou Call.INVALID.
Parmi les divers états du cycle de vie d’un call on cite [5] :
IDLE : C'est l'état initial de tout call. Dans cet état, le call ne comporte aucune connexion.
ACTIVE : Un call avec une certaine activité continue se trouve dans cet état. Les call avec
une ou plusieurs connexions associées se trouvent dans cet état.
INVALID : C'est l'état final pour tout call. Dans cet état, un call n’a plus aucune
connexion. Mettons l’accent sur le fait, qu’un call se trouvant dans cet état, ne peut sans
aucune façon être utilisé pour une action future.
Tlili Seifeddine PFE Juin 2007 34
Solution et implémentation
Figure 20 Diagramme de transition d’un call
III.3.1.1.3. Connection
Une connexion représente un lien (une association) entre un call et une adresse. Le but d'une
connexion est de décrire le rapport entre un call et une adresse. Une connexion existe si une
adresse particulière représente une partie d’un appel téléphonique. Chaque connexion a un
état qui décrit l’état actuel du rapport entre le call et l'adresse.
III.3.1.1.4. Objets address et terminal
Un objet d'adresse représente le point final logique d'un appel téléphonique. Et un terminal
représente un point final physique (matériel) relié au réseau téléphonique. Les adresses et les
terminaux sont dans un rapport multiple. Une adresse peut contenir des terminaux multiples,
et les terminaux peuvent contenir également des adresses multiples.
Toutefois, le provider peut durant toute sa durée de vie connaître de nouveaux terminaux et de
nouvelles adresses. Ces nouveaux objets représentent des adresses et des terminaux en dehors
du domaine du provider et sont désignés comme distants afin de les différencier des locaux.
Par exemple, si le domaine du provider est un PBX, le provider connaîtra d’abord toutes les
adresses et tous les terminaux dans ce PBX. Toutes les adresses et tous les terminaux qu'il
connaît ultérieurement se trouvent en dehors de ce PBX [5].
Dans beaucoup de cas, un poste téléphonique (représenté par un objet terminal) a seulement
un numéro de téléphone (représenté par un objet d'adresse) associé à ce dernier. Dans le cas
de notre application, l’objectif est de placer un « Listener » sur une adresse bien particulière
afin d’être avertis des différents événements qui sont en liaison avec cette adresse à savoir
l’arrivée d’un appel qui sera géré par le provider CallManager.
Tlili Seifeddine PFE Juin 2007 35
Solution et implémentation
La première chose à faire est de se connecter à l'interface JTAPI du Call Manager une fois la
connexion établie nombre d'événements JTAPI pourront être traités par notre application
suivant qu'on développera le code nécessaire la figure 21 illustre la première étape de
lancement du moteur Jtapi et de l’obtention d’un provider.
Figure 21 Initialisation du moteur JTAPI et connexion au CallManager
III.3.2. L’API Swing :
Swing constitue une innovation apparue dans JDK1.1 en tant qu'extension de ce dernier et en
tant que partie intégrante de Java 2 SDK. Swing est la seconde bibliothèque de classes (la
première étant AWT) permettant de créer et de gérer des interfaces graphiques. Les méthodes
utilisées pour construire une interface Swing sont sensiblement les mêmes que celles de AWT
soit [6] :
Création d'un cadre ou contenant
Placer des composants dans ce contenant
Effectuer la mise en page de ces composants dans le contenant
gérer les événements et actions posées par l'utilisateur
III.3.3. L’API « JDBC »
L'API JDBC permet aux applications java d’accéder par le biais d'une interface commune à
des sources de donnés pour lesquelles il existe des pilotes JDBC. Normalement, il s'agit d'une
Tlili Seifeddine PFE Juin 2007 36
Solution et implémentation
base de donnés relationnelle, et des pilotes JDBC sont disponibles pour tous les systèmes
connus de bases de données. [4].
Nous avons utilisé cette API pour permettre aux classes Java de communiquer avec les bases
de donnés.
III.3.4. Les serveurs
Les JSP et les servlets nécessitent un serveur pour fonctionner nommé souvent moteur de
servlets ou moteur de JSP. Le serveur le plus connu est le serveur Tomcat [10]. C’est un
serveur Open Source qui agit comme un conteneur de servlets. Il fait partie du projet Jakarta,
au sein de la fondation Apache. Tomcat implémente les spécifications des servlets et des JSP
de Sun Microsystems. [7]
III.3.5. Le système de gestion des bases de donnés :
Le système de gestion des bases de donnés utilisé dans ce projet est MySQL, il s’agit d’un
SGBD libre et gratuit. Il est très utilisé et très populaire. MySQL est un serveur de bases de
données relationnelles SQL, très rapide, multithread et multiutilisateur.
III.3.6. Les JSP
L’interface utilisateur est composée de plusieurs pages web qui vont être générées
dynamiquement selon les requêtes de l’utilisateur. Pour concevoir une telle interface, nous
avons eu recours aux pages JSP ou « Java Server Pages ». C’est une technologie basée sur
Java qui permet aux développeurs de générer dynamiquement du code HTML, XML ou tout
autre type de page Web [4].
Comme nous utilisons une plateforme java pour développer ce service, ce choix se révèlera
très bénéfique puisque nous pouvons utiliser les différentes méthodes des classes déjà
développées et compilées sans avoir, à chaque fois, à réécrire ces méthodes.
L’avantage des JSP par rapport à d’autres scripts, qui s’exécutent du côté serveur, est que le
temps du traitement est moins important, cela est dû au fait que ces scripts sont compilés une
seule fois, et on n’aura pas besoin de les recompiler à chaque accès au service.
Le principe de fonctionnement des JSP ressemble à celui des servlets, mais il présente
quelques différences, comme la possibilité de les intégrer dans des pages HTML et de définir
des liens entre eux. Un exemple d’utilisation de cette technologie dans ce projet est la
transmission du numéro de téléphone de l’interlocuteur d’une page à une autre.
Tlili Seifeddine PFE Juin 2007 37
Solution et implémentation
III.3.7. XML
Cisco met à la disposition des développeurs de service de téléphonie IP, une API basé sur le
XML et qui permet d’afficher des données sur les IP Phones Cisco de la gamme 7900. Ces
services sont généralement utilisés à l’aide du protocole HTTP. Les téléphones se comportent
donc comme une sorte de navigateur web, l’exemple suivant illustre l’affichage du menu en
utilisant la spécification Cisco pour le XML.
Figure 22 Exemple d'utilisation de l'API XML de Cisco
III.4.Les interfaces
Comme cela a déjà été évoqué, le service développé présente deux approches d’utilisation :
Une approche pour les utilisateurs de Pc et une approche pour les IP Phones Cisco.
Nous allons essayer dans cette partie de présenter les principales interfaces auxquelles un
utilisateur est confronté selon les approches citées cidessus.
Tlili Seifeddine PFE Juin 2007 38
Solution et implémentation
III.4.1. Les interfaces utilisées pour les IP Phones
Dans cette partie, nous allons exposer l'ensemble des interfaces qui sont mises à la disposition
des utilisateurs, lesquelles sont accessibles à partir des postes IP en utilisant la touche
Services
Figure 23 Interfaces du service de téléphonie IP
Tlili Seifeddine PFE Juin 2007 39
Solution et implémentation
La première interface mise à la disposition de l’utilisateur renferme différents menus qui
permettent l’interaction avec le serveur de base de données et la consultation des bulletins
d’informations téléchargés à partir du site Cisco et CNN.
La figure 22 illustre le menu évoqué cidessus :
Figure 24 Page d’accueil
III.4.2. Les interfaces graphiques
Les interfaces Swing mises à la disposition de l’utilisateur constituent à la fois un moyen
d’accès à la base de données afin d’effectuer l’enregistrement des clients et aussi une interface
qui servira à l’affichage des données de l’interlocuteur lors de la réception d’un appel.
La figure 25 illustre le modèle adopté pour ces interfaces swings
Tlili Seifeddine PFE Juin 2007 40
Solution et implémentation
Figure 25 Interfaces Swing
Les différents menus ; Add custumer et Add Firm permettent à l’utilisateur d’ajouter de
nouvelles entrées au serveur de base de données tandis que les champs Find Firm et Find
Custumer offrent la possibilité de rechercher un client soit par nom de société ou par nom et
prénom de l’agent ainsi que la possibilité d’effectuer une mise à jour concernant les
informations des clients. Les figures 26 à 29 illustrent un cas d’exemple d’utilisation de ces
interfaces.
Tlili Seifeddine PFE Juin 2007 41
Solution et implémentation
Figure 26 Ajout d’un agent d’une société
Figure 27 Rechercher un utilisateur
Tlili Seifeddine PFE Juin 2007 42
Solution et implémentation
Figure 28 Ajout d’informations d’une société dans notre base de données
Figure 29 Recherche d’informations d’une société
Tlili Seifeddine PFE Juin 2007 43
Solution et implémentation
III.4.3. Lancement du Service
Cas du client CRM
La figure 30 montre un aperçu de l’exécution du service en optant pour l’interface Swing. Un
client de la société dont le numéro est « 1161 » initie un appel au poste « 1999 » sur lequel un
observateur a été placé afin de récupérer le numéro de l’interlocuteur.
Figure 30 Affichage des coordonnées de l’interlocuteur
Cas du IP Phone
Cette partie renferme l’aspect CTI. En effet, pour pouvoir extraire le numéro de téléphone de
l’interlocuteur et « pousser » l’affichage des données ainsi récupérées à partir de la base de
données, notre application fait appel au serveur d’application CTI qui est responsable
d’effectuer cette tache.
La figure 31 illustre le cas de réception d’un appel avec un numéro de téléphone enregistré
dans notre base de données tandis que la figure 32 évoque le cas où le numéro est inconnu
dans notre base.
Tlili Seifeddine PFE Juin 2007 44
Solution et implémentation
Figure 31 Affichage des données à l'écran du poste IP
Figure 32 Numéro non reconnu dans la base de données
Tlili Seifeddine PFE Juin 2007 45
Solution et implémentation
III.5.Conclusion
A l’occasion de ce chapitre nous avons traité la méthodologie adoptée afin de réaliser notre
application.
Une méthodologie qui a mis en oeuvre toute une panoplie assez complexe d’outils. L’objectif
de ce projet est de simplifier le déploiement de solutions CTI dans un réseau de téléphonie IP.
Le serveur d’application CTI ainsi que le client CRM constituent le cœur de notre application.
Tlili Seifeddine PFE Juin 2007 46
Conclusion Générale
Conclusion et perspective :
La gestion des données client permet de fournir une gestion simple et efficace des
informations personnelles de la partie appelante. Ce processus de gestion d’appel utilise les
identifiants de la partie appelante ou appelé pour récupérer à partir d’une base de données les
informations relatives au client et l’associer à l’appel pendant sa durée de vie. Cela permet à
l'appel d'être traité de manière plus efficace et c’est exactement dans ce but ou intervient notre
application.
Au cours de projet, nous nous sommes intéréssé à l’élaboration des différents points
qui englobent le déploiement et l’intégration de solutions de couplage téléphonie informatique
dans un environnement logicielle Cisco, ainsi que le développement de services de téléphonie
IP. En premier lieu, nous avons posé la problématique du projet à savoir les objectifs à
atteindre ou encore les différentes approches qui peuvent être utiliser pour notre application.
Ensuite, nous avons conçu et développé un modèle capable de répondre à nos besoins. Enfin,
nous sommes passés à l’étape test et implémentation, en effet à ce stade là nous pouvons
affirmer que notre application a répondu d’une manière impressionnante aux attentes et aux
objectifs fixés préalablement.
En effet, l’application a été testée avec succès sur une plateforme de Téléphonie IP
Cisco intégrant le CallManager.
Loin de se contenter du développement d’une application réservée unique aux utilisateurs de
PC, nous avons étendu notre étude en intégrant la partie CTI au IP Phone Cisco ainsi que le
développement de services de téléphonie IP.
Les fonctions que peut offrir le CTI sont particulièrement extensibles et comme
perspectives à ce projet, on pourra intégrer le concept de routage de fiche client d’un utilisateur à
un autres ou encore intégrer dans cette dernière les différents concepts d’un SoftPhone à savoir
composer un appel ou répondre à un appel.
L’élaboration de ce projet m’a permit d’approfondir et de concrétiser mes
connaissances en informatique et surtout dans le domaine du développement des applications
de téléphonie. Néanmoins, ces connaissances, ne suffisent pas pour développer des services
de téléphonie à valeurs ajoutés. Il m’a donc été donné d’apprendre au cour de ce stage qu’il
Tlili Seifeddine PFE Juin 2007 47
Conclusion Générale
faut joindre le monde informatique au monde des télécommunications pour pouvoir créer de
nouveaux services.
Tlili Seifeddine PFE Juin 2007 48
Annexe
Annexe A : Le couplage Téléphonie Informatique
1. Définition du CTI :
Le CTI, acronyme pour Computer Telephony Integration, soit Couplage Téléphonie
Informatique est une façon d'intégrer voix et données dans une même application ou encore
d’intégrer les fonctionnalités téléphoniques et informatiques dans un composant unique.
2. Historique du CTI :
Le CTI a été introduit en 1970 pour les ordinateurs à grande puissance de calcul dans le but de
commander les systèmes de PBX.
En 1990 la notion de « personnel computer technology » ou ordinateur personnel a été
intégrée dans le CTI et depuis, plusieurs standards ont vus le jour.
Parmi les organismes qui ont contribué à mettre au point le standard CTI on distingue [8] :
ITU Union international de Télécommunication (Internationnal Telecommunication Union) a
spécifié les applications de télécoms pour les Commutateurs et les ordinateurs :
Le TASC (Telecommunication Application for Switch and Computers) en 1994.
Ces spécifications incluent un aperçu général sur la norme TASC, l’architecture fonctionnelle
et les services associés.
TTC comité de la technologie de télécommunication (Telecommunication Technology
Comittee) du japon a spécifié l’interface entre les PBXs et les applications informatiques cette
spécification concorde avec la norme SCAI (SwitchtoComputer Application Interface). [8]
ECMA l’association européenne de constructeurs informatique (European Computer
Manufacters Association) supervise le développement du standard CSTA (Computer
Supported Telecommunication Application) depuis 1988, ce standard spécifie
l’environnement de commande entre commutateur et application informatique. [8]
Intel et Microsoft ont développé en 1993 la spécification TAPI (Telephony Application
Programming Interface) pour l’interface de développement d’application CTI pour les
systèmes d’exploitation Windows. [8]
Tlili Seifeddine PFE Juin 2007 49
Annexe
Novel et Lucient ont lancé la norme TSAPI en 1993 pour la plateforme Netware
contrairement à TAPI qui est destiné pour une plateforme Microsoft.
3. Les fonctions CTI:
Le CTI a été développé pour gérer les appels téléphoniques en intégrant l’aspect intelligent de
l’informatique. Par exemple, le CTI fournit une meilleure interface utilisateur que l’interface
traditionnelle des téléphones qui offre un accès limité à partir du pavé numérique. Plus encore
le CTI offre des plateformes et des fonctionnalités qui permettent de piloter et invoquer des
services téléphoniques à valeurs ajoutées d’une manière plus efficace et plus rapide.
Les fonctions CTI peuvent être classer en trois classes [8] :
Contrôle d’appel ou (Call control functions).
Traitement de données Media (Media processing).
3.1. Le contrôle d’appel
La control d’appel représente la partie la plus importante dans le concept CTI, elle invoque de
manière générale la supervision des appels téléphoniques et le contrôle des systèmes de
téléphonie qui interagit avec les appels. Parmi les services de contrôle d’appel on retrouve le
concept d’initiation d’appel, affectation d’une connexion à un appel, routage automatique des
appels ou encore la détection de frappe du pavé numérique du téléphone [8].
3.2. Traitement de données Média
Cet aspect englobe des fonctions liées au traitement de données parmi lesquelles on cite :
Traitement de la voix et des données data à savoir le Fax ou encore l’enregistrement de
messages vocaux, envoi et réception de Fax, génération, et détection de tonalité DMTF (Dual
tone multifrequency).
4. Composants CTI
Le CTI comporte trois composants : le «Switchtohost interface», l’API et le « CTI ressource
architecture ». Le «Switchtohost interface» est l’interface du type CSTA (Computer
Supported Telephony Applications) ou SCAI (SwitchtoComputer Application Interface) qui
fournit la connexion entre le PABX (ou IPPBX) et le serveur CTI. L’API permet à un
développeur de créer une nouvelle fonction ou un service pour le CTI. Le « CTI ressource
Tlili Seifeddine PFE Juin 2007 50
Annexe
architecture » est le gestionnaire de la téléphonie et des ressources dans le système telle que la
reconnaissance de la voix, la figure 33 illustre les différents composants évoqués dans
l’architecture CTI. [8]
Figure 33 Architecture globale du CTI
4.1. SwitchtoHost interface (Lien CTI)
Le premier composant de l’architecture CTI est le Switchtohost interface, ce lien permet de
fournir la connexion entre le commutateur et le serveur CTI et ainsi d’assurer la
communication entre ces deux composants. Plus traditionnellement les commutateurs
représentaient des systèmes fermés qui ne permettaient pas l’intégration de services et ne
fournissaient aucune interface de sortis pour un contrôle externe du système .Dans les
applications de téléphonies, le commutateur est contrôlé par le serveur CTI exécutant les
applications de téléphonie. Cette interface est aussi appelée lien CTI qui est totalement
différente de l’interface de la ligne téléphonique. [9]
Connecté au commutateur via le lien CTI, le serveur CTI fournit l’environnement de
téléphonie pour les développeurs d’applications de téléphonie à travers des standards API
(Application Programming Interface) parmi lesquels on cite le JTAPI (Java Telephony
Application Programming Interface) ou encore le TAPI (Telephony API) et le TSAPI
(Telephone Services API) . [9]
Deux technologies ont été proposées pour le lien CTI:
Le CSTA (Computer Supported Telecommunications Application) et SCAI (Switchto
Computer Application Interface).
Tlili Seifeddine PFE Juin 2007 51
Annexe
Le développement du CSTA a été initié par l’association ECMA tant dis que le SCAI est la
version développée par l’ANSI (American National Standards Institute) qui repose sur les
mêmes concepts que celui du CSTA mais il est plus complexe quant à son intégration et
déploiement dans une architecture de développement d’application CTI [9].
4.2. Le Standard CSTA
Ce protocole décrit les types de données échangées au niveau de la couche Application.
Le CSTA spécifie les interfaces d’applications ainsi que les protocoles à utiliser pour
superviser et contrôler les appels et les terminaux d’un réseau de communication. En d’autres
termes le CSTA consiste en une interface CTI qui permet de fournir l’accès aux services de
communications ainsi que le développement d’applications basé sur différents API
téléphonique [9].
La plupart des constructeurs de PBX ont adopté le CSTA comme leur standard, il représente
la base de la plupart des APIs à savoir TSAPI ou TAPI.
4.2.1. Le protocole CSTA
Le protocole CSTA spécifie l’ensemble des commandes et la structure des données pour la
communication entre le commutateur et l’hôte. A travers ce protocole, l’hôte accède aux
services de téléphonie CSTA intégrés dans le commutateur [2].
4.3. La plateforme Applicative (API)
Le principe de la technologie CTI est de permettre à une application d'agir sur le PABX
comme si elle était un simple téléphone. Cela est possible grâce à des interfaces de
programmation d’applications (Application Programming Interface API) standardisées.
Les API sont des interfaces qui offrent à un développeur logiciel de créer de nouvelles
applications de télécommunications, se sont des passerelles logicielle qui permettent de
discuter avec du matériel téléphonie, cette partie a pour but de décrire les trois principaux API
qui sont les plus utilisées pour le développement d’applications de téléphonie.[9]
TAPI : Acronyme pour Telephony Application Programming Interface, elle a été développée
par Microsoft pour les machines fonctionnant avec un système d’exploitation Windows.
TSAPI : (Telephony Services API) Développée par Novell et Lucent Technologies
Tlili Seifeddine PFE Juin 2007 52
Annexe
JTAPI : (Java Telephony) Développée par SunMicrosysteme, cette API fournit une portabilité
et une approche orienté objet pour les applications téléphonique développées en Java.
4.4. Architecture des ressources CTI
Dans un système CTI, un ou plusieurs composants Hardware sont necessaire pour
implémenter les fonctions du CTI. Ces ressources matérielles incluent analog/digital trunk
interface, traitement de la voix, traitement des données fax, reconnaissance de voix …
Le « CTI ressource architecture » est typiquement équivalent à un système ouvert qui
supporte toute intégration de nouvelles ressources CTI fabriquées par différents constructeurs.
Les standards pour « CTI ressource architecture » incluent :
MultiVendor Integration Protocol (MVIP) –Le protocole MVIP fait partie de la famille des
standards open source qui supportent l’intégration de traitement de la voix, traitement de
données Fax/Data et plusieurs technologies informatique qui requièrent la connexion au
réseau téléphonique soit un Réseau PSTN ou IP pour la VOIP. Le MVIP offre une approche
d’intégration entre le PC et le PBX ainsi que d'autres systèmes de commutation de téléphone.
Signaling Computing System Architecture (SCSA) –SCSA est une architecture complète et
ouverte pour l’intégration des fonctions de la téléphonie informatique (CT computer
Telephony). Ce protocole contient non seulement le modèle hardware qui spécifie le Bus CTI
pour la c ommutation en temps réel des données mais il intègre aussi le modèle logiciel qui
identifie les services pour le traitement de média et le contrôle d’appel. [9]
5. Les applications CTI
5.1. Le service vocal interactif
Les serveurs vocaux donnent la possibilité à un utilisateur du téléphone de dialoguer avec le
système d'information de l'entreprise par :
• Accès aux données sous forme parlée
• Introduction de messages dans le système de l'entreprise via le serveur vocal sous forme
numérique (clavier) ou parlée Les applications classiques du serveur vocal sont les services de
transaction (réservations, télépaiement) et les services de consultation (horaires, comptes
bancaires, ...) ou encore de standard automatique.[9]
Tlili Seifeddine PFE Juin 2007 53
Annexe
5.2. L’Identification de l'appelant/Montée de fiche client
A chaque nouvel appel téléphonique, la 'fiche client monte' à l'écran de l'agent. Celuici gagne
du temps, il connaît tout de suite le nom de l'appelant et pourra accueillir son interlocuteur de
la façon la plus personnalisée possible, il peut s'informer sur l'historique des contacts avec ce
client et éviter ainsi de redemander le besoin client. Inutile de demander le nom de l'appelant,
il est affiché sur votre écran avant même de décrocher.
5.3. La messagerie unifié ou Unified Messaging
En outre, la messagerie unifiée évolue, depuis peu, vers le concept de communication unifiée.
Il ne s'agit plus alors seulement de regrouper des messages écrits et vocaux mais de réaliser
une synthèse complète entre ces médias et avec les fonctions d'annuaire et d'agenda.
Avec Unity Unified Messaging (Cisco) ou Cisco Web Attendant, un message vocal ou écrit
peut être lu par un PC, un GSM ou un PDA. De plus, l'utilisateur peut créer des règles de
routage tenant compte, par exemple, de son agenda ou de l'identité de chaque appelant. [8]
Tlili Seifeddine PFE Juin 2007 54
Annexe
Annexe B :
CallManager
La plateforme Cisco CallManager étend les fonctionnalités téléphoniques dans l’entreprise
aux équipements connectés sur le réseau de données tels que les téléphones IP, les
équipements de traitement de la voix, les passerelles VoIP et les applications multimédia. Les
services additionnels de data, voix et vidéo tels que la messagerie unifiée, la conférence
multimédia, le centre de contact collaboratif et les systèmes de réponse multimédia interactifs
interagissent avec la solution d’IP Téléphonie par l’intermédiaire des interfaces de
programmation ouverts (APIs) natifs de Cisco CallManager.
Cisco CallManager s’installe sur les serveurs de convergence de média de Cisco (MCSs) ainsi
que sur un choix de serveurs d’autres constructeurs (HP, IBM). Cisco CallManager est livré
avec une série d’applications et d’utilitaires qui comprend Cisco CallManager Attendant
Console, qui est un logiciel de poste opérateur pour PC, une application de conférence en
mode impromptu (adhoc), Bulk Administration Tool (BAT), CDR Analysis and Reporting
tool (CAR), RealTime Monitoring Tool (RTMT), Cisco CallManager AutoAttendant, qui
est un standard automatique simple et de petite capacité, Tool for Autoregistered Phones
Support (TAPS) et IP Manager Assistant (IPMA). [10]
Tlili Seifeddine PFE Juin 2007 55
Annexe
Annexe C :
1. Le format RSS
Format de syndication de contenu Web, basé sur le XML, qui permet d’indexer de façon
automatisée le contenu d’un site Web et de le mettre instantanément à disposition d’autres
sites. Le format RSS est en fait une manière de décrire le contenu d’un site Web (articles,
informations, événements) et plus généralement toute page qui présente un contenu mis à jour
chronologiquement. Il permet à des sites Web d’afficher automatiquement les derniers titres
parus sur un autre site. Créé à l’origine par Netscape, le format RSS est désormais utilisé
couramment pour partager du contenu entre sites Web [11].
RSS est l’acronyme de Really Simple Syndication (RSS 2.0), RDF Site Summary (RSS 0.9,
1.0 et 1.1) ou Rich Site Summary (RSS 0.91), suivant les différentes versions [11].
2. Le langage XML
Extensible Markup Language (langage de balisage extensible), généralement abrégé XML, est
un standard du World Wide Web Consortium qui sert de base pour créer des langages de
balisage : c'est un « métalangage ». En ce sens, XML permet de définir un vocabulaire et une
grammaire associée sur base de règles formalisées. Il est suffisamment général pour que les
langages basés sur XML, appelés aussi dialectes XML, puissent être utilisés pour décrire
toutes sortes de donnés et de textes. Il s'agit donc partiellement d'un format de donnés.
L'extensibilité de XML est principalement assurée par la notion d'espace de nommage.
L'objectif initial de XML était de faciliter le partage de textes et d'informations structurées,
par exemple au travers d'Internet, en séparant le contenu du contenant. Il constitue une
simplification de SGML tout en continuant à assurer la portabilité des documents, notamment
grâce à l'intégration d'Unicode.
Tlili Seifeddine PFE Juin 2007 56
Bibliographie
Bibliographie
[1] www.onetechgroup.com
[2] CTI Applications Architecture and Design for CallManager 3.1 October, 2001 IP
Telephony Design Guide.
[3] http://uml.free.fr/indexcours.html, Laurent Piechocki
[4] Cay S. Horstmann And Gary Cornell, Au Coeur de Java 2, CampusPress, édition 2000
[5] JTAPI specifications, 22 Mars 2000.
[6] http://www.a525g.com/programmation/javaswing.htm
[7] www.rr0.org/java/Tomcat.html
[8] Cisco Lessons documentations, Computer Telephony Integration and ICM.
[9] Michael Bayer ,Computer Telephony Demystified Putting CTI, Media Services, and IP
Telephony to Work, New York McGrawHill Professional, Janvier 2000.
[10] John Alexander, Chris Pearce, Anne Smith, Delon Whetten, Cisco CallManager
Fundamentals Second Edition, Cisco Press, 22 Septembre 2005.
Tlili Seifeddine PFE Juin 2007 57
[11] http://fr.wikipedia.org/wiki/Really_Simple_Syndication
Titre :
Développement et intégration de solutions CTI dans une plateforme Cisco.
Résumé
Le Couplage téléphonie informatique permet de coupler la téléphonie, principal canal de
communication client à distance, et le système informatique de l’entreprise, source de
connaissance du client. Il constitue le point clé pour la relation client pour toutes
entreprises.
C'est dans cette perspective que s'inscrit notre projet qui a pour objectif de concevoir et
de réaliser une application CTI adapté à la fois au IP Phone Cisco et au PC, basée sur la
plateforme Cisco dont le CallManager constitue le noyau, mais le projet s’élargit encore
plus, afin de faire profiter l’utilisateur des avantages que fournit cette plateforme à savoir
la possibilité d’intégrer de nouveaux services de téléphonie IP accessible à partir du IP
Phone.
Pour cela, nous mettons en oeuvre un serveur d’applications CTI constituant une couche
architecturale à part entière pour les IP Phones, dans le but d’afficher les informations de
l’interlocuteur ainsi que les différents services de téléphonie IP développés pour les IP
Phone. Le Client CRM assura cette tache pour les utilisateurs de PC.
Mots clés
JTAPI, CTI, Cisco CallManager, Java, CRM, IP Phone, services de téléphonie IP.