Todas las llamadas realizadas a través de un teléfono SIP, ya sea un softphone o un aparato en el escritorio, consisten de dos canales:

  • Señalización de la llamada – SIP
  • Media (audio / video) – RTP

La señalización es transportada a través de paquetes SIP sobre protocolo UDP o TCP (normalmente UDP). Puede utilizarse para registrar un dispositivo en la central telefónica, iniciar o finalizar una llamada, enviar notificaciones de puesta en espera de la llamada, realizar transferencias, enviar señales DTMF, etc. Típicamente el servidor de la central telefónica espera recibir mensajes SIP en el puerto 5060, por lo que podría ser necesario configurar los cortafuegos (firewalls) que pudiera haber en la red para permitir el tráfico de esos paquetes de datos hacia el servidor sin ser filtrados.

Usualmente el teléfono SIP primero se registrará en la central telefónica enviándole un mensaje SIP al puerto 5060, indicándole dentro del mensaje de registración el número del puerto donde el teléfono espera recibir llamadas. Cuando la central telefónica necesite enviar una llamada a un teléfono SIP, comenzará la conversación enviando un mensaje SIP al puerto indicado por el teléfono SIP al registrarse.

La media, típicamente audio, es enviada en paquetes RTP sobre protocolo UDP. Es utilizada para enviar la media de la llamada, incluyendo audio, video o señales DTMF (como un tipo de media especial, o embebida en el audio).

Listado de mensajes SIP

Existen básicamente dos tipos de mensajes:

  1. Mensajes de requerimiento (‘Requests‘), enviados utilizando alguno de los métodos SIP listados abajo.
    • ACK – Es utilizado para responder a un mensaje de estado de SIP en el rango 200-699 mientras se encuentra dentro de un diálogo SIP INVITE.
    • BYE – Es utilizado para finalizar una sesión previamente establecida, como una llamada iniciada con un mensaje SIP INVITE.
    • CANCEL – Es utilizado para cancelar un requerimiento (como un INVITE o inicio de llamada que aún se encuentra en progreso pero que no ha sido atendida).
    • INFO – Es utilizado para proveer señalización adicional, no necesariamente relacionada a una llamada en progreso. Los mensajes SIP INFO son típicamente utilizados para enviar notificaciones de dígitos DTMF presionados (aunque las notificaciones a través de RFC 2833 son preferidas para esto), y también son una forma de establecer funcionalidad MWI (message waiting indicator) en los teléfonos SIP.
    • INVITE – Es utilizado para iniciar un diálogo de sesión – típicamente para establecer una llamada telefónica.
    • NOTIFY – Es utilizado por el servidor de la central telefónica para comunicar estadísticas, típicamente a los teléfonos SIP. La transferencia de una pata de una llamada desde un extremo a otro podría ser señalizado utilizando este método SIP, en el contexto de un diálogo SIP REFER. La información de MWI también puede ser entregada de esta forma. Normalmente el teléfono SIP previamente ha establecido un diálogo SIP utilizando un requerimiento SIP SUBSCRIBE, y los mensajes SIP NOTIFY son entregados en el contexto de ese diálogo. De cualquier forma note que algunos teléfonos SIP no establecen un diálogo de esta forma, y esperan recibir mensajes SIP NOTIFY “fuera de diálogo”. También note que algunos teléfonos SIP pueden intentar establecer un diálogo SIP con SIP SUBSCRIBE utilizando una metodología incorrecta (el ejemplo típico es el GrandStream GXP-2000), y estos dispositivos pueden lograr funcionar (aunque no en forma totalmente correcta) si son configurados para NO intentar enviar mensajes SIP SUBSCRIBE.
    • OPTIONS – Es utilizado por un cliente SIP para consultar a otro cliente SIP o proxy (como el servidor de 3CX Phone System) sobre sus capacidades y descubrir los métodos soportados, tipos de contenido, extensiones, codecs, y demás, antes de, por ejemplo, establecer una llamada utilizando el método SIP INVITE.
    • PRACK – No utilizado en 3CX Phone System.
    • REFER – Utilizado por un cliente SIP para suscribirse a notificaciones de cambio durante el flujo de una llamada, por ejemplo. Típicamente es visto cuando un teléfono solicita transferir una llamada.
    • REGISTER – Utilizado para registrar o des-registrar un cliente SIP en un SIP Registrar. Un teléfono no registrado no puede recibir requerimientos SIP INVITE, por lo que no puede recibir llamadas entrantes.
    • SUBSCRIBE – Utilizado por un teléfono SIP para establecer un diálogo SIP para recibir estadísticas. Un ejemplo típico es la información MWI para el número de la extensión configurada en el teléfono. De este modo el teléfono puede mostrar al usuario cuando tiene correo de voz pendiente.
    • UPDATE – No utilizado en 3CX Phone System.
  2. Mensajes de estado, emitidos con un indicador de estado numérico.
    • 100-199 – Utilizado para indicar un estado temporal, como “100 Trying” (intentando) o “180 Ringing” (teléfono sonando).
    • 200-299 – Utilizado para indicar un estado final exitoso, como “200 OK”, que puede ser utilizado para indicar que una llamada se ha establecido exitosamente, o que ha sido finalizada exitosamente.
    • 300-399 – Utilizado para indicar un estado final de falla, pero con información sobre la nueva ubicación del usuario, o sobre servicios alternativos que podrían contestar la llamada. Estas son típicamente respuestas generadas por los teléfonos SIP cuando las funcionalidades de “Redireccionar todas las llamadas” o “No molestar” están activadas en el teléfono.
    • 400-499 – Utilizadas para indicar un estado final de error, pero locale al SIP Proxy que generó este mensaje – indicando que es posible que algún otro SIP Proxy pueda estar en posición de atender exitosamente el requerimiento.
    • 500-599 – Utilizado para indicar que el servidor de la central telefónica ha encontrado un error interno. Ejemplos son “500 Server Internal Error” y “501 Not Implemented”.
    • 600-699 – Utilizado para indicar un estado final de error, y que este estado es global por naturaleza – indicando que el requerimiento no va a poder ser procesado por ningún otro SIP Proxy.