Scripts et APIs pour la gestion de serveurs SIP



Documents pareils
Programmation de services en téléphonie sur IP

SIP. Sommaire. Internet Multimédia

SIP A. Aoun - La Visioconférence SIP - 1

Guide de configuration de la Voix sur IP

Compte Rendu d intégration d application

Introduction de la Voix sur IP

La VOIP :Les protocoles H.323 et SIP

Stéphanie Lacerte. Document technique. Connextek. 31 mai Cloudtel

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

PFE Télécommunications. Pré-rapport à l'issue des 6 premières semaines de stage. Page 1 sur 5 1 %

La VoIP et ToIP. - Les constructeurs de réseaux : Anciens : Alcatel, Ericsson, Nortel, Siemens, Lucent, NEC Nouveaux venus : NetCentrex, Cirpack

TAGREROUT Seyf Allah TMRIM

Calcul de la bande passante réelle consommée par appel suivant le codec utilisé

Mise en œuvre des serveurs d application

Services Réseaux - Couche Application. TODARO Cédric

Passerelle VoIP pour PBX

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Téléphonie. sur IP. 2 e édition

Voix sur IP Étude d approfondissement Réseaux

Mise en place d un service de voix sur IP

HYBIRD 120 GE POUR LES NULS

LABO TELEPHONIE. Etude et réalisation de la Téléphonie sur IP (VoIP) avec Cisco Call Manager et Asterisk

Configuration du driver SIP dans ALERT. V2

La ToIP/VoIP. Voix et téléphonie sur IP - Convergence voix et données

18 TCP Les protocoles de domaines d applications

Protocole SIP et rc o d n o C ée yc L N E S ro P c a B

JAVA APIs for INTEGRATED NETWORKS

C a h p a i p tre e 4 Archi h t i ectur u e e t S i S g i n g a n li l s i atio i n o n SI S P

Yann BECHET 32 ans 8 ans d expérience yann@bechet.org

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Réunion du 1er Avril VoIP : théorie et réalité opérationnelle. info@ipercom.com

Mettre en place un accès sécurisé à travers Internet

VOIP : Un exemple en Afrique

La VoIP: Les protocoles SIP, SCCP et H323. Jonathan BRIFFAUT Alexandre MARTIN

VoIP - TPs Etude et implémentation

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Spécifications de raccordement au service de Téléphonie sur IP (ToIP) de RENATER

Configuration d'un trunk SIP OpenIP sur un IPBX ShoreTel

Guide de configuration Aastra 5000 pour le raccordement d un trunk Sip OPENIP

Messagerie asynchrone et Services Web

Application des Spécifications détaillées pour la Retraite, architecture portail à portail

Module BD et sites WEB

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Cours CCNA 1. Exercices

Autorité de Régulation de la Poste et des Télécommunications. Direction de l Interconnexion et des Nouvelles Technologies.

Présentation Internet

Appliance FAST360 Technical Overview. Sécurité de la VoIP. Copyright 2008 ARKOON Network Security

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Téléphonie. sur IP. Module Voix et Téléphonie sur IP. Téléphonie sur IP. Sujet 4 Identification et localisation dans le protocole SIP

LA VoIP LES PRINCIPES

Aastra MD Evolution» Évoluer à vos côtés

SIEMENS LX / Cloud OpenIP

Livre Blanc WebSphere Transcoding Publisher

Evolutions futures et tendances de la téléphonie sur IP

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

SIP : Session Initiation Protocol

Fiche Produit Announce

RAPPORT DE CONCEPTION UML :

Déploiement sécuritaire de la téléphonie IP

Bac Pro SEN Académie de Versailles Etablissement Ampere Morsang sur orge Session 20XX SYSTÈMES ÉLECTRONIQUES NUMÉRIQUES

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

RCS : Rich Communication Suite. EFORT

TP 2 : ANALYSE DE TRAMES VOIP

Voix sur IP. Généralités. Paramètres. IPv4 H323 / SIP. Matériel constructeur. Asterisk

Projet de Veille Technologique

Voix et Téléphonie sur IP : Architectures et plateformes

Firewall Net Integrator Vue d ensemble

Hébergement de sites Web

Cisco Certified Network Associate

Virtual PBX Quick User Guide

SUJET DES FINALES NATIONALES Sujet jour 1 version 1

L3 informatique TP n o 2 : Les applications réseau

Les Nouveaux Standards de la ToIP et de la Convergence

Guide de l utilisateur de Cisco Unified Communications Manager Assistant pour Cisco Unified Communications Manager 6.0

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

LA VOIX SUR GPRS. 1. Introduction. P. de Frino (1), S. Robert (2), G. Cecchin (3) Résumé

GUIDE D'UTILISATION DU SYSTEME TELEPHONIQUE POLYCOM

Programmation de services sensibles au contexte en téléphonie sur IP

SOLUTION POUR CENTRE D'APPEL

Cours n 12. Technologies WAN 2nd partie

Système de Communications Avancées by Pulsar VoIP. Pulsar VoIP - Automation Design - chemin des aulx Genève -

Belgacom Forum TM 3000 Manuel d utilisation

Keyyo Guide de mise en service CTI / API / TAPI Keyyo

Les réseaux de campus. F. Nolot

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

TUTORIEL RADIUS. I. Qu est-ce que RADIUS? II. Création d un groupe et d utilisateur

Alcatel OmniPCX Office

TP : STATION BLANI 2000 SIMULATION DU RESEAU INFORMATIQUE

(In)sécurité de la Voix sur IP [VoIP]

VOIP. QoS SIP TOPOLOGIE DU RÉSEAU

Patrons de Conception (Design Patterns)

Fiche Produit Desktop Popup

Routeur client. PC accueil Postes IP

LAB : Schéma. Compagnie C / /24 NETASQ

Transcription:

Scripts et APIs pour la gestion de serveurs SIP Schweizer Laurent Date : 23/12/2001 Diplôme SIP & mobility www.tcom.ch

Table des matières : 1 Introduction...4 2 Call Processing Language...5 2.1 Introduction...5 2.2 Que peut faire CPL?...5 2.3 Création des scriptes...5 2.4 Fonctionnement des scripts...6 2.5 Exécution des scripts...7 2.6 Conclusion sur CPL...7 3 Common Gateway Interface, CGI...8 3.1 Introduction...8 3.2 Possibilité des sip-cgi...8 3.3 Création des scripts...8 3.4 Comparaison cgi-sip et cgi-bin...8 3.5 Conclusion...9 4 SIP Servlets API...10 4.1 Introduction...10 4.2 Architecture...10 4.3 Choix de la servlet lors de l arrivée d un message...11 4.4 Que peuvent faire les servlets SIP?...12 4.5 Fonctionnement des servlets...12 4.6 Création de servlets SIP...14 4.7 Conclusion...14 5 The JAIN APIs...15 5.1 Introduction :...15 5.2 But...16 5.3 Architecture...16 5.4 Les différentes APIs de JAIN...18 5.5 JAIN et SIP...18 5.6 JAIN Call Control...19 5.6.1 Introduction...19 5.6.2 Les différents modules...20 5.6.3 Les composants de base...21 2

5.6.4 Interaction entre les applications et l API...22 5.6.5 Evénements...22 5.6.6 Java Core Package...23 JcpProvider...23 Etat d un provider...23 JcpCall...24 JcpConnection...24 JcpAddress...25 5.6.7 Java Call Control...25 JccProvider...25 JccCall...26 JccConnection...26 Evènements et évènements bloquent...28 JccAddress...29 Event Filter...29 5.6.8 Relation entre JCC, JCP et JTAPI....30 5.7 JAIN Service Logic Execution Environment (JAIN SLEE)...31 5.8 JAIN Service Creation Enviroment (JAIN SCE)...33 5.9 JAIN et PARLAY...35 5.10 Conclusion de Jain...36 6 Conclusion...37 7 Bibliographie...38 3

1 Introduction Il y a bien longtemps que l ont sait téléphoner et actuellement ceci ne nous suffit plus, en effet le monde moderne est très demandeur de nouveaux services, plusieurs de ces services peuvent et doivent être implémenté dans les terminaux ( téléphone ou client PC) ainsi ils restent sous le contrôle des utilisateurs, ils peuvent ainsi les modifier, les personnaliser ou les développer selon leurs besoins. Traditionnellement, les services de téléphonie basés réseau sont développés et gérés par des providers, typiquement créés pour des interfaces propriétaires avec des outils restreint et propriétaires, il en résulte que l utilisateur final ne peut pas ou que très peu personnaliser ces services, en ce qui concerne le développement de service spécifique, cette possibilité n existe pas. Dans l environnement d Internet ceci est différent, le but est de laisser à l utilisateur final la possibilité de créer, personnaliser, modifier ces services selon ses besoins. Pour avoir cette même souplesse dans la téléphonie VoIP, il est important de posséder des interfaces normalisées (API). Ce document a pour but de présenter quelques-unes une de ces interfaces, d expliquer leurs possibilités et leurs avantages. 4

2 Call Processing Language 2.1 Introduction CPL est un langage utilisé pour décrire et contrôler des services de téléphonie basée sur Internet. Ce langage basé sur du XML est de haut niveau il fait donc abstraction du protocole de signalisation utilisé. 2.2 Que peut faire CPL? Ce langage a été créé pour décrire un grand nombre de services tel que déviation en cas de non-réponse ou d occupation, ex déviation sur un répondeur en cas de non-réponse distribution intelligente des appels, ex. en fonction de l heure, l appel va être redirigé au bureau, sur un portable ou sur un répondeur renvoi d information sous la forme d une page web ex. une entreprise possède un numéro de téléphone général pour des éventuels clients. Si une personne appelle pendant les heures de bureau elle obtiendra alors sous la forme d une page web la liste des interlocuteurs disponibles avec une indication de leur secteur d activité. Dans le cas ou l appel a lieu en dehors des heures de bureau, elle obtiendra un page avec les heures durant lesquelles elle peut téléphoner. cependant il n est pas possible de tout faire, afin de garantire une certaine sécurité (pour le provider) l utilisateur ne peut que décrire un service de téléphonie, ainsi, ce langage ne dispose pas de variables, de boucles et il lui est impossible d exécuter des programmes extérieurs. 2.3 Création des scriptes Le CPL est basé sur du XML, ce langage très simple peut être créé, généré de plusieurs manières, un peut comme du HTML. A la main, Les scripts peuvent être créer avec un simple éditeur de texte par des utilisateurs avertit, la syntaxe n est pas très compliquée. Avec un script, Ces scripts peuvent être générés par d autres scripts de manière automatique Avec un outil graphique, Comme ce langage est très simple il est possible d utiliser des outils graphiques pour générer ces scripts, il est bien évident que cette solution est la plus intéressante si l on désire mettre ce service à disposition de personnes ne sachant pas programmer. 5

2.4 Fonctionnement des scripts Le service que l on va créer est décrit par une collection de nœuds qui indiquent les opérations ou les choix à effectuer, un nœud peut avoir plusieurs paramètres et plusieurs sorties, elle sera choisie en fonction du résultat de l action ou du résultat de la décision. La figure 1 est une représentation graphique d un script CPL L on peut voir que ce script possède un point d entrée, il s exécute ensuite jusqu a ce qu il arrive sur un nœud sans sorties (proxy ou redirect, le proxy possède bien des sorties mais uniquement dans le cas d un timeout). Durant son déroulement, chaque action contenue dans les nœuds parcourus sera exécutée. Figure 1, représentation graphique d un script CPL 6

La figure n 2 est le code de cette représentation graphique ( sans la partie Voicemail) Figure 2, code CPL 2.5 Exécution des scripts Généralement les scripts CPL sont associés avec une adresse ( n de téléphone ). Quand un appel arrive au serveur CPL il recherche dans sa base de données le script à exécuter en fonction de l adresse source et de la destination. 2.6 Conclusion sur CPL Ce langage peut être utilisé pour créer de nombreux services de bases, toutefois il a une limitation importante puisqu il ne peut obtenir des données extérieures ( base de données, fichiers ) Cette limitation à été imposée afin d obtenir un maximum de sécurité pour le provider, il faut bien comprendre que le but est que chaque utilisateur puisse créer sont propre script et le télécharger sur le serveur. Avec du CPL le provider sait qu il prend peut de risque car l utilisateur ne peut que traiter des appels qu ils lui sont destinés et il ne peut pas endommager, surcharger ou détruire les données du serveur. Un autre avantage du CPL est qui peut être facilement généré à partir d outils graphiques, il est donc utilisable pour un grand nombre de personnes, ce langage se place donc en excellente position pour devenir un outil de développement pour la création de petit service de téléphonie 7

3 Common Gateway Interface, CGI 3.1 Introduction Les scripts sip-cgi sont là pour étendre les possibilités des proxy ou serveur de redirection SIP sans devoir changer le code du serveur. En effet ces scripts ont un contrôle total sur les messages SIP (header et body) 3.2 Possibilité des sip-cgi Contrairement au CPL, les scripts SIP-CGI n ont pas de limitation, ils peuvent obtenir des données de l extérieur ( base de données, fichiers etc.), de plus ils ont un contrôle total sur les messages SIP. les CGI peuvent être utilisés pour : La détection de boucles L authentification Dévier (occupé / pas de réponse) Le passage de firewall ( demande d ouverture d un port RTP) Les déviations intelligentes La distribution des appels ( mise en queue) Thrid-party registration, control Etc Contrairement aux scripts CPL qui sont exécuté lors d un nouvel appel, les CGI le sont à chaque message ( sauf pour ACK et CANCEL), ils peuvent ainsi retransmettre, répondre ou générer des nouveaux messages 3.3 Création des scripts Le langage utilisé pour créer ces scripts est libre ( perl, c, c++, vb script). 3.4 Comparaison cgi-sip et cgi-bin Les scripts SIP-CGI sont similaires aux scripts CGI-BIN, tous deux ne définissent pas le langage dans lequel le script est implémenté et on a un contrôle total sur les entêtes/messages, cependant il y a bien quelques différences, en effet dans le modèle HTTP la réception d un message provoque l émission d une réponse sans ce préoccuper de ce qui avait fait auparavant, avec SIP ceci n est plus possible. Il a donc fallu introduire un model de persistance de manière à pouvoir garder une trace de ce qui a été fait et de réagire en fonction des évènements passés. Ceci a été fait en ajoutant des cookies au message SIP, il s agit de 8

lignes qui sont ajoutées à la fin du message SIP, elles ne sont pas traitées par le serveur (il les recopie uniquement dans les réponses qu il émet ) Une autre différence importante, avec les CGI-BIN, une demande donnait lieu à une réponse, dans notre cas une demande peut induire plusieurs messages en sorties. 3.5 Conclusion Les sip-cgi sont nettement moins limitatif que les CPL mais ceci se paye au niveau de la sécurité, elle n est pas nulle mais doit être très soigneusement paramétrée au niveau de l OS. Ces scripts seront utilisés pour étendre les possibilités des serveurs, ils sont réservés à des utilisateurs sachant programmer plus particulièrement au provider. 9

4 SIP Servlets API 4.1 Introduction Cette api est une extension java pour les serveurs SIP, similaire au servlets HTTP elles sont prévues pour développer tout type de services. Elles peuvent interagire avec d autres sources de données tout en garantissant une bonne sécurité, il est en effet possible de confiner les servlets à n utiliser que les ressources de la machine virtuelle. 4.2 Architecture L architecture est propre à chaque serveur, si on prend celle du serveur de HP, la couche SIP se situe juste en dessus des couches Proxy et Registrar ( figure n 3) alors que dynamicsoft la place en seconde API, après Jain (figure n 4) Figure 3, architecture du serveur HP 10

Figure 4, architecture selon dynamicsoft 4.3 Choix de la servlet lors de l arrivée d un message Lorsque des messages SIP arrivent le serveur (redirection, proxy ) va exécuter une servlet, pour cela il dispose de règles qui lui permettent en fonction du type message SIP, de l appelant, de l appeler, de déterminer la servlet à exécuter. Figure 5, choix de la servlet 11

4.4 Que peuvent faire les servlets SIP? L API donne le contrôle total aux servlets SIP sur les messages (header et body), elles peuvent retransmettre, rediriger, répondre ou rejeter un message, les servlets ont aussi la possibilité d initier des requêtes. Tout comme les SIP-CGI, elles peuvent accéder à des données extérieurs par l intermédiaire des mécanismes standard de java, exemple: JDBC, pour l accès aux bases de données JNDI, pour les bases LDAP JMF, pour la manipulation de media, ex. Codecs, RTP The speech API JavaMail... Cependant la sécurité est bien meilleure qu avec les CGI, en effet on peut confiner l exécution du programme java dans l environnement de la machine virtuelle. 4.5 Fonctionnement des servlets Lors de l arrivée d un message, celui-ci est décomposé lors de son passage à travers le stack SIP, puis en fonction des règles ( voir figure 5), le message décomposé sera transmis à une des servlets, elle pourra, répondre à ce message, le transférer ou effectuer toute autre manipulation sur celui-ci. Figure 6, architecture simplifiée 12

Dans cet exemple figure 7, la servlet est utilisée comme proxy, elle doit donc déterminer l adresse actuelle des agents (ex. base de données avec JDBC) et transférer les messages vers celui-ci. Figure 7, servlet utilisée comme serveur de redirection / proxy Dans l exemple de la figure 8, la servlet reçoit le flux RTP, elle fait donc office d agent SIP avec la particularité de ne pas forcément rediriger le flux voie vers des haut-parleur, en effet elle pourrait traiter ce flux avec une reconnaissance vocale. Figure 8, servlet utilisée comme agent SIP 13

4.6 Création de servlets SIP Les servlets SIP sont basées sur une interface en java, elles devront donc être développées dans ce même langage, bien entendu il est possible de réutiliser des outils standard de développement pour java. Le développement des servlets SIP est similaire au développement de servlets HTTP, la principale différence est comme pour les CGI, le fait que pour SIP on doit maintenir un historique de ce qui a été fait. 4.7 Conclusion Les servlets SIP ont un avenir très prometteur, en effet il est possible de développer un grand nombre de services avec des accès aux sources de données extérieures tout en garantissant une bonne sécurité mais contrairement au CPL, ce type d outils pour la programmation de service reste réservé à des personnes sachant programmer (en java). Un autre avantage non négligeable est que les services développés avec cet outil sont totalement portables puisqu il ne dépend pas du serveur mais de l interface qui est implémentée par celui-ci. 14

5 The JAIN APIs 5.1 Introduction : JAIN est un ensemble d APIs qui permettent de développer rapidement des nouveaux services. Ces APIs ont pour but d offrire des nouveaux niveaux d abstraction, en effet avec cette ensemble d APIs il est possible de créer un service sans que l on connaisse le serveur (HP, VOVIDA, CISCO ) ou le protocole de signalisation( TCAP, SIP, MGCP) utilisée par celui-ci. Le but de JAIN n est pas seulement d intégrer les systèmes de communication basés paquets (IP, ATM) mais bien pour tous les systèmes de communication comme, les réseaux sans fil, PSTN ou paquet. Ceci peut être constaté sur la figure 9 qui donne un premier aperçu de l architecture de JAIN Figure 9, architecture de JAIN 15

5.2 But Actuellement les solutions viennent d un vendeur qui fournit dans une grande boite totalement propriétaire le matériel et le logiciel du serveur ainsi que les services. Les clients dépendent donc de ce vendeur, il en résulte des coûts d extensions et de maintenances élevés. Avec JAIN on obtient une solution ou les différentes parties du serveur proviennent de vendeurs différents, le client peut ainsi choisir les différentes parties en fonction de ces besoins Figure 10, transfert d'architecture 5.3 Architecture Le but de JAIN est de créer des services de nouvelles générations pouvant intégrer des communications par paquets (IP, ATM ), PSTN et WIRELESS. Il a donc été nécessaire de définir un environnement d exécution indépendant du protocole de signalisation. Pour cela, plusieurs couches d abstraction ont été créées ( voir figure n 11), il définit aussi une librairie de composant, des outils de développement et un environnement de création de services Comme nous l avons dit, JAIN définit des couches d abstractions, elles sont au nombre de trois : Network layer: Il s agit d une couche définissant le protocole de communication choisit. Télécommunication : Réseaux intelligent (AIN/IN) ou SS7 avec beaucoup de protocole ISUP,TCAP,INAP Wireless : SS7 avec des applications mobiles (MAP) VoIP : SIP, MGCP, Megaco, H.323 16

Signaling layer: Il s agit d une couche représentant les logiciels chargés de la gestion des communications Télécommunication : Signaling Service Point (SSP) Wireless : Mobile Switching Centers (MSC) VoIP : Proxy, redirect serveur, H 323 gatekeeper, media gateway controllers Service layer : Il s agit d une couche représentant les services de base. Télécommunication : Service Contrôle Points (SCP) Wireless : Base Station Controllers (BSC), Home Location Registers (HLR) VoIP : Serveur d applications internet Figure 11, architecture de JAIN 17

5.4 Les différentes APIs de JAIN L interfaçage des différentes couches d abstraction est faite au moyen d APIs La 1 er est une interface au niveau du protocole, elle définit ce que doivent fournir les stacks de signalisation. Ces interfaces sont propres à chaque protocole, sont but est de fournir une indépendance du vendeur, il est ainsi possible d acheter un stack SIP chez CISCO, DYNAMICSOFT ou Pour que celui-ci soit compatible il suffit qu il implémente l interface JAIN La 2 ème API est la JAIN JCC/JCAT, l objectif de cette API est de fournir une abstraction du protocole de signalisation utilisé. Elle fournit les mécanismes pour la gestion, le traitement et le contrôle des communications. JCC et JCAT fournissent les outils pour pouvoir observer, initier, répondre, traiter et manipuler des appels contenant des sessions multimédia. JCC contient les mécanismes de base de JTAPI mais peut être étendu pour fournir des traitements d appel plus complexes. JCAT gère la coordination et les transactions entre les différents services, il offre des nouvelles possibilités pour pouvoir exécuter des applications avant, pendant et après le traitement d un appel, il est typiquement utilisé pour des nouveaux services tel que la gestion de firewall La 3 ème interface fournit une abstraction de l opérateur pour la création de nouveau service 5.5 JAIN et SIP Trois API ont été définies pour SIP : JAIN SIP, il s agit d une API de bas niveau basée sur le RFC 2543 elle se situe juste en dessus du stack SIP JAIN SIP Lite, il s agit d une API haut niveau fournissant une abstraction du stack SIP, elle peut être utilisée pour créer un agent SIP JAIN SIP Servelts, voir la partie consacrée au servlet Actuellement seul la spécification de JAIN SIP est disponible, elle est fournie avec une bonne documentation qui décrit toutes les méthodes de l interface. ( javadoc) La figure n 12 montre leur imbrication dans un stack SIP, comme on peut le voir, elles ne sont pas concurrentes mais fournissent des abstractions et services différents. 18

Figure 12, les différentes API SIP 5.6 JAIN Call Control 5.6.1 Introduction Cette API a été développée pour fournir un modèle d appel générique, elle reprend les aspects essentiels des modèles d appel déjà existants. Cette interface donne au programmateur une bonne abstraction pour qu il puisse facilement manipuler des appels et gérer les interactions entre ceux-ci et d autres applications. Cette interface permet de créer, gérer, manipuler, terminer des appels pour des réseaux PSTN, paquets et sans fils. Elle supporte le first-party tout comme le third-party, il est aussi possible d exécuter des applications durant les sessions, ce qui permet d appeler des services intelligents. 19

5.6.2 Les différents modules Cette API est spécifiée par un ensemble d objets qui modélisent différents éléments physiques et logiques impliqués dans une session. Les applications interagissent avec cette API en utilisant le modèle des l LISTNER. L API est divisée en 3 paquetages : Elementary Call Control : Java Core Package (JCP) fournit les services basiques pour initier et répondre à un appel, il est probable que ces services ne son pas assez avancés pour être utilisés pour la création de nouveaux services, néanmoins ce module représente un concept important pour l unification de JTAPI, et de JAIN. Core Call Control : JCC fournit les services pour pouvoir observer, créer, manipuler, traiter et terminer des appels, il permet aussi d exécuter des applications durant une session. Quand nous parlons d appel il faut bien comprendre qu il s agit pas que de voix, mais aussi de données et ou des sessions multimédia. Il existe encore le paquetage JCAT qui étend les possibilités du Call Control, actuellement sa spécification n est pas encore terminée elle n as donc pas encore été rendue publique. Remarque: ces différents paquetages doivent s exécuter sur la plate-forme de communication ( ex. Call agent ou softswitch) Figure 13, relation entre JCP et JCC Java Call Processing (JCP) Java Call Control (JCC) 20

5.6.3 Les composants de base Pour JCC et JCP l API est composée d interface, de classes, d opérations, d événements, etc L API fournit 4 éléments qui sont commun à JCP, JCC et d autres paquetages plus avancés, il s agit du : Provider : cet objet est une abstraction représentant le fournisseur de services. Il dissimule les aspects spécifiques au service du sous système et permet aux applications java d interagire avec celui-ci est ce indépendamment du protocole et de l implémentation utilisée. Call : cet objet représente un appel (voix, data ou multimédia), il représente aussi une connexion dynamique entre les entités physiques et logiques. Address : cet objet représente l adresse logique d un terminal (ex. n de téléphone, adresse IP) Connection : cet objet représente la liaison dynamique entre l objet Address et l objet Call La figure n 14 montre la relation entre les différents objets pour une relation entre 2 terminaux. Figure 14, model d'objet utilisé pour une connexion entre 2 terminaux Provider Call Connection Connection Address Address 21

5.6.4 Interaction entre les applications et l API Les applications qui se situent en dessus de l API font des appels synchrones aux méthodes de celle-ci. La plate-forme qui implémente l API peut informer les applications que un événement c est produit (exemple, nouvel appel ) en utilisant les événements JAVA, pour cela les applications doivent fournir des listeners correspondant aux événements qui les intéresses. Figure 15, interaction entre logiciel et API Provider Listener Call Listener Connection Listener Provider Call Synchronous method calls Java Events Connection Connection JCC API Network or Platform 5.6.5 Evénements Différents objets peuvent générer des événements, ceux-ci peuvent être interceptés par différents Listners. La figure n 16 montre l organisation des objets Event et Listener, l objet ProviderEvent indique tout changement d état intervenu dans le JcpProvider, CallEvent indique tout changement intervenu dans l objet JcpCall et ConnectionEvent indique tout changement dans JcpConnection. Ces événements sont alors transmis à leur Listener respectif soit ProviderEvent à ListenerEvent, CallEvent à CallListener, ConnectionEvent à ConnectionListener. Figure 16, organisation des objets Events et Listners Event Events Listener Listeners Call Event Provider Event Call Listener Provider Listener Connection Event Connection Listener 22

5.6.6 Java Core Package Nous allons maintenant décrire les composants basic de JCP, Il s agit d un paquetage élémentaire qui est utilisé par des paquetages plus avancés. Il fournit des méthodes pour pouvoir placer et arrêter des appels. JcpProvider JcpProvider représente l entité logiciel d un central téléphonique avec ces interfaces et un sous système de téléphonie. Le système de téléphonie peut être un PBX relié à un serveur, une carte téléphone / fax dans un PC ou un central basé sur les réseaux informatique (VoIP). Etat d un provider Les providers possèdent trois états : IN_SERVICE : cet état indique que le provider et actuellement en fonctionnement et qu il est disponible OUT_OF_SERVICE : cet état indique que le provider n est actuellement pas disponible, beaucoup de méthodes du provider sont incorrectes lorsqu il se trouve dans cet état. Il peut à tout moment revenir dans l état IN_SERVICE, mais l application ne peut prendre aucune mesure directe pour causer ce changement SHUTDOWN : cet état indique que le provider n est pas disponible. La plupart des méthodes du provider sont incorrectes lorsqu il se trouve dans cet état. Les applications ont accès à une méthode pour mettre celui-ci dans cet état. Figure 17, état d'un provider IN_SERVICE SHUTDOWN OUT_OF_SERVICE Une application ne peut pas créer un provider, elle peut uniquement en obtenir un avec la méthode getprovider(). 23

JcpCall Cet objet représente une communication entre deux (ou plus) participants. Pour un appel sortant (que l on émet), cet objet est créé en invoquant la méthode createcall() du provider. Pour un appel entrant (que l on reçoit), cet objet est créer par la plate-forme. L objet call possède une référence sur son provider, elle est initialisé lors de la création de l appel est ne change pas durant toute la durée de celui-ci. La provider associé peut être obtenu avec la méthode getprovider() de l objet call L objet call possède plusieurs état : IDLE : c est l état initial de tout call. Dans cet état il ne possède aucune connexion. ACTIVE : un call avec une activité se trouve dans cet état. Dans cet état un call doit posséder une ou plusieurs connexions. INVALID : Il s agit de l état final d un call. Dans cet état il ne possède plus aucune connexion associée. Un call dans cet état ne peut plus être utilisé pour des actions futures. Figure 18, état des objets call IDLE ACTIVE INVALID JcpConnection Un objet connection représente un lien entre un objet call et un objet adresse, un objet connection est créé pour chaque nouvelle connexion d un call. Chaque JcpConnection possède une machine d état qui décrit la relation actuelle entre le call et l adresse. Le diagramme ci dessous décrit les différents états possibles d une connexion. Comme vous pourrez le voir, il est similaire au diagramme d état d un objet connection JTAPI. IDLE : il s agit de l état initial pour toute nouvelle connexion, les connexions qui sont dans cet état ne font pas partie d un call mais les références sur l objet call et l objet address sont correctes. Les connexions ne restent pas longtemps dans cet état. DISCONNECTED : il indique que la connexion ne fait plus parti d un appel. INPROGRESS : il indique que l objet connection a été contacté par un appel ou que l objet connection contacte actuellement le destinataire. ALERTING : cet état indique que l adresse c est fait notifier un appel entrant. CONNECTED :cet état indique que les objet connection et address font partit d un appel, donc 2 (ou plus) personnes sont en communication. UNKNOWN : cet état indique qu il est impossible de déterminer l état actuel de la connexion. FAILED : il indique que la liaison a échoué pour une quelconque raison. Ex. l appelé est occupé. 24

Figure 19, état des objets connection UNKNOWN * except FAILED or DISCONNECTED FAILED IDLE IN- PROGRESS ALERTING CONNECTED DIS- CONNECTED JcpAddress Un objet address représente un terminal dans une communication. Cela peut être un numéro de téléphone, une adresse email, etc. Chaque objet address doit posséder un nom représenté par une chaîne de caractères. Durant une communication l objet address et mit en relation avec un appel par l intermédiaire de l objet connection. L état de celui-ci décrit la relation actuelle entre l objet call et l objet address. Il existe 2 types d objet address, local et distant. Une adresse est considérée comme local si elle appartient au domaine du provider, dans le cas contraire elle est considérée comme distante. 5.6.7 Java Call Control L API JCC a les 4 même objets que JCP, soit le Provider, Call, Connection et Address. Comme JCC hérite de JCP, chaque objet possède donc les mêmes méthodes de base, de plus des nouvelles méthodes peuvent leur être ajoutées. Indication : les objets obtiennent maintenant le préfix Jcc, cela donne donc JccCall, JccProvider JccProvider L interface JccProvider hérite de JcpProvider, une importante nouvelle possibilité fournie par JccProvider est qu il peut fonctionner comme un créateur d objet EventFilter. La fonction des objets EventFilter et d offrir un mécanisme de filtre pour les événements. ( voir: EventFilter ) Une autre méthode fournie par JccProvider et de pouvoir ajouter des listeners sur les Objets Call afin de détecter les changements d état. 25

JccCall JccCall hérite de JcpCall, le diagramme d états est identique pour les deux interfaces, mais JccCall possède en plus une nouvelle transition possible entre l état IDLE et INVALID ( voir figure n 20) JccCall possède aussi des nouvelles méthodes: createconnection () : cette méthode va créer un nouvel objet de type JccConection routecall() : cette méthode ne va pas juste créer un objet JccConection, elle a aussi pour conséquence l initiation de la signalisation dans le réseaux vers le point final d appel. Si cette méthode est invoquée avec succès, cela indique que l appel à été correctement routé jusqu au terminal. Elle peut être utilisée pour le First party, le Third party, la translation de numéro (ex. 0800.), la redirection, etc. release(): Cette méthode à pour but de terminer un appel et de libérer les ressources. Figure 20, états des objets JccCall IDLE ACTIVE INVALID Dans JCC comme dans JCP, une application qui veut initier un appel doit tout d abord créer un objet call, pour cela elle utilise la méthode createcall(), cette methode est fournie par l interface JccProvider. Remarque : la méthode JccProvider.createCall() retourne un objet de type JcpCall qui doit ensuite être converti en un objet de type JccCall. La prochaine étape consiste à créer une connexion, ceci se fait en invoquant la méthode createconnection () de l objet JccCall, l adresse de l objet JccTerminal à associer avec cet appel doit être donnée. JccConnection L interface JccConnection hérite de l interface JcpConnection, les méthodes importantes de JccConnection sont : routeconnection( ) : est utilisé pour router une connexion vers un terminal answer( ) : est utilisé pour répondre à un appel release( ) : est utilisé pour déconnecté un terminal continueprocessing( ) : cette méthode indique à la plate-forme de continuer le traitement des appels ( ex. après un événement ) getxxxadress( ) getmoredigits ( ) : indique à la plate-forme de collecter des informations supplémentaires sur le numéro composé ( lettre ou nombre) selectroute() :Cette méthode est utilisée pour la translation d adresse, exemple, lors de la composition d un numéro gratuit (0800.), celui-ci doit être convertir en un numéro routable (024 442..) 26

La machine d état de JccConnection n est pas identique à celle de JcpConnection, il faut voir qu il s agit d un raffinement par l addition de transition et la séparation d état en état multiple. Pour être plus précis, les changements se situent pour les états INPROGRESS et CONNECTED qui sont divisés en plusieurs états. IDLE : il s agit de l état initial pour toute nouvelle connexion, les connexions qui sont dans cet état ne font pas partie d un call mais les références sur l objet call et l objet address sont correct. Les connexions ne restent pas longtemps dans cet état. AUTHORIZE_CALL_ATTEMPT : cet état implique que l appelant et l appelé doivent être autorisés à émettre et recevoir cet appel. ADDRESS_COLLECT : dans cet état, les informations (numéro composé) en provenance de l appelant sont collectées et analysées selon le plan de numérotation afin de déterminer la fin de l information d adressage ADDRESS_ANALYSE : pour entrer dans cet état il faut que le numéro composé en provenance de l appelant soit complet. Ce numéro est analysé et/ou translaté selon le plan de numérotation afin de déterminer l adresse de routage ainsi que le type d appel. CALL_DELIVERY : du côté de l appelant, cet état implique la sélection de la route et indique au numéro appelé que l on désire établir une communication. Du côté de l appelé, cet état implique qu il doit tester que le terminal n est pas déjà occupé, il doit aussi informer celui-ci de l arrivée d un appel. ALERTING :cet état indique que le terminal ce fait actuellement notifier un appel entrant. CONNECTED : cet état indique que cette connexion et une adresse prennent part à un appel SUSPENDED : cela indique que cette connexion a été suspendue de l appel, elle garde ces références sur l appel et sur l adresse DISCONNECTED : il indique que la connexion ne fait plus parti d un appel. UNKNOWN : cet état indique qu il est impossible de déterminer l état actuel de la connexion. FAILED : il indique que la liaison a échoué pour une quelconque raison. Ex. l appelé est occupé. 27