Здравствуйте уважаемые гуру. Есть внешний скрипт который инициирует исходящий звонок. Вопрос как в диалплане указать количество попыток прохождения данного условия. Сейчас если длительность звонка из таблицы cdr duration = 10 тогда выполняется 3 команда, а если нет то возвращается к первому, как сделать так чтобы этих похождений по первой команде тобишь по (exten => _X.,1,Dial(SIP/SVD/${EXTEN}) )было определенное количество раз.
exten => _X.,1,Dial(SIP/SVD/${EXTEN})
exten => _X.,2,GotoIf($["${CDR(duration)}" = "10"]?3:1)
exten => _X.,3,NoOp(${EXTEN} ${DIALSTATUS} ${CDR(duration)} ${ANSWEREDTIME})
после двух попыток прохождения условия если не равно 10 секунд дальше не идет и значению duration присваивается автоматически значение 30, после этого естественно условие верно и попытки дозвонится до абонента прекращаются. Кусочек лога.
-- Executing [**@TestUNISTIM:1] Dial("Local/**@TestUNISTIM-a67a;2", "SIP/SVD/**") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SVD/**
-- SIP/SVD-00000000 is ringing
-- SIP/SVD-00000000 is making progress passing it to Local/**@TestUNISTIM-a67a;2
-- Got SIP response 503 "Service Unavailable" back from 178.16.158.38:5060
-- SIP/SVD-00000000 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Executing [8**@TestUNISTIM:2] GotoIf("Local/**@TestUNISTIM-a67a;2", "0?3:1") in new stack
-- Goto (TestUNISTIM,**,1)
-- Executing [8**@TestUNISTIM:1] Dial("Local/**@TestUNISTIM-a67a;2", "SIP/SVD/**") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SVD/89047665033
-- SIP/SVD-00000001 is ringing
-- SIP/SVD-00000001 is making progress passing it to Local/**@TestUNISTIM-a67a;2
-- Got SIP response 503 "Service Unavailable" back from 178.16.158.38:5060
-- SIP/SVD-00000001 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Executing [**@TestUNISTIM:2] GotoIf("Local/**@TestUNISTIM-a67a;2", "0?3:1") in new stack
-- Goto (TestUNISTIM,**,1)
-- Executing [**@TestUNISTIM:1] Dial("Local/**@TestUNISTIM-a67a;2", "SIP/SVD/**") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SVD/**
== Spawn extension (TestUNISTIM, **, 1) exited non-zero on 'Local/**@TestUNISTIM-a67a;2'
если надо считать количество диалов то введите счетчик для него, если время звонка то считайте время не через CDR(duration)...
exten => s,1,Set(TH=${MATH(40+1)}) exten => s,n(loop),Set(START_TIME=${EPOCH}) exten => s,n,Dial(.....) exten => s,n,Set(STOP_TIME=${EPOCH}) exten => s,n,Set(DELTA_TIME=${MATH(${STOP_TIME}-${START_TIME})}) exten => s,n,GotoIf($[${DELTA_TIME} < ${TH}] ?loop)
Задан: Jan 31 '13
Просмотрен: 1,957 раз
Обновлен: Jan 31 '13
Answer не влияет на billsec в CDR
Elastix 2.3, FreePBX 2.10, cdr по DID - как подружить ?
cdr reports перенос данных о звонках
Как сделать выброку CDR через Realtime
Настройка качества исходящего сигнала при звонке через e1550
asterisk 14 gotoif всегда возвращает false
Asterisk MySQL CDR - Not currently connected to a MySQL server.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.