kamailio的TM模块解读-1

request_route {
  seturi("sip:a@example.com");
  append_branch("sip:b@example.com", "0.5");
  append_branch("sip:c@example.com", "0.5");
  append_branch("sip:d@example.com", "1.0");

  t_relay();
  break;
}

----上面代码的意思是:收到sip消息时,同时发送到a,b,c,d所代表的4个目标,并行发送。
----append_branch第2个参数,数字代表的是优先级。范围0---1的小数,值越大,优先级越高,所以1是最高优先级。

modparam("tm", "contacts_avp", "tm_contacts");
modparam("tm", "contact_flows_avp", "tm_contact_flows");

request_route {
  seturi("sip:a@example.com");
  append_branch("sip:b@example.com", "0.5");
  append_branch("sip:c@example.com", "0.5");
  append_branch("sip:d@example.com", "1.0");

  t_load_contacts();  ----从目标集中获取所有分支,根据它们的q值对它们进行排序,并将它们存储在 modparam 中配置的 AVP(tm_contacts) 中.

  t_next_contacts();  ----获取下一个目标,根据优先级,就是d了。
  t_on_failure("serial");
  t_relay();  ----把电话发送到d目标。
  break;
}

failure_route["serial"]
{  //可是这里不是只有失败了才会进来吗?如果D成功了,根本没有b,c,a什么事了啊
  if (!t_next_contacts()) {
     //如果没有下一个路由了,直接退出
    exit;
  }

  t_on_failure("serial");
  t_relay();  //继续路由
}

----上面代码的意思:首先发送到目标d,然后并行发送到目标b和c(因为优先级都是0.5),最后再发到a。这样就是并行和串行组合了。不会一呼啦瞬间发送出去了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值