I have been trying to get outbound calls to work, and my trunk provider required authentication for outbound calls.
My trunk is registered with UAC and I use Dispatcher to select the correct
trunk for the CLI making the call.
I just can’t seem to get it working, my trunk does not know how to replay to my
authenticated invite and Kamailio just retransmits until it times out.
Perhaps someone can point me in the right direction, I have looked everywhere
and tried so many different appraches.
The call flow should be Client Phone -> Kamailio -> Trunk and replies, Trunk ->
Kamailio -> Client Phone.
# Dispatch requests
route[DISPATCH] {
if ($var(dispatcher_set) == $null || $var(dispatcher_set) == "") {
xlog("L_INFO", "[$ci] DISPATCHER: No dispatcher set configured\n");
return;
}
# DISPATCHER_OUTBOUND_SET
# DISPATCHER_INBOUND_SET
# DISPATCHER_ASTERISK_SET
switch($var(dispatcher_set)) {
case DISPATCHER_OUTBOUND_SET:
if (!ds_select_dst(DISPATCHER_OUTBOUND_SET, "4")) {
xlog("L_ERR", "[$ci] DISPATCHER: No available outbound
dispatcher destinations\n");
sl_send_reply("503", "Service Unavailable");
exit;
}
xlog("L_INFO", "[$ci] DISPATCHER: Going to <$ru> via <$du> (attrs:
$xavp(_dsdst_=>attrs)) from set $var(dispatcher_set)\n");
$du = "sip:{{ kamailio_sip_host }}:{{ kamailio_sip_port }}";
$avp(auth_user) = $xavp(_dsdst_=>attrs=>auth_user);
$avp(auth_pass) = $xavp(_dsdst_=>attrs=>auth_pass);
$avp(auth_realm) = $xavp(_dsdst_=>attrs=>auth_realm);
if (is_method("INVITE")) {
t_on_failure("TRUNK_AUTH");
t_relay();
exit;
}
break;
case DISPATCHER_INBOUND_SET:
if (!ds_select_dst(DISPATCHER_INBOUND_SET, "4")) {
xlog("L_ERR", "[$ci] DISPATCHER: No available inbound
dispatcher destinations\n");
sl_send_reply("503", "Service Unavailable");
exit;
}
break;
case DISPATCHER_ASTERISK_SET:
if (!ds_select_dst(DISPATCHER_ASTERISK_SET, "4")) {
xlog("L_ERR", "[$ci] DISPATCHER: No available Asterisk
dispatcher destinations\n");
sl_send_reply("503", "Service Unavailable");
exit;
}
break;
default:
xlog("L_ERR", "[$ci] DISPATCHER: Invalid dispatcher set
$var(dispatcher_set)\n");
sl_send_reply("500", "Internal Server Error");
exit;
}
t_on_failure("RTF_DISPATCH");
route(RELAY);
exit;
}
# Failure route - outbound trunk auth challenge handling
failure_route[TRUNK_AUTH] {
if (t_is_canceled()) {
xlog("L_INFO", "[$ci] TRUNK_AUTH: Transaction canceled\n");
exit;
}
if (t_check_status("401|407")) {
xlog("L_INFO", "[$ci] TRUNK_AUTH: Received auth challenge for outbound
trunk\n");
if ($avp(auth_user) == $null || $avp(auth_pass) == $null ||
$avp(auth_realm) == $null) {
xlog("L_WARN", "[$ci] TRUNK_AUTH: Missing UAC auth credentials,
skipping uac_auth\n");
exit;
}
uac_auth();
t_relay();
exit;
}
}
Kind regards
Darren Carter
smime.p7s
Description: S/MIME cryptographic signature
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions -- [email protected] To unsubscribe send an email to [email protected] Important: keep the mailing list in the recipients, do not reply only to the sender!
