Sip Kamailio-调度器是否通过http确定可用性?

Sip Kamailio-调度器是否通过http确定可用性?,sip,kamailio,Sip,Kamailio,我们目前正在使用kamailio中的dispatcher模块通过调度列表获取网关的可用性 它使用基于默认情况下是否可以通过SIP与网关通信的健康检查。但是,我想知道我们是否可以通过http健康检查来更好地进行检查 这样做的原因是,当另一端的网关处于礼貌关闭状态时,调度员仍会向其发送呼叫,即使我们希望该框关闭。这导致网关始终保持不动 或者,还有一种更好的处理方法,将sip数据包中的消息发送回kamailio 我已经阅读了文档,但似乎找不到与我要查找的内容类似的内容。当SIP目的地下降/上升时,可以

我们目前正在使用kamailio中的dispatcher模块通过调度列表获取网关的可用性

它使用基于默认情况下是否可以通过SIP与网关通信的健康检查。但是,我想知道我们是否可以通过http健康检查来更好地进行检查

这样做的原因是,当另一端的网关处于礼貌关闭状态时,调度员仍会向其发送呼叫,即使我们希望该框关闭。这导致网关始终保持不动

或者,还有一种更好的处理方法,将sip数据包中的消息发送回kamailio

我已经阅读了文档,但似乎找不到与我要查找的内容类似的内容。

当SIP目的地下降/上升时,可以调用Dispatcher模块。HTTP没有事件路由,因为调度程序不会在自己的线程中不断查询它

或者,还有一种更好的处理方法,将sip数据包中的消息发送回kamailio

但是,您可以使用函数设置dispatcher状态。通过这种方式,您可以在任何SIP消息中添加一个自定义头,该消息来自正在关闭的方框,以告知Kamailio的调度程序将来不要将其用作目的地

如果我们添加了一个名为“X-SetState”的虚拟头,其值为“Shutdown”,并在SIP消息中将其从正在关闭的框发送到Kamailio,我们可以通过如下方式获取它:

is_present_hf("X-SetState"){     //If custom header is present
    xlog("Received state change request ($ru) with value $hdr(X-SetState)") 
    if($hdr(X-SetState) == "Shutdown"){ //If value of header is Shutdown
            ds_mark_dst("dp");       //Mark destatination as disabled & probing
    }
}
显然,您需要添加自己的代码来选择正确的调度程序以标记为inactive,并确保仅当X-SetState头来自您想要标记为down的内部框时,才对其进行解析,但您已经明白了这一点

但是,我想知道我们是否可以通过http健康检查来更好地进行检查

Dispatcher目前不支持监视HTTP状态,但是添加它并不难实现,如果您精通C,您可以添加支持或添加功能请求


或者,您可以编写一个脚本来监视每个设备的HTTP状态,如果没有收到响应,则使用Kamcmd/Kamctl将dispatcher组设置为down

谢谢尼克,我应该能实现你的建议。虽然我有5年的电信经验,但我对Kamailio还是相当陌生。您是否推荐任何课程/网站开始学习,因为您似乎对该主题非常精通?@aturner我在学习Kamailio时发现,很难对该平台有一个全面的了解,有大量关于特定功能的文档和关于如何使用这些功能的精确信息,但并不是关于如何整体使用Kamailio的概述。我在我的博客上写了一个Kamailio 101系列教程,尝试与大家分享一些基本知识:Kamailio项目中的每个人都非常友好,乐于提供帮助,所以如果遇到困难,请随时联系。