cat siptrace.cfg
#!define HEPLIFY_SERVER "sip:127.0.0.1:9060" /* HOMER */
#!define FLT_SIPTRACE 22 # range: 0-31loadmodule "siptrace.so"
modparam("siptrace", "duplicate_uri", HEPLIFY_SERVER)
modparam("siptrace", "hep_mode_on", 1)
modparam("siptrace", "trace_to_database", 0)
modparam("siptrace", "trace_flag", FLT_SIPTRACE)
modparam("siptrace", "trace_on", 1)route[SIPTRACE] {
# start duplicate the SIP message herexlog("SIPTRACE|$ci\n");
sip_trace_mode("d"); # "d" mean dialogsip_trace();
setflag(FLT_SIPTRACE);
return;
}
简单吧?哈哈!
在 kamailio.cfg 里面增加 import_file siptrace.cfg
另外需要在 request_route 路由块的开始之处增加一行 route(SIPTRACE);
上面的脚本把所有的 request 消息和 reply 消息都送到 Homer, 如果只关心 request 消息,那么删除这一行应该就可以:
sip_trace_mode("d");
如果只关心 INVITE 开头的对话,那么在路由开始可以加上下面的代码:
if (!is_method("INVITE")) {
return;
}
Kamailio 也可以把SIP消息记得自己的表里面,修改模块参数:
modparam("siptrace", "trace_to_database", 1)
表名就叫 sip_trace
参考链接:
https://github.com/sipcapture/homer/wiki/Examples%3A-Kamailio