文件 对于originate_retries说
在放弃发起呼叫前的重试次数(默认为0)。
正因为如此,我希望
originate_retries=0
= 1呼叫 originate_retries=1
= 2次通话(1次尝试和1次重试)originate_retries=2
= 3次通话(1次尝试,2次重试)originate_retries=3
= 4次通话(1次尝试,3次重试)但在我的测试中,我得到:
originate_retries=0
= 1调用 originate_retries=1
= 1个电话originate_retries=2
= 2次通话originate_retries=3
= 3次通话我的原始命令是:
originate{originate_timeout=5,originate_retries=<X>,originate_retry_sleep_ms=5000}user/662 &park()
而我的FreeSWITCH版本是:
FreeSWITCH Version 1.10.2-release-14-f7bdd3845a~64bit (-release-14-f7bdd3845a 64bit)
我是不是做错了什么, 我是不是理解错了文档, 或者是freeswitch的问题是freeswitch的文档?
在Freeswitch的源文件中 switch_ivr_originate.c。 你可以看到它的实现。
变量 retries
初始化值为1.当你发起调用时,它会检查该值是否大于0且小于101。
当你发起调用时,它将检查值是否大于0且小于101。
if ((var_val = switch_event_get_header(var_event, "originate_retries")) &&
switch_true(var_val)) {
int32_t tmp;
tmp = atoi(var_val);
/* allow large number of retries if timeout is set */
if (tmp > 0 && (retry_timelimit_sec > 0 || tmp < 101)) {
retries = tmp;
} else {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING,
"Invalid originate_retries setting of %d ignored, value must be
between 1 and 100\n", tmp);
}
}
所以如果你设置 originate_retries=0
它实际上会被设置为1。
最后,它将执行 发起 襻 retries
次。
for (try = 0; try < retries; try++) {
...