Desarrollo de aplicaciones back-to-back (B2B)

Puede utilizar la interfaz javax.servlet.sip.B2buaHelper para desarrollar una aplicación de B2BUA (Back-To-Back User Agent).

Antes de empezar

Consulte la especificación JSR289, sección 12, que proporciona información detallada sobre las operaciones B2BUA. La especificación de servlet SIP 1.1 define una clase auxiliar, javax.servlet.sip.B2buaHelper, para crear aplicaciones B2BUA. Si desea más información, consulte la documentación sobre Métodos B2buaHelper.

Acerca de esta tarea

B2BUA es una aplicación SIP (Session Initiation Protocol) que se encuentra en medio de una llamada SIP y envía solicitudes y respuestas entre dos o más diálogos SIP. Una aplicación B2BUA típica gestiona sesiones SIP entre dos agentes de usuario. Sin embargo, la aplicación B2BUA también puede manejar escenarios más complejos donde debe gestionar respuestas de distintas ramas de bifurcación en sentido descendente. La bifurcación en sentido descendente se produce cuando la solicitud se divide en distintas ramas y el mensaje se envía desde el cliente de agente de usuario al servidor de agente de usuario. La clase B2buaHelper contiene todos los métodos necesarios para crear dichas aplicaciones B2BUA. El comportamiento de la clase B2buaHelper y las reglas que se utilizan para crear solicitudes nuevas están definidas en la especificación JSR289, sección 12.2. Puede utilizar las funciones de la clase B2buaHelper para enlazar dos tramos, el tramo de la llamada entrante y el tramo de la llamada saliente, de la llamada del agente de usuario back-to-back SIP.

Procedimiento

  1. Recupere la instancia B2buaHelper llamando al método SipServletRequest.getB2buaHelper().
  2. Tras recuperar esta instancia, puede crear una nueva solicitud SIP llamando a B2buaHelper.createRequest().
    private void doInvite(SipServletRequest req) {
    	B2buaHelper b2buaHelper = req.getB2buaHelper();
    	SipServletRequest newRequest = b2buaHelper.createRequest(req, true, headerMap);
    }

    El newRequest que se crea es idéntico al SipServletRequest req que se proporciona como solicitud original en el primer parámetro de este método. El parámetro Boolean indica si la solicitud original req y newRequest están enlazados. headerMap proporciona una correlación de cabeceras que no son del sistema para alterar temporalmente en newRequest.

  3. Asegúrese de que los dos tramos están enlazados. Si ha llamado al método createRequest con el atributo false, puede enlazar las sesiones SIP explícitamente llamando a:
    B2buaHelper.linkSipSessions(session1, session2)
  4. Una vez que se hayan enlazado las sesiones SIP y las solicitudes SIP, puede recuperar la sesión enlazada llamando a:
    SipSession linkedSession =
    B2buaHelper.getLinkedSession(req.getSession());
    Nota: En el escenario de bifurcación de B2BUA, la aplicación crea más de una solicitud SIP, así que no están enlazadas todas las sesiones SIP. Debe enlazarlas explícitamente.
  5. Tras recibir una respuesta del servidor de agente de usuario (UAS), cree una respuesta a su tramo. Compruebe para determinar si existe una sesión enlazada en la respuesta y, en dicho caso, utilice la solicitud enlazada para crear una respuesta al cliente de agente de usuario (UAC).
    SipServletRequest linked =
    b2bHelper.getLinkedSipServletRequest(resp.getRequest()); 
    linked.createResponse(resp.getStatus(),resp.getReasonPhrase()).send(); 

    Si no hay ninguna sesión enlazada asociada a la respuesta, la aplicación tendrá que llamar a B2buaHelper.createResponseToOriginalRequest y crear una nueva sesión derivada, que es una copia de la SipSession que está asociada a la solicitud original.

    Nota: La especificación JSR289, sección 12.5, proporciona una forma de crear más de una respuesta correcta a la solicitud original. Si hay más de una SipSession asociada al mensaje INVITE original y se debe enviar más de una respuesta correcta al mensaje INVITE, utilice el método B2buaHelper.createResponseToOriginalRequest.
  6. Si utiliza el método createResponseToOriginalRequest, asegúrese de que dos tramos están enlazados. La aplicación es responsable de enlazar la nueva sesión derivada a su par de sesión, de forma que pueda recuperar la sesión enlazada para enviar respuestas posteriores en la misma.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_sip_dev_b2b.html