FreeSWITCH:originate_retries 的尝试次数错误

FreeSWITCH: Wrong number of tries with originate_retries

The documentation 对于 originate_retries 说

Number of retries before giving up on originating a call (default is 0).

因此我希望:

但在我的测试中我得到:

我的原始命令是:

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。

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。

最后,它会执行 originate 循环 retries 次。

for (try = 0; try < retries; try++) {
...