我们可以从 DialPlan 中 Ping 分机吗?
Can we Ping extension from DialPlan?
要求:
从拨号方案发送 SIP Qualify 到分机。
为什么?
如果扩展名是 NOT_IN_USE 那么将调用一组不同的函数,如果扩展名是 UNREACHABLE 则不同。
但是如果我的设备突然断开连接,asterisk 需要时间来更改状态,时间取决于 qualifyfreq 值,& 在这段时间之间,如果其他设备进行调用,它会转到错误的函数集。因此,我想在拨号方案中的所有内容之上调用 Peer_poke,以便更新分机的正确状态,然后转到正确的函数调用集。
请记住,我无法将 qualifyfreq 值降低到 60 秒以下。
尝试尽可能多地阅读拨号方案中的所有可用功能,但没有达到我的目的,我可以检查分机的状态,但状态不是当前状态,它取决于 Asterisk 服务器和我发送的最后一次 ping需要 Asterisk 来 ping 设备并给我当前状态。
是的,你可以使用 sip message 命令来做到这一点(但对方应该忽略消息或不支持它)。
您还可以在 sip.conf 中设置 qualify,qualifyfreq 然后检查 SIPPEER 功能。
当然你也可以编写特殊的函数来执行 ping,但是使用那个函数你会遇到同样的问题(即如果没有连接,响应的等待时间不可预测)并且你为此重写了很多源代码。
目前 chan_sip 没有办法在没有太多编码的情况下做到这一点,所以这个功能没有实现。
作为其他选项,您可以使用外部应用程序 ping 设备,使用 libpcap 捕获响应并在 udp 数据包中发送星号端口(udp 不检查源端口)。无论如何,这将需要特殊的编码和一些技能。
要求: 从拨号方案发送 SIP Qualify 到分机。
为什么? 如果扩展名是 NOT_IN_USE 那么将调用一组不同的函数,如果扩展名是 UNREACHABLE 则不同。
但是如果我的设备突然断开连接,asterisk 需要时间来更改状态,时间取决于 qualifyfreq 值,& 在这段时间之间,如果其他设备进行调用,它会转到错误的函数集。因此,我想在拨号方案中的所有内容之上调用 Peer_poke,以便更新分机的正确状态,然后转到正确的函数调用集。
请记住,我无法将 qualifyfreq 值降低到 60 秒以下。
尝试尽可能多地阅读拨号方案中的所有可用功能,但没有达到我的目的,我可以检查分机的状态,但状态不是当前状态,它取决于 Asterisk 服务器和我发送的最后一次 ping需要 Asterisk 来 ping 设备并给我当前状态。
是的,你可以使用 sip message 命令来做到这一点(但对方应该忽略消息或不支持它)。
您还可以在 sip.conf 中设置 qualify,qualifyfreq 然后检查 SIPPEER 功能。
当然你也可以编写特殊的函数来执行 ping,但是使用那个函数你会遇到同样的问题(即如果没有连接,响应的等待时间不可预测)并且你为此重写了很多源代码。
目前 chan_sip 没有办法在没有太多编码的情况下做到这一点,所以这个功能没有实现。
作为其他选项,您可以使用外部应用程序 ping 设备,使用 libpcap 捕获响应并在 udp 数据包中发送星号端口(udp 不检查源端口)。无论如何,这将需要特殊的编码和一些技能。