FreeSWITCH y múltiples registros

En Freeswitch como en Asterisk, canal PJSIP, es posible registrar más de un dispositivo por extensión configurada. En este articulo explicaremos las distintas formas de hacerlo.

En la configuración predefinida, FreeSWITCH acepta solamente un registro por extensión; si configuramos un segundo dispositivos con las mismas credenciales, el registro será aceptado pero tomará el lugar del primer registro. Esto quiere decir que si registro el Softphone1 y luego el Softphone2, el Softphone2 tomara el lugar del SoftPhone1 y cuando el Softphone1 volverá a registrarse tomará el lugar del Softphone2 y así a seguir.

Si se quiere modificar este tipo de comportamiento para que el registro del segundo Softphone sea rechazado por defecto, el comando que tenemos que añadir al perfil SIP es:

<param name="max-registrations-per-extension" value="1"/>

Con este parámetro indicamos cuantos registros están permitidos por cada extensión. En este caso solamente uno. De hecho si ahora realizamos la misma prueba, cuando vamos a registrar el segundo Softphone, la respuesta que recibirá será:

Ahora si queremos aceptar múltiples registros para cada extensión, modificamos nuevamente el parámetro anterior y indicamos, por ejemplo, el valor 5. Además de eso tenemos que configurar en el perfil SIP otro parámetro:

<param name="multiple-registrations" value="true"/>

Indicando true como valor estamos diciendo a FS que acepte múltiples registros y el numero los indicamos en el parámetro max-registrations-per-extension. Otra cosa interesante es que el parámetro multiple-registrations además del valor true acepta también el valor contact. ¿Que diferencia hay entre uno y otro?

El primero, true, acepta múltiples registros aunque la cabecera Conctact: de los registros sea idéntica, el segundo, contact, acepta registros solamente si la cabecera Contact: no es idéntica. Un ejemplo: Si en un servidor Asterisk, archivo sip.conf, después de la parte general configuramos estas dos lineas:

register => 1000:password@IPpublicaFS

register => 1000:password@IPpublicaFS

FS aceptará solamente un registro ya que los dos tendrán la misma cabecera de Contact, es decir:

si modificamos la segunda linea para que quede:

register => 1000:password@IPpublica/1000

veremos los dos registros, ya que la cabecera Contact: del segundo cambiará a:

Me parece muy interesante. ¿Que Opinan?