Страница 1 из 2
sip_xmit of ... Invalid argument
Добавлено: 01 май 2012, 22:28
SuMiSc
Такое вот сообщение:
Код: Выделить всё
WARNING[7050]: chan_sip.c:3351 __sip_xmit: sip_xmit of 0xb740ab00 (len 770) to 0.0.9.197:5060 returned -1: Invalid argument
всегда было. Возникает при звонке на несуществующий номер, но по маске подходящий в экстеншн, где происходит Dial.
Например:
Если набрать 101, а такой пиры нет, то в консоли появляются множественные Invalid argument, а у вызывающего играет музыка до окончания таймаута.
Собственно вопрос.
Как обработать это событие, чтобы сказать пользователю о несуществующем номере?
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 09:14
jugatsu
Пушу по памяти, есть функция SIPPEER, кажется. Вот с помощью её и можно реализовать.
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 10:09
SuMiSc
Попробовал SIPPEER, норм получилось.
Сделал так
Код: Выделить всё
exten = _1XX,1,GotoIf($["${SIPPEER(${EXTEN},status)}"=""]?zombi:go)
same = n(zombi),Playback(izvinite)
same = n,Playback(abonent)
same = n,Playback(ne-podkljuchen)
same = n,Wait(1)
same = n,Goto(end)
same = n(go),Dial(SIP/${EXTEN},30,tTm)
same = n(end),Hangup
Спасибо!
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 12:11
Aven
У вас версия старая, обновитесь.
И проверка SIPPEER не поможет при существующем пире, который не подключен.
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 15:46
SuMiSc
С обновлением сложно, проще с этой бедой смириться.
Насчет неподключенной пиры да, так и есть, SIPPEER одинаково одвечает если пира неподключена, или ее нет вообще.
Иные способы есть?
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 16:04
SuMiSc
Пиры имеется в виду пользователи. Их много.
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 17:09
jugatsu
SuMiSc писал(а):С обновлением сложно, проще с этой бедой смириться.
Насчет неподключенной пиры да, так и есть, SIPPEER одинаково одвечает если пира неподключена, или ее нет вообще.
Иные способы есть?
За код не ручаюсь, игрался давно
Код: Выделить всё
[intra-pbx]
exten => _1XX,1,Verbose(3, *** Making the call to to <${EXTEN}> extension *** )
same => n,Set(ARRAY(Device,Technology)=${DB(device/endpoint/${EXTEN})},${DB(device/technology/${EXTEN})})
same => n,Set(CALLERID(name)=${DB(cidname/${Device})})
same => n(first_check),GotoIf($[${ISNULL(${Technology})} | ${ISNULL(${Device})}]?error,1)
same => n,Set(added_to_conf=${SIPPEER(${device},status)})
same => n(second_check),GotoIf($[${ISNULL(${added_to_conf})}]?not_yet_added,1)
same => n,ChanIsAvail(${technology}/${device},s)
same => n,NoOp(AVAILSTATUS : ${AVAILSTATUS}, AVAILORIGCHAN : ${AVAILORIGCHAN})
same => n,GotoIf($["${AVAILSTATUS}" = "0" | "${AVAILSTATUS}" = "5"]?error,1)
same => n(dial),Dial(${Technology}/${Device},${timeout},t)
same => n,Playback(silence/1&tt-allbusy&silence/1)
same => n,Hangup()
exten => error,1,Verbose(2, *** Unable to lookup device or technology for extension ***)
same => n,Playback(silence/1&ss-noservice&silence/1)
same => n,Hangup()
exten => not_yet_added,1,NoOp(We definitely forgot to add credentials to sip.conf!)
same => n,Congestion()
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 18:52
SuMiSc
А что делает вот это?
Код: Выделить всё
same => n,ChanIsAvail(${technology}/${device},s)
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 19:02
Vlad1983
ChanIsAvail так же как и ${SIPPEER(${device},status)} нормально работают только когда qualify=yes
Re: sip_xmit of ... Invalid argument
Добавлено: 02 май 2012, 19:26
SuMiSc
Vlad1983
Да, я про это уже прочитал, qualify=yes у всех.
Попробовал ChanIsAvail.
Получается, что в переменной ${AVAILSTATUS} в случае, если пиры нет, значение 0. В остальных случаях там цифра от 1 и дальше, судя по
http://www.voip-info.org/wiki/view/Aste ... hanIsAvail
В теории то, что надо, попробую на практике.