Développement d'applications dos à dos (back-to-back, B2B)

Vous pouvez utiliser l'interface javax.servlet.sip.B2buaHelper pour développer une application B2BUA (Back-To-Back User Agent).

Avant de commencer

Lisez la spécification JSR289, section 12, qui fournit des informations détaillées sur les opérations B2BUA. La spécification SIP Servlet 1.1 définit une classe auxiliaire, javax.servlet.sip.B2buaHelper, pour la création d'applications B2BUA. Pour plus d'informations, voir la documentation relatives aux méthodes B2buaHelper.

Pourquoi et quand exécuter cette tâche

B2BUA est une application SIP (Session Initiation Protocol) qui est située au milieu d'un appel SIP et transmet les demandes et réponses entre deux boîtes de dialogue SIP ou plus. Une application B2BUA typique gère les sessions SIP entre deux agents utilisateur. Cependant, l'application B2BUA peut également gérer des scénarios plus complexes où elle doit gérer les réponses provenant de différentes branches de processus parallèle de traitement en aval. Cette configuration se produit quand la demande est fractionnée en différentes branches et que le message est transmis depuis le client d'agent utilisateur au serveur d'agent utilisateur. La classe B2buaHelper contient toutes les méthodes nécessaires pour créer des applications B2BUA de ce type. Le comportement de la classe B2buaHelper et les règles utilisées pour créer des demandes sont définis dans la spécification JSR289, section 12.2. Vous pouvez utiliser les fonctions de la classe B2buaHelper pour lier deux étapes, celle de l'appel entrant et celle de l'appel sortant, de l'appel d'agent utilisateur dos à dos SIP.

Procédure

  1. Extrayez l'instance B2buaHelper en appelant la méthode SipServletRequest.getB2buaHelper().
  2. Une fois que vous avez extrait cette instance, vous pouvez créer une demande SIP en appelant B2buaHelper.createRequest().
    private void doInvite(SipServletRequest req) {
    	B2buaHelper b2buaHelper = req.getB2buaHelper();
    	SipServletRequest newRequest = b2buaHelper.createRequest(req, true, headerMap);
    }

    La demande newRequest créée est identique à la demande SipServletRequest req fournie en tant que demande d'origine dans le premier paramètre de cette méthode. Le paramètre Boolean indique si la demande d'origine req et la nouvelle demande newRequest sont liées. headerMap fournit une mappe des en-têtes non-système à remplacer dans la demande newRequest.

  3. Assurez-vous que les deux étapes sont liées. Si vous avez appelé la méthode createRequest avec l'attribut false, vous pouvez lier explicitement les sessions SIP par appel :
    B2buaHelper.linkSipSessions(session1, session2)
  4. Une fois que les sessions SIP et les demandes SIP sont liées, vous pouvez extraire la session liée par appel :
    SipSession linkedSession = B2buaHelper.getLinkedSession(req.getSession());
    Remarque : Dans le scénario de processus parallèle de traitement B2BUA, l'application crée plusieurs demandes SIP ; c'est pourquoi toutes les sessions SIP ne sont pas liées. Vous devez les lier explicitement.
  5. Après que vous avez reçu une réponse du serveur d'agent utilisateur (UAS), créez une réponse à son étape. Cherchez à déterminer si une session liée sur la réponse existe, et si tel est le cas, utilisez la demande liée pour créer une réponse au client d'agent utilisateur (UAC).
    SipServletRequest linked = b2bHelper.getLinkedSipServletRequest(resp.getRequest()); 
    linked.createResponse(resp.getStatus(),resp.getReasonPhrase()).send(); 

    S'il n'y a pas de session liée associée à la réponse, l'application doit appeler la demande B2buaHelper.createResponseToOriginalRequest et créer une session dérivée, qui est une copie de la session SipSession associée à la demande d'origine.

    Remarque : La spécification JSR289, section 12.5, fournit un moyen de créer plusieurs réponses à la demande d'origine. Si plusieurs sessions SipSession sont associées au message INVITE d'origine et qu'il est nécessaire d'envoyer plusieurs réponses au message INVITE, utilisez la méthode B2buaHelper.createResponseToOriginalRequest.
  6. Si vous utilisez la méthode createResponseToOriginalRequest, assurez-vous que les deux étapes sont liées. Votre application est responsable de la liaison de la nouvelle session dérivée à sa session paire pour pouvoir extraire la session liée pour l'envoi de réponses subséquentes.

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_sip_dev_b2b.html