Никак не могу найти возможность автоматического выбора свободного транка.
Диаграмму компонентов прикладываю.
Описание:
Есть аналоговая АТСка Panasonic KX-TA616, в ней 24 абонента, в неё же воткнуты внешние линии (пока что так, сейчас переходный период)
Есть AsteriskNow 2.0 (Asterisk1.8 + FreePBX 2.10), подключил плату Openvox AE800E с одним FXO400-модулем. К двум портам платы подключил две линии от аналоговой АТСки.
В FreePBX для Openvox-платы сделал два транка (для 1 и 2 портов, остальные отдыхают пока), исходящую маршрутизацию настроил через wildcard (в совпадении шаблона поставил точку), и оба транка указал в этом правиле.
Настроил два внутренних номера 1001 и 1002. Но теперь встала проблема, как заставить asterisk при наборе номера выбирать свободный транк? Вроде оба указал в правиле исходящей маршрутизации. Если позвонить на аналоговую АТСку с номера 1001, то номеру 1002 Тамара говорит, что все линии заняты.
Чтоб убедиться, что линия реально свободна, сделал еще два исходящих правила с префиксом 6 и 7 соответственно. Набираю 6101 (101 абонент в аналоговой АТС) с номера 1001 - ОК, набираю 7102 (102 абонент в аналоговой АТС) с номера 1002 - ОК. То есть обе линии могу быть использованы одновременно, но вопрос именно в том, как научить asterisk отдавать свободный транк.
PS: Простите великодушно, если баян, поиск использовал, но ничего более менее схожего не нашёл, буду признателен, если ткнёте.
Added after 17 minutes:
совсем забыл, интересует решение, основанное именно на FreePBX, а не на редактировании конфигов, так как они затираются при работе в FreePBX.
Так будет автоматически выбираться свободный канал.
_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
| Цитата: |
| [root@asterisk-now asterisk]# grep -r OUT_ /etc/asterisk/|grep g0 /etc/asterisk/extensions_additional.conf:OUT_1 = DAHDI/g0 /etc/asterisk/extensions_additional.conf:OUT_2 = DAHDI/g0 |
Только что попробовал вызвать аналоговую АТСку, получил сообщение, что все линии заняты, вот кусок лога, относящийся к этой попытке:
| Цитата: |
| [2012-06-20 18] VERBOSE[5916] netsock2.c: == Using SIP RTP TOS bits 184 [2012-06-20 18] VERBOSE[5916] netsock2.c: == Using SIP RTP CoS mark 5 [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Macro("SIP/110-00000026", "user-callerid,LIMIT,") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "AMPUSER=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000026", "0?report") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000026", "1?Set(REALCALLERIDNUM=110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "AMPUSER=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "AMPUSERCIDNAME=Gusev Pavel") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000026", "0?report") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "AMPUSERCID=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "CALLERID(all)="Gusev Pavel" ") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000026", "0?limit") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000026", "1?Set(GROUP(concurrency_limit)=110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000026", "0?Set(CHANNEL(language)=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000026", "1?continue") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-user-callerid,s,25) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "CALLERID(number)=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "CALLERID(name)=Gusev Pavel") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000026", "CHANNEL(language)=en") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Set("SIP/110-00000026", "MOHCLASS=none") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Set("SIP/110-00000026", "_NODEST=") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Gosub("SIP/110-00000026", "sub-record-check,s,1(out,7101,)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000026", "1?check") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (sub-record-check,s,6) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__MON_FMT=wav") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000026", "1?next") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (sub-record-check,s,10) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] ExecIf("SIP/110-00000026", "0?Return()") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000026", "0?out,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__REC_STATUS=INITIALIZED") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] ExecIf("SIP/110-00000026", "0?Set(__REC_POLICY_MODE=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "NOW=1340202157") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__DAY=20") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__MONTH=06") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__YEAR=2012") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__TIMESTR=20120620-182237") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__FROMEXTEN=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000026", "__CALLFILENAME=out-7101-110-20120620-182237-1340202157.65") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@sub-record-check] Goto("SIP/110-00000026", "out,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (sub-record-check,out,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [out@sub-record-check] ExecIf("SIP/110-00000026", "1?Set(__REC_POLICY_MODE=dontcare)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [out@sub-record-check] GosubIf("SIP/110-00000026", "0?record,1(exten,7101,110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [out@sub-record-check] Return("SIP/110-00000026", "") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Macro("SIP/110-00000026", "dialout-trunk,2,101,") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "DIAL_TRUNK=2") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GosubIf("SIP/110-00000026", "0?sub-pincheck,s,1()") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000026", "0?disabletrunk,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "DIAL_NUMBER=101") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "DIAL_TRUNK_OPTIONS=tr") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "OUTBOUND_GROUP=OUT_2") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000026", "1?nomax") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,s,9) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000026", "0?skipoutcid") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "DIAL_TRUNK_OPTIONS=") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Macro("SIP/110-00000026", "outbound-callerid,2") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "0?Set(CALLERPRES()=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "0?Set(REALCALLERIDNUM=110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] GotoIf("SIP/110-00000026", "1?normcid") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-outbound-callerid,s,6) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000026", "USEROUTCID=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000026", "EMERGENCYCID=") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000026", "TRUNKOUTCID=") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] GotoIf("SIP/110-00000026", "1?trunkcid") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-outbound-callerid,s,12) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "0?Set(CALLERID(all)=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "1?Set(CALLERID(all)=110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "0?Set(CALLERID(all)=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000026", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GosubIf("SIP/110-00000026", "0?sub-flp-2,s,1()") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "OUTNUM=101") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000026", "custom=DAHDI/g0") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000026", "1?Set(DIAL_TRUNK_OPTIONS=M(setmusic^none))") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000026", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^none)M(confirm))") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Macro("SIP/110-00000026", "dialout-trunk-predial-hook,") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk-predial-hook] MacroExit("SIP/110-00000026", "") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000026", "0?bypass,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000026", "1?Set(CONNECTEDLINE(num,i)=101)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000026", "1?Set(CONNECTEDLINE(name,i)=CID:110)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000026", "0?customtrunk") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Dial("SIP/110-00000026", "DAHDI/g0/101,300,M(setmusic^none)") in new stack [2012-06-20 18] WARNING[6749] app_dial.c: Unable to create channel of type 'DAHDI' (cause 0 - Unknown) [2012-06-20 18] VERBOSE[6749] app_dial.c: == Everyone is busy/congested at this time (1:0/0/1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] NoOp("SIP/110-00000026", "Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Goto("SIP/110-00000026", "s-CHANUNAVAIL,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,s-CHANUNAVAIL,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s-CHANUNAVAIL@macro-dialout-trunk] Set("SIP/110-00000026", "RC=0") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s-CHANUNAVAIL@macro-dialout-trunk] Goto("SIP/110-00000026", "0,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,0,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [0@macro-dialout-trunk] Goto("SIP/110-00000026", "continue,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,continue,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] GotoIf("SIP/110-00000026", "1?noreport") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,continue,3) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] NoOp("SIP/110-00000026", "TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] Set("SIP/110-00000026", "CALLERID(number)=110") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [7101@from-internal] Macro("SIP/110-00000026", "outisbusy,") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outisbusy] Progress("SIP/110-00000026", "") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outisbusy] Playback("SIP/110-00000026", "all-circuits-busy-now,noanswer") in new stack [2012-06-20 18] VERBOSE[6749] file.c: -- Playing 'all-circuits-busy-now.gsm' (language 'en') [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outisbusy] Playback("SIP/110-00000026", "pls-try-call-later,noanswer") in new stack [2012-06-20 18] VERBOSE[6749] file.c: -- Playing 'pls-try-call-later.gsm' (language 'en') [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-outisbusy] Macro("SIP/110-00000026", "hangupcall") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-hangupcall] GotoIf("SIP/110-00000026", "1?theend") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-hangupcall,s,3) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-hangupcall] ExecIf("SIP/110-00000026", "0?Set(CDR(recordingfile)=)") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-hangupcall] Hangup("SIP/110-00000026", "") in new stack [2012-06-20 18] VERBOSE[6749] app_macro.c: == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/110-00000026' in macro 'hangupcall' [2012-06-20 18] VERBOSE[6749] app_macro.c: == Spawn extension (macro-outisbusy, s, 4) exited non-zero on 'SIP/110-00000026' in macro 'outisbusy' [2012-06-20 18] VERBOSE[6749] pbx.c: == Spawn extension (from-internal, 7101, 6) exited non-zero on 'SIP/110-00000026' [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [h@from-internal] Hangup("SIP/110-00000026", "") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/110-00000026' |
а вот лог нормального соединения (когда в транке указываю не g0 а просто номер канала - от 1 до 4)
| Цитата: |
| [2012-06-20 18] VERBOSE[5916] netsock2.c: == Using SIP RTP TOS bits 184 [2012-06-20 18] VERBOSE[5916] netsock2.c: == Using SIP RTP CoS mark 5 [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [7101@from-internal] Macro("SIP/110-00000024", "user-callerid,LIMIT,") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "AMPUSER=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000024", "0?report") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000024", "1?Set(REALCALLERIDNUM=110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "AMPUSER=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "AMPUSERCIDNAME=Gusev Pavel") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000024", "0?report") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "AMPUSERCID=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "CALLERID(all)="Gusev Pavel" ") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000024", "0?limit") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000024", "1?Set(GROUP(concurrency_limit)=110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] ExecIf("SIP/110-00000024", "0?Set(CHANNEL(language)=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] GotoIf("SIP/110-00000024", "1?continue") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (macro-user-callerid,s,25) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "CALLERID(number)=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "CALLERID(name)=Gusev Pavel") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-user-callerid] Set("SIP/110-00000024", "CHANNEL(language)=en") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [7101@from-internal] Set("SIP/110-00000024", "MOHCLASS=none") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [7101@from-internal] Set("SIP/110-00000024", "_NODEST=") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [7101@from-internal] Gosub("SIP/110-00000024", "sub-record-check,s,1(out,7101,)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000024", "1?check") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (sub-record-check,s,6) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__MON_FMT=wav") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000024", "1?next") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (sub-record-check,s,10) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] ExecIf("SIP/110-00000024", "0?Return()") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] GotoIf("SIP/110-00000024", "0?out,1") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__REC_STATUS=INITIALIZED") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] ExecIf("SIP/110-00000024", "0?Set(__REC_POLICY_MODE=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "NOW=1340202061") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__DAY=20") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__MONTH=06") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__YEAR=2012") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__TIMESTR=20120620-182101") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__FROMEXTEN=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Set("SIP/110-00000024", "__CALLFILENAME=out-7101-110-20120620-182101-1340202061.62") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@sub-record-check] Goto("SIP/110-00000024", "out,1") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (sub-record-check,out,1) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [out@sub-record-check] ExecIf("SIP/110-00000024", "1?Set(__REC_POLICY_MODE=dontcare)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [out@sub-record-check] GosubIf("SIP/110-00000024", "0?record,1(exten,7101,110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [out@sub-record-check] Return("SIP/110-00000024", "") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [7101@from-internal] Macro("SIP/110-00000024", "dialout-trunk,2,101,") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "DIAL_TRUNK=2") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GosubIf("SIP/110-00000024", "0?sub-pincheck,s,1()") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000024", "0?disabletrunk,1") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "DIAL_NUMBER=101") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "DIAL_TRUNK_OPTIONS=tr") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "OUTBOUND_GROUP=OUT_2") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000024", "1?nomax") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (macro-dialout-trunk,s,9) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000024", "0?skipoutcid") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "DIAL_TRUNK_OPTIONS=") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Macro("SIP/110-00000024", "outbound-callerid,2") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "0?Set(CALLERPRES()=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "0?Set(REALCALLERIDNUM=110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] GotoIf("SIP/110-00000024", "1?normcid") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (macro-outbound-callerid,s,6) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000024", "USEROUTCID=110") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000024", "EMERGENCYCID=") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] Set("SIP/110-00000024", "TRUNKOUTCID=") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] GotoIf("SIP/110-00000024", "1?trunkcid") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (macro-outbound-callerid,s,12) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "0?Set(CALLERID(all)=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "1?Set(CALLERID(all)=110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "0?Set(CALLERID(all)=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-outbound-callerid] ExecIf("SIP/110-00000024", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GosubIf("SIP/110-00000024", "0?sub-flp-2,s,1()") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "OUTNUM=101") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Set("SIP/110-00000024", "custom=DAHDI/1") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000024", "1?Set(DIAL_TRUNK_OPTIONS=M(setmusic^none))") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000024", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^none)M(confirm))") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Macro("SIP/110-00000024", "dialout-trunk-predial-hook,") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk-predial-hook] MacroExit("SIP/110-00000024", "") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000024", "0?bypass,1") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000024", "1?Set(CONNECTEDLINE(num,i)=101)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] ExecIf("SIP/110-00000024", "1?Set(CONNECTEDLINE(name,i)=CID:110)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] GotoIf("SIP/110-00000024", "0?customtrunk") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-dialout-trunk] Dial("SIP/110-00000024", "DAHDI/1/101,300,M(setmusic^none)") in new stack [2012-06-20 18] VERBOSE[6726] app_dial.c: -- Called DAHDI/1/101 [2012-06-20 18] VERBOSE[6726] app_dial.c: -- DAHDI/1-1 answered SIP/110-00000024 [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-setmusic] Set("DAHDI/1-1", "CHANNEL(musicclass)=none") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [h@macro-dialout-trunk] Macro("SIP/110-00000024", "hangupcall,") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-hangupcall] GotoIf("SIP/110-00000024", "1?theend") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Goto (macro-hangupcall,s,3) [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-hangupcall] ExecIf("SIP/110-00000024", "0?Set(CDR(recordingfile)=)") in new stack [2012-06-20 18] VERBOSE[6726] pbx.c: -- Executing [s@macro-hangupcall] Hangup("SIP/110-00000024", "") in new stack [2012-06-20 18] VERBOSE[6726] app_macro.c: == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/110-00000024' in macro 'hangupcall' [2012-06-20 18] VERBOSE[6726] features.c: == Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on 'SIP/110-00000024' [2012-06-20 18] VERBOSE[6726] sig_analog.c: -- Hanging up on 'DAHDI/1-1' [2012-06-20 18] VERBOSE[6726] chan_dahdi.c: -- Hungup 'DAHDI/1-1' [2012-06-20 18] VERBOSE[6726] app_macro.c: == Spawn extension (macro-dialout-trunk, s, 22) exited non-zero on 'SIP/110-00000024' in macro 'dialout-trunk' [2012-06-20 18] VERBOSE[6726] pbx.c: == Spawn extension (from-internal, 7101, 5) exited non-zero on 'SIP/110-00000024' |
я так понимаю из лога неудачного вызова интересный кусок:
| Цитата: |
| [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Dial("SIP/110-00000026", "DAHDI/g0/101,300,M(setmusic^none)") in new stack [2012-06-20 18] WARNING[6749] app_dial.c: Unable to create channel of type 'DAHDI' (cause 0 - Unknown) [2012-06-20 18] VERBOSE[6749] app_dial.c: == Everyone is busy/congested at this time (1:0/0/1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] NoOp("SIP/110-00000026", "Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s@macro-dialout-trunk] Goto("SIP/110-00000026", "s-CHANUNAVAIL,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,s-CHANUNAVAIL,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s-CHANUNAVAIL@macro-dialout-trunk] Set("SIP/110-00000026", "RC=0") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [s-CHANUNAVAIL@macro-dialout-trunk] Goto("SIP/110-00000026", "0,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,0,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [0@macro-dialout-trunk] Goto("SIP/110-00000026", "continue,1") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,continue,1) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] GotoIf("SIP/110-00000026", "1?noreport") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Goto (macro-dialout-trunk,continue,3) [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] NoOp("SIP/110-00000026", "TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks") in new stack [2012-06-20 18] VERBOSE[6749] pbx.c: -- Executing [continue@macro-dialout-trunk] Set("SIP/110-00000026", "CALLERID(number)=110") in new stack |
Unable to create channel of type 'DAHDI' - это так и должно быть потому что первый канал уже занят? Или технология позволяет сразу найти свободный канал?
Кто сталкивался с:
-Dial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 0
-TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 0 - failing through to other trunks
Added after 21 minutes:
все ребята, метод проб и ошибок показал такое решение:
в настройках FreePBX объединил все каналы в группу 1, а в /etc/asterisk/dahdi-channels.conf ничего не менял, так и оставил в группе 0.
вот так всё заработало.
спасибо всем, кто успел подумать над проблемой!
| Код: |
| [macro-ats] exten => s,1,ChanIsAvail(${mats1}&${mats2}&${mats3}) exten => s,n,Set(AVAILCHAN=${CUT(AVAILCHAN,,1)}) exten => s,n,Dial(${AVAILCHAN}/${ARG1},15,m) exten => s,n,Hangup |
Соответственно вызов делать
| Код: |
| exten => _XXXXXXX, n, Macro(ats,${EXTEN:1},15,m) |