FreeSWITCH: 錯誤的試用次數與originate_retries。

问题描述 投票:0回答:1

文件 对于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
1个回答
1
投票

在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++) {
...
© www.soinside.com 2019 - 2024. All rights reserved.