Hola a todos,
Estoy tratando de configurar Kamailio 3.0.0 para que redirija las llamadas
a un buzón de voz basado en SEMS cuando el usuario llamado está ocupado.
Siguiendo las instrucciones de varios ejemplos encontrados en internet, y
del propio script ejemplo de kamailio.cfg, estoy usando las funciones
revert_uri(), rewritehostport() (o reescribiéndo el R-URI manualmente) y
append_branch(), dentro de la failure_route. Aparentemente modifica
correctamente el R-URI y crea la segunda "pata" de la llamada. Sin embargo,
a pesar de que la dirección del R-Uri aparece bien cambiada como decía en
la Request Line, el paquete IP se envía a la dirección IP del destinatario
original:
|Time | 192.168.3.20
| 192.168.0.167 |
| | | 192.168.0.197 |
|5,069 | INVITE SDP ( telephone-event)
| |SIP From: sip:4095@192.168.0.197
To:sip:4440@192.168.0.197
| |(5060) ------------------> (5060) | |
|5,071 | 407 Proxy Authentication Required
| |SIP Status
| |(5060) <------------------ (5060) | |
|5,074 | ACK | | |SIP
Request
| |(5060) ------------------> (5060) | |
|5,076 | INVITE SDP ( telephone-event)
| |SIP From: sip:4095@192.168.0.197
To:sip:4440@192.168.0.197
| |(5060) ------------------> (5060) | |
|5,084 | 100 trying -- your call is important to us
| |SIP Status
| |(5060) <------------------ (5060) | |
|5,085 | | INVITE SDP (
telephone-event) |SIP Request
| | |(5060) ------------------> (5060) |
|5,088 | | 100 Trying| |SIP
Status
| | |(5060) <------------------ (5060) |
|5,088 | | 486 Busy Here |SIP
Status
| | |(5060) <------------------ (5060) |
|5,091 | | ACK | |SIP
Request
| | |(5060) ------------------> (5060) |
|5,101 | | INVITE SDP (
telephone-event) |SIP Request
| | |(5060) ------------------> (5060) |
|5,102 | | 404 Not Found |SIP
Status
| | |(5060) <------------------ (5060) |
|5,102 | | ACK | |SIP
Request
| | |(5060) ------------------> (5060) |
|5,103 | 404 Not Found | |SIP
Status
| |(5060) <------------------ (5060) | |
|5,106 | ACK | | |SIP
Request
| |(5060) ------------------> (5060) | |
Esta es la captura del Invite de la redirección, en el timestamp 5,101
No. Time Source Destination Protocol
Info
1235 5.100698 192.168.0.197 192.168.0.167 SIP/SDP
Request: INVITE sip:voicemail4440@192.168.0.197:5080, with session
description
Frame 1235 (1151 bytes on wire, 1151 bytes captured)
Ethernet II, Src: CadmusCo_96:31:84 (08:00:27:96:31:84), Dst:
Micro-St_6d:77:54 (00:21:85:6d:77:54)
Internet Protocol, Src: 192.168.0.197 (192.168.0.197), Dst: 192.168.0.167
(192.168.0.167)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
Request-Line: INVITE sip:voicemail4440@192.168.0.197:5080 SIP/2.0
Method: INVITE
Request-URI: sip:voicemail4440@192.168.0.197:5080
[Resent Packet: True]
[Suspected resend of frame: 1233]
Message Header
Record-Route: <sip:192.168.0.197;lr=on;nat=
yes>
Via: SIP/2.0/UDP 192.168.0.197;branch=z9hG4bKafce.403718a6.1
Via: SIP/2.0/UDP
192.168.57.20;received=192.168.3.20;rport=5060;branch=z9hG4bK0a00030f0000003151ed60b85ec2c3de000000c8
Content-Length: 386
Contact: <sip:4095@192.168.3.20:5060>
Call-ID: 8EAF9EC2-1DD2-11B2-B110-C84E476664B0(a)10.0.3.15
Content-Type: application/sdp
CSeq: 2 INVITE
From: "4095"<sip:4095@192.168.0.197>;tag=121754238352072516
Max-Forwards: 69
To: <sip:4440@192.168.0.197>
User-Agent: SJphone/1.60.299a/L (SJ Labs)
P-App-Name: voicemail
P-App-Param: mod=box;usr=
voicemail4440;dom=sipproxy.a.com
;uid=voicemail4440;did=sipproxy.a.com;
Message Body
La configuración que he usado es la siguiente:
# Sample failure route
failure_route[FAIL_ONE] {
#ifdef WITH_NAT
if (is_method("INVITE")
&& (isbflagset("6") || isflagset(5))) {
unforce_rtp_proxy();
}
#endif
if (t_is_canceled()) {
exit;
}
# uncomment the following lines if you want to block client
# redirect based on 3xx replies.
##if (t_check_status("3[0-9][0-9]")
) {
##t_reply("404","Not found");
## exit;
##}
# uncomment the following lines if you want to redirect the failed
# calls to a different new destination
if (t_check_status("486|408")) {
revert_uri();
prefix("voicemail");
remove_hf("P-App-Name");
append_hf("P-App-Name: voicemail\r\n");
append_hf("P-App-Param: mod=box;usr= $rU;dom=sipproxy.a.com
;uid=$rU;did=sipproxy.a.com;\r\n");
$ru = "sip:" + $rU + "@" + "192.168.0.197:5080";
#rewritehostport("192.168.0.197:5080");
#append_branch("sip:4888@192.168.0.102");
append_branch();
# do not set the missed call flag again
t_relay();
}
}
¿Alguien ha tenido un problema similar? Cualquier ayuda será bienvenida.
Saludos.
LAA.