Transferencia SIP

Una de las cosas mas sencillas en este mundo actual es transferir una llamada. Ya que andamos probando el proxy SIP al que hacemos mención, verificaremos que es lo que pasa cuando realizamos este procedimiento comparándolo con el que hace Asterisk.

Tenemos tres usuarios SIP, 1000, 1001 y 1002. El dispositivo asociado a cada uno respectivamente son un SPA941, SPA2102 y el softphone Zoiper, el mas importante de estos tres es el teléfono IP que gracias a su display podemos verificar el comportamiento que estamos buscando.

Vamos a poner un sencillo ejemplo para ilustrarlo, el cual de manera general sera el siguiente.

1001 recibe una llamada de 1002.
1001 inicia transferencia atendida con 1000.
1000 contesta la llamada y aparece en el CALLERID 1001.
1000 acepta la llamada.
1001 cuelga.
1000 tiene la llamada y el CALLERID cambia de 1001 a 1002.
1002 cambia su CALLERID ahora a 1000.

Vamos a realizar una primera llamada, marcamos del usuario 1002 al 1001.

Establecemos la llamada, y en la lista de contactos de nuestro Softphone se nos muestra que estamos hablando con el usuario 1001.

Ahora 1001 pone en espera a 1002, y le marca a 1000 para transferirle la llamada, en este paso en el display del teléfono asociado al usuario 1000, aparece que esta recibiendo una llamada de 1001, acepta la llamada se establece la llamada y le indican que le van a transferir al usuario 1002. 1001 transfiere la llamada y termina su participación en la llamada.

Y es aquí donde vemos el comportamiento deseado, después de un instante en el display del teléfono se muestra que estamos hablando ahora con el usuario 1002, y en el softphone de igual manera cambia de que ahora hablamos con el usuario 1000.

Con Asterisk no pasa esto, los estados de los teléfonos en su CALLERID no cambian, el teléfono 1002 se queda con el primer numero que marco y el teléfono 1000 mantiene en su pantalla el numero de donde recibió la transferencia.

¿Y cuál es el motivo de esto?,debido a detalles del protocolo SIP que esta implementado en Asterisk esta característica por el momento no se encuentra disponible. Mas información acerca de esto en un buen debate en la lista de asterisk-es en el siguiente hilo: CALLER ID en transferencias atendidas.

Y como anexo, se muestra la traza SIP de la transferencia capturada con Wireshark.


| 192.168.1.139                         | 192.168.1.161 (proxy)                 | 192.168.1.138     | 192.168.1.137
|         Request: INVITE sip           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|         Status: 407 Proxy A           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|         Request: INVITE sip           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|         Status: 100 Giving            |                                       |                   |
|(5060)     (5061)   |                   |
|                                       |         Status: 100 Trying            |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|                                       |         Status: 180 Ringing           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Status: 180 Ringing           |                                       |                   |
|(5060)   <------------------  (5060)   |                                       |                   |
|                                       |         Status: 200 OK, wit           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Status: 200 OK, wit           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|                                       |         Request: ACK sip:10           |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|                                       |         Request: INVITE sip           |                   |
|                                       |(5060)     (5061)   |                   |
|         Request: INVITE sip           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|                                       |         Status: 200 OK, wit           |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|                                       |         Request: ACK sip:10           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Request: ACK sip:10           |                                       |                   |
|(5060)   <------------------  (5060)   |                                       |                   |
|                                       |         Request: INVITE sip           |                   |
|                                       |(5060)     (5061)   |                   |
|                                       |         Request: ACK sip:10           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|                                       |         Request: INVITE sip           |                   |
|                                       |(5060)     (5061)   |                   |
|                                       |         Request: INVITE sip           |                   |
|                                       |(5060)   -------------------------------------->  (5060)   |
|                                       |         Status: 100 Trying            |                   |
|                                       |(5060)   <--------------------------------------  (5060)   |
|                                       |         Status: 180 Ringing           |                   |
|                                       |(5060)     (5061)   |                   |
|                                       |         Status: 200 OK, wit           |                   |
|                                       |(5060)     (5061)   |                   |
|                                       |         Request: ACK sip:10           |                   |
|                                       |(5060)     (5060)   |
|                                       |         Request: REFER sip:           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Request: REFER sip:           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|                                       |         Status: 202 Accepte           |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|         Request: NOTIFY sip           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|         Request: INVITE sip           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|                                       |         Request: NOTIFY sip           |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|         Status: 407 Proxy A           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|         Request: INVITE sip           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|         Status: 100 Giving            |                                       |                   |
|(5060)     (5060)   |
|                                       |         Status: 200 OK                |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Status: 200 OK                |                                       |                   |
|(5060)   <------------------  (5060)   |                                       |                   |
|                                       |         Status: 100 Trying            |                   |
|                                       |(5060)   <--------------------------------------  (5060)   |
|                                       |         Request: BYE sip:10           |                   |
|                                       |(5060)     (5061)   |                   |
|                                       |         Status: 200 OK                |                   |
|                                       |(5060)     (5060)   |
|                                       |         Status: 200 OK, wit           |                   |
|                                       |(5060)   <--------------------------------------  (5060)   |
|         Status: 200 OK, wit           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|         Request: ACK sip:10           |                                       |                   |
|(5060)   ------------------>  (5060)   |                                       |                   |
|                                       |         Request: NOTIFY sip           |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|                                       |         Request: ACK sip:10           |                   |
|                                       |(5060)   -------------------------------------->  (5060)   |
|                                       |         Status: 200 OK                |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Status: 200 OK                |                                       |                   |
|(5060)   <------------------  (5060)   |                                       |                   |
|                                       |         Request: BYE sip:10           |                   |
|                                       |(5060)   <------------------  (5061)   |                   |
|         Request: BYE sip:10           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|                                       |         Status: 200 OK                |                   |
|                                       |(5060)   ------------------>  (5061)   |                   |
|                                       |         Request: BYE sip:10           |                   |
|                                       |(5060)   <--------------------------------------  (5060)   |
|         Request: BYE sip:10           |                                       |                   |
|(5060)     (5060)   |                                       |                   |
|                                       |         Status: 200 OK                |                   |
|                                       |(5060)   -------------------------------------->  (5060)   |

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: