Страница 1 из 2

Проблема с окончанием вызова

Добавлено: 24 июл 2015, 12:57
LKRM
Добрый день!
Стоит * 11.6, юзеры сидят на хардфонах Cisco и Yealink.
Последние два дня происходит какая-то чертовщина - юзер набирает номер, звонит, разговаривает, кладёт трубку.
После этого в консоль постоянно валятся сообщения типа

Код: Выделить всё

chan_sip.c:4408 __sip_autodestruct: Autodestruct on dialog '2c06149c25945d1e724b7bfa6880162b@192.168.0.252:5060' with owner SIP/212-000009d5 in place (Method: BYE). Rescheduling destruction for 10000 ms
Соответственно, канал остаётся занятым какое-то время (от нескольких секунд до нескольких минут), у пиров стоит call-limit=1, и при этом новые звонки не идут (что естесственно, раз канал занят).
на команду hangup request реагирует далеко не с первого раза.
Снимал дамп - в нём видно, что телефон и * в конце разговора обмениваются сообщениями BYE и 200 OK соответственно.

Если нужны листинги каких-либо файлов, выложу дополнительно.
Заранее благодарен.

Re: Проблема с окончанием вызова

Добавлено: 24 июл 2015, 14:21
LKRM
Проблема решена.
Пробовал отключать всё, что я добавлял в последнее время (до этого всё работало хорошо).

Есть у меня в extensions.conf такие строки:

Код: Выделить всё

exten => *75,1,Answer
        same => n,PauseQueueMember(,SIP/${CALLERID(num)});
        same => n,Hangup()
exten => *76,1,Answer
        same => n,UnpauseQueueMember(,SIP/${CALLERID(num)});
        same => n,Hangup()
Так вот, после первого вызова данного экстеншна любым юзером начиналась вышеуказанная проблема. Отключил, всё стало ок.
Где логика, господа?

Re: Проблема с окончанием вызова

Добавлено: 24 июл 2015, 14:52
ded
1. Попробуйте без Answer, он не нужен.
2. Вместо того, чтобы везде приклеивать шаг
same => n,Hangup()
укажите в этом контексте
exten => h,1,Hangup()

Re: Проблема с окончанием вызова

Добавлено: 24 июл 2015, 14:57
LKRM
Поторопился я с выводами, всё-таки не прекратилась эта свистопляска.
Попробовал отключить FOP2, посмотрим...

Re: Проблема с окончанием вызова

Добавлено: 24 июл 2015, 15:02
LKRM
ded писал(а):1. Попробуйте без Answer, он не нужен.
2. Вместо того, чтобы везде приклеивать шаг
same => n,Hangup()
укажите в этом контексте
exten => h,1,Hangup()
Происходит это и в контекстах без Hangup()
например местный звонок

Код: Выделить всё

[local]
exten => _NXXXXXX/_2[0-1][0-9],1,Macro(local,2255055,${EXTEN})
[macro-local]
exten => s,1,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID}.wav)
   same => n,MixMonitor(${MONITOR_FILENAME},ba)
   same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
   same => n,Dial(SIP/${ARG2}@${ARG1},,t)

И в этом контексте всё равно зависают звонки

Re: Проблема с окончанием вызова

Добавлено: 25 июл 2015, 00:27
kasper
Обычно подобные проблемы решают молитвами и поиском другой версии (либо в которой эта ошибка уже решена, ли в которой её ещё не создали =) )
Наверняка о5 разработчики где то забыли уменьшить счётчик ссылок на канал.

Re: Проблема с окончанием вызова

Добавлено: 25 июл 2015, 01:14
ded
Используйте вызовы вида Dial(tech/peer/exten
так как вызов по URI вида что-то@где-то как у вас
Dial(SIP/${ARG2}@${ARG1}
давно уже нелегитимный.

И вообще - чтобы писать рукописные конфиги - надо сдать на 6-й дан, получить жёлтый пояс. Чего пока не наблюдается.
Это Вы писали диалплан?

Например, ещё рекомендовано - писать в какой-то сторонний файл
exten => same,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID}.wav)
exten => same,MixMonitor(${FILE})
а потом переименовывать
exten => same,System(mv (${FILE} ${MONITOR_FILENAME})

Re: Проблема с окончанием вызова

Добавлено: 25 июл 2015, 13:00
zzuz
exten => h,1,System(mv (${FILE} ${MONITOR_FILENAME})
Логичней.

Re: Проблема с окончанием вызова

Добавлено: 27 июл 2015, 08:15
LKRM
ded писал(а):Используйте вызовы вида Dial(tech/peer/exten
так как вызов по URI вида что-то@где-то как у вас
Dial(SIP/${ARG2}@${ARG1}
давно уже нелегитимный.

И вообще - чтобы писать рукописные конфиги - надо сдать на 6-й дан, получить жёлтый пояс. Чего пока не наблюдается.
Это Вы писали диалплан?

Например, ещё рекомендовано - писать в какой-то сторонний файл
exten => same,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y%m%d)}/${UNIQUEID}.wav)
exten => same,MixMonitor(${FILE})
а потом переименовывать
exten => same,System(mv (${FILE} ${MONITOR_FILENAME})
Нет, я пришёл сюда не так давно, эта часть досталась в "наследство" от предыдущих людей.
А нелегитимность и рекомендации Digium описывает где-то?

Re: Проблема с окончанием вызова

Добавлено: 27 июл 2015, 09:37
ded
LKRM писал(а):Нет, я пришёл сюда не так давно, эта часть досталась в "наследство" от предыдущих людей.
Понятно.
Данный форум менее всего предназначен для техучёбы по скриптам диалплана и администрированию.
Вся необходимая литература и примеры есть в базе знаний asterisk.ru