LINUX.ORG.RU
решено ФорумAdmin

Доступность канала.

 , chanisavail


0

1
...
exten => s,n,ChanIsAvail(SIP/AV011&SIP/AV012&SIP/AV013&SIP/AV014&SIP/CTLKM01);
exten => s,n,Dial(${AVAILORIGCHAN}/${ARG1},60,rtT)
...

Исходящий звонок

 == Using SIP RTP CoS mark 5
    -- Executing [89000000000@operator:1] Macro("SIP/100-00000118", "dial-gsm_sip,89206135450") in new stack
    -- Executing [s@macro-dial-gsm_sip:1] MixMonitor("SIP/100-00000118", "OUT-20120612-000547-89000000000.1339445147.280.wav") in new stack
    -- Executing [s@macro-dial-gsm_sip:2] ChanIsAvail("SIP/100-00000118", "SIP/AV011&SIP/AV012&SIP/AV013&SIP/AV014&SIP/CTLKM01") in new stack
  == Using SIP RTP CoS mark 5
  == Begin MixMonitor Recording SIP/100-00000118
    -- Executing [s@macro-dial-gsm_sip:3] Dial("SIP/100-00000118", "SIP/AV011/89000000000,60,rtT") in new stack
  == Using SIP RTP CoS mark 5
    -- Called AV011/89000000000
    -- Got SIP response 486 "Busy Here" back from 192.168.201.35:5064
    -- SIP/AV011-0000011a is busy
  == Everyone is busy/congested at this time (1:1/0/0)
Астериск подумал что канал AV011 свободен, бросил туда звонок, а шлюз сказал «Busy Here». Правильно ли я понимаю, что кроме как сделать как-то вот так (см.ниже) вариантов больше нет?
...
exten => s,n,Dial(SIP/AV011/${ARG1},60,rtT)
exten => s,n,GotoIf($["${DIALSTATUS}" = ""]?allok:w)
exten => s,n(w),Dial(SIP/AV012/${ARG1},60,rtT)
exten => s,n,GotoIf($["${DIALSTATUS}" = ""]?allok:w1)
exten => s,n(w1),Dial(SIP/AV013/${ARG1},60,rtT)
exten => s,n,GotoIf($["${DIALSTATUS}" = ""]?allok:w2)
exten => s,n(w2),Dial(SIP/AV014/${ARG1},60,rtT)
exten => s,n,GotoIf($["${DIALSTATUS}" = ""]?allok:w3)
exten => s,n(w3),Dial(SIP/CTLKM01/${ARG1},60,rtT)
exten => s,n,GotoIf($["${DIALSTATUS}" = ""]?allok:w4)
...
Иначе Астериск будет все звонки в первый канал пихать. А так хоть дольше, но прозвонится.

★★★★★

Последнее исправление: petav (всего исправлений: 1)

Вот смешно будет, когда busy от мобилы (которую человек не захотел брать) вернется в dialstatus'е раз 5-6. :/

zgen ★★★★★
()

доступность канала вовсе не означает что там возьмут трубку
может я ошибаюсь - но по моему это решается через queue

ae1234 ★★
()
Ответ на: комментарий от zgen

Вот это дельное замечание. Спасибо!

petav ★★★★★
() автор топика
Ответ на: комментарий от ventilator

Я не обиделся. Я на ваших комментариях учусь.

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

А вы таки различаете кто ответил 486? Учитесь гугл читать. Внимание копипаста

21.4.24 486 Busy Here
   The callee's end system was contacted successfully, but the callee is
   currently not willing or able to take additional calls at this end
   system.  The response MAY indicate a better time to call in the
   Retry-After header field.  The user could also be available elsewhere,
   such as through a voice mail service.  Status 600 (Busy
   Everywhere) SHOULD be used if the client knows that no other end
   system will be able to accept this call.
Вы мануалы тоже похоже не читаете. Чуть что - сразу на форум срать.

ventilator ★★★
()
Ответ на: комментарий от ventilator

Да, только когда реплику кинул, подумал что различит наверное не получится.
Я решения готового не прошу, я прошу направление задать для поиска решения. Но его я уже понял.

petav ★★★★★
() автор топика
Ответ на: комментарий от ventilator

Упустил извиду этот момент с сигналом занято.

petav ★★★★★
() автор топика

Спасибо за комментарии, помогли решить задачу. Настроил шлюз возвращать 503 при занятости порта. Отслеживаю DIALSTATUS в диалплане.

petav ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.