Не проходит входящий
Добавлено: 06 мар 2014, 14:32
Здравствуйте,
Не проходит входящий вызов. Идет несколько гудков, потом сброс астреиксом входящего вызова.
Вывод CLI в момент входящего:
Нашел подобную ошибку тут: http://forum.asterisk.ru/viewtopic.php? ... els#p22552
Но тема на этом и остановилась.
Extension(peer) при этом находится Online:
Конфигурация peer:
Trunk на который идет звонок - GSM-шлюз. Входящее правило работает, пробовал его менять на _. и на нечто заведомо неверное - звонки ведут себя ожидаемо правильно.
Т.е. как я вижу - идет входящий на транк, проверяется входящее правило(редиректит зовнок на экстеншен, приведенный вверху), которое проходит верно но потом звонок где-то обрывается астериксом, при этом клиентский свофтфон не звонит как буд-то вызов не идет,а в логах видно то что я тоже обозначил выше.
Контексты тут достаточно сложные, но думаю не в них проблема. Писал их не я - они были мною сгенерированы через интерфейс FreePBX-ом. Сначала думал не включать их сюда, но потом решил добавить - если кто сможет - тот посмотрит по надобности.
Нашел вот тут решение:
http://asterisk-support.ru/question/475 ... -cause-20/ но оно мне не понятно:
По дебагу, обрыв происходит где-то в этом контексте(до него доходит,также внизу включен использующийся макрос):
Не проходит входящий вызов. Идет несколько гудков, потом сброс астреиксом входящего вызова.
Вывод CLI в момент входящего:
Код: Выделить всё
[2014-03-06 11:22:33] WARNING[3893][C-00000011]: chan_sip.c:21937 func_header_read: This function can only be used on SIP channels.
[2014-03-06 11:22:33] WARNING[3893][C-00000011]: chan_sip.c:21937 func_header_read: This function can only be used on SIP channels.
[2014-03-06 11:22:33] WARNING[3893][C-00000011]: chan_sip.c:21937 func_header_read: This function can only be used on SIP channels.
[2014-03-06 11:22:33] WARNING[3893][C-00000011]: chan_sip.c:21937 func_header_read: This function can only be used on SIP channels.
[2014-03-06 11:22:33] WARNING[3893][C-00000011]: app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
Но тема на этом и остановилась.
Extension(peer) при этом находится Online:
Код: Выделить всё
srv*CLI> sip show users
Username Secret Accountcode Def.Context ACL Forcerport
100 ccbe32efe266d36 from-internal Yes No
Код: Выделить всё
[100]
deny=0.0.0.0/0.0.0.0
secret=ccbe32efvberdc61df3efbaaf8d72fk6e
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend;(тут менял и на peer и на user - результат тот же)
nat=no
port=5060
qualify=yes
qualifyfreq=60
transport=udp
avpf=no
icesupport=no
encryption=no
callgroup=
pickupgroup=
dial=SIP/100
mailbox=100@device
permit=0.0.0.0/0.0.0.0
callerid=Ivan Fedorov <100>
callcounter=yes
faxdetect=no
cc_monitor_policy=generic
Т.е. как я вижу - идет входящий на транк, проверяется входящее правило(редиректит зовнок на экстеншен, приведенный вверху), которое проходит верно но потом звонок где-то обрывается астериксом, при этом клиентский свофтфон не звонит как буд-то вызов не идет,а в логах видно то что я тоже обозначил выше.
Контексты тут достаточно сложные, но думаю не в них проблема. Писал их не я - они были мною сгенерированы через интерфейс FreePBX-ом. Сначала думал не включать их сюда, но потом решил добавить - если кто сможет - тот посмотрит по надобности.
Нашел вот тут решение:
http://asterisk-support.ru/question/475 ... -cause-20/ но оно мне не понятно:
Попытался найти как можно добавить "huntstop в первый диалпир" но это меня завело в установку какого-то Addpac, в общем помогите разобраться к то может, а кто не может - посочувствуйте:)Добавь huntstop в первый диалпир. Иначе кошка, попытавшись в первый стукнуться и получив занятось, совершенно правильно ищет альтернативные подходящие диалпиры.
По дебагу, обрыв происходит где-то в этом контексте(до него доходит,также внизу включен использующийся макрос):
[ext-local]
include => ext-local-custom
exten => *84100,1,Goto(app-campon-toggle,*84,1)
exten => *84100,hint,ccss:SIP/100
exten => 100,1,Set(__RINGTIMER=${IF($[${DB(AMPUSER/100/ringtimer)} > 0]?${DB(AMPUSER/100/ringtimer)}:${RINGTIMER_DEFAULT})})
exten => 100,n,Macro(exten-vm,novm,100,0,0,0)
exten => 100,n(dest),Set(__PICKUPMARK=)
exten => 100,n,Goto(${IVR_CONTEXT},return,1)
exten => 100,hint,SIP/100&Custom:DND100
exten => vmret,1,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret)
exten => vmret,n,Hangup
exten => vmret,n(playret),Playback(exited-vm-will-be-transfered&silence/1)
exten => vmret,n,Goto(${IVR_CONTEXT},return,1)
exten => h,1,Macro(hangupcall,)
[macro-exten-vm]
include => macro-exten-vm-custom
exten => s,1,Macro(user-callerid,)
exten => s,n,Set(RingGroupMethod=none)
exten => s,n,Set(__EXTTOCALL=${ARG2})
exten => s,n,Set(__PICKUPMARK=${ARG2})
exten => s,n,Set(RT=${IF($["${ARG1}"!="novm" | "${DB(CFU/${EXTTOCALL})}"!="" | "${DB(CFB/${EXTTOCALL})}"!="" | "${ARG3}"="1" | "${ARG4}"="1" | "${ARG5}"="1"]?${RINGTIMER}:)})
exten => s,n,ExecIf($[$["${REDIRECTING(reason)}" = "send_to_vm" | "${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_send_to_vm"] & "${ARG1}" != "novm"]?Macro(vm,${ARG1},DIRECTDIAL,${IVR_RETVM}))
exten => s,n,ExecIf($[$["${REDIRECTING(reason)}" = "send_to_vm" | "${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_send_to_vm"] & "${ARG1}" != "novm"]?MacroExit())
exten => s,n(checkrecord),Gosub(sub-record-check,s,1(exten,${EXTTOCALL},))
exten => s,n,GotoIf($["${AMPUSER}"=""|${LEN(${FROM_DID})}|"${DB(AMPUSER/${EXTTOCALL}/answermode)}"!="intercom"|${LEN(${BLINDTRANSFER})}|"${EXTENSION_STATE(${EXTTOCALL})}"!="NOT_INUSE"|"${CC_RECALL}"!=""]?macrodial)
exten => s,n,Set(INTERCOM_EXT_DOPTIONS=${DIAL_OPTIONS})
exten => s,n,Set(INTERCOM_RETURN=TRUE)
exten => s,n,Gosub(ext-intercom,*80${EXTTOCALL},1())
exten => s,n,Set(INTERCOM_RETURN=)
exten => s,n,Set(INTERCOM_EXT_DOPTIONS=)
exten => s,n(macrodial),GosubIf($["${INTERCOM_CALL}"="TRUE" & ${LEN(${BLINDTRANSFER})}]?clrheader,1())
exten => s,n,Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL})
exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS})
exten => s,n(calldocfu),GosubIf($[("${SV_DIALSTATUS}"="NOANSWER"|"${SV_DIALSTATUS}"="CHANUNAVAIL") & "${DB(CFU/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfu,1())
exten => s,n(calldocfb),GosubIf($["${SV_DIALSTATUS}"="BUSY" & "${DB(CFB/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfb,1())
--
;--== end of [macro-exten-vm] ==--;