Есть сервер с Asterisk v. 11.16.0 (точнее сервер установленный с Asterisknow.iso) В сервер установлена VoIP-плата OpenVox A400E с 3-мя модулями OpenVox FXO- O) и 1-м модулем OpenVox FXS-100 (1xFXS)
Код:
service dahdi status ### Span 1: WCTDM/4 "Wildcard TDM400P REV E/F Board 5" (MASTER) 1 FXO FXSKS (In use) (EC: OSLEC - INACTIVE) 2 FXO FXSKS (EC: OSLEC - INACTIVE) RED 3 FXO FXSKS (EC: OSLEC - INACTIVE) RED 4 FXS FXOKS (In use) (EC: OSLEC - INACTIVE)
К 1-му порту подключена аналоговая городская линия МГТС, к 4-му порту подключен аналоговый телефон. Цель: пробрасывать входящие вызовы на порт 4 (аналоговый телефон) Исходящие вызовы пробрасывать на городскую линию.
Вопрос начинающего, поэтому мало конкретики. Логов у Asterisk много, напишите какие нужно прислать.
Может попробовать включить режим отладки в консоли, но вот вопрос как мониторить аналоговую плату (вернее состояние ее портов когда на них приходит звонок с города) Кстати статус линии на FXO порту изменился на In use с INACTIVE через пару часов, на скрине это видно, видимо китайская плата.
Такие сообщения сваливаются в консоль при входящем звонке:
Код:
[2015-08-18 08:54:35] WARNING[2192]: res_odbc.c:1412 _ast_odbc_request_obj2: SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC 5.1 Driver]MySQL server has gone away -- Starting simple switch on 'DAHDI/1-1' [2015-08-18 08:54:35] WARNING[2192]: res_odbc.c:646 ast_odbc_prepare_and_execute: SQL Execute returned an error -1: 08S01: [MySQL][ODBC 5.1 Driver][mysqld-5.1.73]MySQL server has gone away (65) [2015-08-18 08:54:35] WARNING[2192]: res_odbc.c:658 ast_odbc_prepare_and_execute: SQL Execute error -1! Verifying connection to asteriskcdrdb [MySQL-asteriskcdrdb]... [2015-08-18 08:54:35] WARNING[2192]: res_odbc.c:762 ast_odbc_sanity_check: Connection is down attempting to reconnect... [2015-08-18 08:54:35] NOTICE[2192]: res_odbc.c:1537 odbc_obj_connect: Connecting asteriskcdrdb [2015-08-18 08:54:35] NOTICE[2192]: res_odbc.c:1569 odbc_obj_connect: res_odbc: Connected to asteriskcdrdb [MySQL-asteriskcdrdb] [2015-08-18 08:54:39] WARNING[10699][C-0000000c]: pbx.c:6646 __ast_pbx_run: Channel 'DAHDI/1-1' sent to invalid extension but no invalid handler: context,exten,priority=DID_trunk_1,s,1 -- Hanging up on 'DAHDI/1-1' -- Hungup 'DAHDI/1-1' -- Starting simple switch on 'DAHDI/1-1' [2015-08-18 08:54:49] WARNING[10706][C-0000000d]: pbx.c:6646 __ast_pbx_run: Channel 'DAHDI/1-1' sent to invalid extension but no invalid handler: context,exten,priority=DID_trunk_1,s,1 -- Hanging up on 'DAHDI/1-1' -- Hungup 'DAHDI/1-1' -- Starting simple switch on 'DAHDI/1-1' [2015-08-18 08:54:59] WARNING[10711][C-0000000e]: pbx.c:6646 __ast_pbx_run: Channel 'DAHDI/1-1' sent to invalid extension but no invalid handler: context,exten,priority=DID_trunk_1,s,1 -- Hanging up on 'DAHDI/1-1' -- Hungup 'DAHDI/1-1' -- Starting simple switch on 'DAHDI/1-1' [2015-08-18 08:55:09] WARNING[10726][C-0000000f]: pbx.c:6646 __ast_pbx_run: Channel 'DAHDI/1-1' sent to invalid extension but no invalid handler: context,exten,priority=DID_trunk_1,s,1 -- Hanging up on 'DAHDI/1-1' -- Hungup 'DAHDI/1-1'
Так. Первое - проверяйте коннект между астером и базой.
Ну и второе:
Код:
[2015-08-18 08:54:49] WARNING[10706][C-0000000d]: pbx.c:6646 __ast_pbx_run: Channel 'DAHDI/1-1' sent to invalid extension but no invalid handler: context,exten,priority=DID_trunk_1,s,1
Переводить или сами поняли что надо проверить наличие контекста DID_trunk_1 и в нем шаг s: dialplan show DID_trunk_1 _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Снова повторюсь - я новичек в астере, поэтому выбрал Asterisknow. Как проверить соединение астера с базой?
Далее, я не обнулял стандартный диалплан, руководствуясь тем, что внутренние звонки проходят нормально, поэтому просто добавил все в users.conf, как рекомендовано на ресурсе ниже: http://www.ab-log.ru/page.php?cs=1&ID=118
Как лучше поступить: обнулить полностью диалплан и все крутить заново?
Вот собственно сам файл users.conf
Код:
[trunk_1] group = 1 context = DID_trunk_1 busydetect = yes busycount = 3 busypattern = 500,500 ringtimeout = 8000 progzone = ru usecallerid = yes cidstart = ring cidsignalling = bell flash = 750 rxflash = 1250 callerid = asreceived dahdichan = 1 trunkstyle = analog allow = all group = 1 signalling = fxs_ks channel = 1
У меня с глазами что-то или вы серьезно влепили обработку вызова в файл регистрации-описания? Уважаемый!!! Хоть немного почитать следует - обработка вызовов происходит в файлах диал-плана!!!!! _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Все когда-то на чем-то учатся. Накосячил - исправлю, пожалуйста, давайте конкретику.
Итак, давайте по-порядку: 1. Нужно обнулять стандартный диалплан сборки Asterisknow? 2. Как проверить коннект между астером и базой.
Дайте хоть ссылку на ресурс где про это можно почитать, что конкретно добавлять к extentions.conf, что конкретно в users.conf, что конкретно в sip.conf
Телефоны в sip.additional.conf я добавляю самостоятельно, тут понимание есть.
вам надо прочитать про бедующее телефонии . добавлять и что то менять в стандартных контекстах - не рекомендуется . пока не поймете что и куда можно и нужно добавлять . а то вы сейчас нажмете в веб морде применить . и все ваши труды уйдут на смарку .
Спасибо за советы, вроде разобрался.. В настройках аналоговой платы прописал контекст который везде един. Создал входящее правило маршрутизации и привязал к внутреннему ext. Теперь при входящем звонке из города в лог 1 раз падает вот что:
Код:
Connected to Asterisk 11.16.0 currently running on gw (pid = 2191) [2015-08-19 08:57:03] WARNING[5610][C-00000066]: func_channel.c:538 func_channel_read: Unknown or unavailable item requested: 'reversecharge' gw*CLI>
Остальные ошибки пропали.
Added after 6 minutes:
Mike128 @ Ср Авг 19, 2015 07:01 писал(а):
Спасибо за советы, вроде разобрался.. В настройках аналоговой платы прописал контекст который везде един. Создал входящее правило маршрутизации и привязал к внутреннему ext. Забыл отладку включить, вот:
Код:
-- Starting simple switch on 'DAHDI/1-1' -- Executing [s@from-trunk:1] ExecIf("DAHDI/1-1", "1?Set(__FROM_DID=s)") in new stack -- Executing [s@from-trunk:2] Gosub("DAHDI/1-1", "sub-record-check,s,1(in,s,dontcare)") in new stack -- Executing [s@sub-record-check:1] GotoIf("DAHDI/1-1", "0?initialized") in new stack -- Executing [s@sub-record-check:2] Set("DAHDI/1-1", "__REC_STATUS=INITIALIZED") in new stack -- Executing [s@sub-record-check:3] Set("DAHDI/1-1", "NOW=1439964235") in new stack -- Executing [s@sub-record-check:4] Set("DAHDI/1-1", "__DAY=19") in new stack -- Executing [s@sub-record-check:5] Set("DAHDI/1-1", "__MONTH=08") in new stack -- Executing [s@sub-record-check:6] Set("DAHDI/1-1", "__YEAR=2015") in new stack -- Executing [s@sub-record-check:7] Set("DAHDI/1-1", "__TIMESTR=20150819-090355") in new stack -- Executing [s@sub-record-check:8] Set("DAHDI/1-1", "__FROMEXTEN=unknown") in new stack -- Executing [s@sub-record-check:9] Set("DAHDI/1-1", "__MON_FMT=wav") in new stack -- Executing [s@sub-record-check:10] NoOp("DAHDI/1-1", "Recordings initialized") in new stack -- Executing [s@sub-record-check:11] ExecIf("DAHDI/1-1", "0?Set(ARG3=dontcare)") in new stack -- Executing [s@sub-record-check:12] Set("DAHDI/1-1", "REC_POLICY_MODE_SAVE=") in new stack -- Executing [s@sub-record-check:13] ExecIf("DAHDI/1-1", "0?Set(REC_STATUS=NO)") in new stack -- Executing [s@sub-record-check:14] GotoIf("DAHDI/1-1", "2?checkaction") in new stack -- Goto (sub-record-check,s,17) -- Executing [s@sub-record-check:17] GotoIf("DAHDI/1-1", "1?sub-record-check,in,1") in new stack -- Goto (sub-record-check,in,1) -- Executing [in@sub-record-check:1] NoOp("DAHDI/1-1", "Inbound Recording Check to s") in new stack -- Executing [in@sub-record-check:2] Set("DAHDI/1-1", "FROMEXTEN=unknown") in new stack -- Executing [in@sub-record-check:3] ExecIf("DAHDI/1-1", "0?Set(FROMEXTEN=)") in new stack -- Executing [in@sub-record-check:4] Gosub("DAHDI/1-1", "recordcheck,1(dontcare,in,s)") in new stack -- Executing [recordcheck@sub-record-check:1] NoOp("DAHDI/1-1", "Starting recording check against dontcare") in new stack -- Executing [recordcheck@sub-record-check:2] Goto("DAHDI/1-1", "dontcare") in new stack -- Goto (sub-record-check,recordcheck,3) -- Executing [recordcheck@sub-record-check:3] Return("DAHDI/1-1", "") in new stack -- Executing [in@sub-record-check:5] Return("DAHDI/1-1", "") in new stack -- Executing [s@from-trunk:3] Gosub("DAHDI/1-1", "app-blacklist-check,s,1()") in new stack -- Executing [s@app-blacklist-check:1] GotoIf("DAHDI/1-1", "0?blacklisted") in new stack -- Executing [s@app-blacklist-check:2] Set("DAHDI/1-1", "CALLED_BLACKLIST=1") in new stack -- Executing [s@app-blacklist-check:3] Return("DAHDI/1-1", "") in new stack -- Executing [s@from-trunk:4] Set("DAHDI/1-1", "CDR(did)=s") in new stack -- Executing [s@from-trunk:5] ExecIf("DAHDI/1-1", "1 ?Set(CALLERID(name)=)") in new stack -- Executing [s@from-trunk:6] Set("DAHDI/1-1", "CHANNEL(musicclass)=default") in new stack -- Executing [s@from-trunk:7] Set("DAHDI/1-1", "__MOHCLASS=default") in new stack -- Executing [s@from-trunk:8] Ringing("DAHDI/1-1", "") in new stack [2015-08-19 09:03:55] WARNING[5854][C-00000068]: func_channel.c:538 func_channel_read: Unknown or unavailable item requested: 'reversecharge' -- Executing [s@from-trunk:9] GotoIf("DAHDI/1-1", "0?macro-hangupcall") in new stack -- Executing [s@from-trunk:10] Set("DAHDI/1-1", "__CALLINGNAMEPRES_SV=allowed_not_screened") in new stack -- Executing [s@from-trunk:11] Set("DAHDI/1-1", "__CALLINGNUMPRES_SV=allowed_not_screened") in new stack -- Executing [s@from-trunk:12] Set("DAHDI/1-1", "CALLERID(name-pres)=allowed_not_screened") in new stack -- Executing [s@from-trunk:13] Set("DAHDI/1-1", "CALLERID(num-pres)=allowed_not_screened") in new stack -- Executing [s@from-trunk:14] Goto("DAHDI/1-1", "from-did-direct,113,1") in new stack -- Goto (from-did-direct,113,1) -- Executing [113@from-did-direct:1] GotoIf("DAHDI/1-1", "1?ext-local,113,1") in new stack -- Goto (ext-local,113,1) -- Executing [113@ext-local:1] Set("DAHDI/1-1", "__RINGTIMER=15") in new stack -- Executing [113@ext-local:2] Macro("DAHDI/1-1", "exten-vm,novm,113,0,0,0") in new stack -- Executing [s@macro-exten-vm:1] Macro("DAHDI/1-1", "user-callerid,") in new stack -- Executing [s@macro-user-callerid:1] Set("DAHDI/1-1", "TOUCH_MONITOR=1439964230.111") in new stack -- Executing [s@macro-user-callerid:2] Set("DAHDI/1-1", "AMPUSER=") in new stack -- Executing [s@macro-user-callerid:3] GotoIf("DAHDI/1-1", "0?report") in new stack -- Executing [s@macro-user-callerid:4] ExecIf("DAHDI/1-1", "1?Set(REALCALLERIDNUM=)") in new stack -- Executing [s@macro-user-callerid:5] Set("DAHDI/1-1", "AMPUSER=") in new stack -- Executing [s@macro-user-callerid:6] GotoIf("DAHDI/1-1", "0?limit") in new stack -- Executing [s@macro-user-callerid:7] Set("DAHDI/1-1", "AMPUSERCIDNAME=") in new stack -- Executing [s@macro-user-callerid:8] GotoIf("DAHDI/1-1", "1?report") in new stack -- Goto (macro-user-callerid,s,16) -- Executing [s@macro-user-callerid:16] GotoIf("DAHDI/1-1", "0?continue") in new stack -- Executing [s@macro-user-callerid:17] ExecIf("DAHDI/1-1", "1?Set(__CALLEE_ACCOUNCODE=)") in new stack -- Executing [s@macro-user-callerid:18] Set("DAHDI/1-1", "__TTL=64") in new stack -- Executing [s@macro-user-callerid:19] GotoIf("DAHDI/1-1", "1?continue") in new stack -- Goto (macro-user-callerid,s,30) -- Executing [s@macro-user-callerid:30] Set("DAHDI/1-1", "CALLERID(number)=") in new stack -- Executing [s@macro-user-callerid:31] Set("DAHDI/1-1", "CALLERID(name)=") in new stack -- Executing [s@macro-user-callerid:32] Set("DAHDI/1-1", "CDR(cnum)=") in new stack -- Executing [s@macro-user-callerid:33] Set("DAHDI/1-1", "CDR(cnam)=") in new stack -- Executing [s@macro-user-callerid:34] Set("DAHDI/1-1", "CHANNEL(language)=en") in new stack -- Executing [s@macro-exten-vm:2] Set("DAHDI/1-1", "RingGroupMethod=none") in new stack -- Executing [s@macro-exten-vm:3] Set("DAHDI/1-1", "__EXTTOCALL=113") in new stack -- Executing [s@macro-exten-vm:4] Set("DAHDI/1-1", "__PICKUPMARK=113") in new stack -- Executing [s@macro-exten-vm:5] Set("DAHDI/1-1", "RT=") in new stack -- Executing [s@macro-exten-vm:6] Gosub("DAHDI/1-1", "sub-record-check,s,1(exten,113,dontcare)") in new stack -- Executing [s@sub-record-check:1] GotoIf("DAHDI/1-1", "7?initialized") in new stack -- Goto (sub-record-check,s,10) -- Executing [s@sub-record-check:10] NoOp("DAHDI/1-1", "Recordings initialized") in new stack -- Executing [s@sub-record-check:11] ExecIf("DAHDI/1-1", "0?Set(ARG3=dontcare)") in new stack -- Executing [s@sub-record-check:12] Set("DAHDI/1-1", "REC_POLICY_MODE_SAVE=") in new stack -- Executing [s@sub-record-check:13] ExecIf("DAHDI/1-1", "0?Set(REC_STATUS=NO)") in new stack -- Executing [s@sub-record-check:14] GotoIf("DAHDI/1-1", "5?checkaction") in new stack -- Goto (sub-record-check,s,17) -- Executing [s@sub-record-check:17] GotoIf("DAHDI/1-1", "1?sub-record-check,exten,1") in new stack -- Goto (sub-record-check,exten,1) -- Executing [exten@sub-record-check:1] NoOp("DAHDI/1-1", "Exten Recording Check between unknown and 113") in new stack -- Executing [exten@sub-record-check:2] Set("DAHDI/1-1", "CALLTYPE=external") in new stack -- Executing [exten@sub-record-check:3] ExecIf("DAHDI/1-1", "0?Set(CALLTYPE=)") in new stack -- Executing [exten@sub-record-check:4] Set("DAHDI/1-1", "CALLEE=dontcare") in new stack -- Executing [exten@sub-record-check:5] ExecIf("DAHDI/1-1", "0?Set(CALLEE=dontcare)") in new stack -- Executing [exten@sub-record-check:6] GotoIf("DAHDI/1-1", "1?callee") in new stack -- Goto (sub-record-check,exten,11) -- Executing [exten@sub-record-check:11] Gosub("DAHDI/1-1", "recordcheck,1(dontcare,external,113)") in new stack -- Executing [recordcheck@sub-record-check:1] NoOp("DAHDI/1-1", "Starting recording check against dontcare") in new stack -- Executing [recordcheck@sub-record-check:2] Goto("DAHDI/1-1", "dontcare") in new stack -- Goto (sub-record-check,recordcheck,3) -- Executing [recordcheck@sub-record-check:3] Return("DAHDI/1-1", "") in new stack -- Executing [exten@sub-record-check:12] Return("DAHDI/1-1", "") in new stack -- Executing [s@macro-exten-vm:7] GotoIf("DAHDI/1-1", "1?macrodial") in new stack -- Goto (macro-exten-vm,s,13) -- Executing [s@macro-exten-vm:13] GosubIf("DAHDI/1-1", "0?clrheader,1()") in new stack -- Executing [s@macro-exten-vm:14] Macro("DAHDI/1-1", "dial-one,,Ttr,113") in new stack -- Executing [s@macro-dial-one:1] Set("DAHDI/1-1", "DEXTEN=113") in new stack -- Executing [s@macro-dial-one:2] Set("DAHDI/1-1", "DIALSTATUS_CW=") in new stack -- Executing [s@macro-dial-one:3] GosubIf("DAHDI/1-1", "0?screen,1()") in new stack -- Executing [s@macro-dial-one:4] GosubIf("DAHDI/1-1", "0?cf,1()") in new stack -- Executing [s@macro-dial-one:5] GotoIf("DAHDI/1-1", "1?skip1") in new stack -- Goto (macro-dial-one,s,8) -- Executing [s@macro-dial-one:8] GotoIf("DAHDI/1-1", "0?nodial") in new stack -- Executing [s@macro-dial-one:9] GotoIf("DAHDI/1-1", "0?continue") in new stack -- Executing [s@macro-dial-one:10] Set("DAHDI/1-1", "EXTHASCW=ENABLED") in new stack -- Executing [s@macro-dial-one:11] GotoIf("DAHDI/1-1", "0?next1:cwinusebusy") in new stack -- Goto (macro-dial-one,s,23) -- Executing [s@macro-dial-one:23] GotoIf("DAHDI/1-1", "0?next3:continue") in new stack -- Goto (macro-dial-one,s,25) -- Executing [s@macro-dial-one:25] GotoIf("DAHDI/1-1", "0?nodial") in new stack -- Executing [s@macro-dial-one:26] GosubIf("DAHDI/1-1", "1?dstring,1():dlocal,1()") in new stack -- Executing [dstring@macro-dial-one:1] Set("DAHDI/1-1", "DSTRING=") in new stack -- Executing [dstring@macro-dial-one:2] Set("DAHDI/1-1", "DEVICES=113") in new stack -- Executing [dstring@macro-dial-one:3] ExecIf("DAHDI/1-1", "0?Return()") in new stack -- Executing [dstring@macro-dial-one:4] ExecIf("DAHDI/1-1", "0?Set(DEVICES=13)") in new stack -- Executing [dstring@macro-dial-one:5] Set("DAHDI/1-1", "LOOPCNT=1") in new stack -- Executing [dstring@macro-dial-one:6] Set("DAHDI/1-1", "ITER=1") in new stack -- Executing [dstring@macro-dial-one:7] Set("DAHDI/1-1", "THISDIAL=DAHDI/4") in new stack -- Executing [dstring@macro-dial-one:8] GosubIf("DAHDI/1-1", "1?zap2dahdi,1()") in new stack -- Executing [zap2dahdi@macro-dial-one:1] ExecIf("DAHDI/1-1", "0?Return()") in new stack -- Executing [zap2dahdi@macro-dial-one:2] Set("DAHDI/1-1", "NEWDIAL=") in new stack -- Executing [zap2dahdi@macro-dial-one:3] Set("DAHDI/1-1", "LOOPCNT2=1") in new stack -- Executing [zap2dahdi@macro-dial-one:4] Set("DAHDI/1-1", "ITER2=1") in new stack -- Executing [zap2dahdi@macro-dial-one:5] Set("DAHDI/1-1", "THISPART2=DAHDI/4") in new stack -- Executing [zap2dahdi@macro-dial-one:6] ExecIf("DAHDI/1-1", "0?Set(THISPART2=DAHDIDI/4)") in new stack -- Executing [zap2dahdi@macro-dial-one:7] Set("DAHDI/1-1", "NEWDIAL=DAHDI/4&") in new stack -- Executing [zap2dahdi@macro-dial-one:8] Set("DAHDI/1-1", "ITER2=2") in new stack -- Executing [zap2dahdi@macro-dial-one:9] GotoIf("DAHDI/1-1", "0?begin2") in new stack -- Executing [zap2dahdi@macro-dial-one:10] Set("DAHDI/1-1", "THISDIAL=DAHDI/4") in new stack -- Executing [zap2dahdi@macro-dial-one:11] Return("DAHDI/1-1", "") in new stack -- Executing [dstring@macro-dial-one:9] GotoIf("DAHDI/1-1", "1?doset") in new stack -- Goto (macro-dial-one,dstring,13) -- Executing [dstring@macro-dial-one:13] Set("DAHDI/1-1", "DSTRING=DAHDI/4&") in new stack -- Executing [dstring@macro-dial-one:14] Set("DAHDI/1-1", "ITER=2") in new stack -- Executing [dstring@macro-dial-one:15] GotoIf("DAHDI/1-1", "0?begin") in new stack -- Executing [dstring@macro-dial-one:16] ExecIf("DAHDI/1-1", "0?Return()") in new stack -- Executing [dstring@macro-dial-one:17] Set("DAHDI/1-1", "DSTRING=DAHDI/4") in new stack -- Executing [dstring@macro-dial-one:18] Return("DAHDI/1-1", "") in new stack -- Executing [s@macro-dial-one:27] GotoIf("DAHDI/1-1", "0?nodial") in new stack -- Executing [s@macro-dial-one:28] GotoIf("DAHDI/1-1", "0?skiptrace") in new stack -- Executing [s@macro-dial-one:29] GosubIf("DAHDI/1-1", "0?ctset,1():ctclear,1()") in new stack -- Executing [ctclear@macro-dial-one:1] NoOp("DAHDI/1-1", "Deleting: CALLTRACE/113 ") in new stack -- Executing [ctclear@macro-dial-one:2] Return("DAHDI/1-1", "") in new stack -- Executing [s@macro-dial-one:30] Set("DAHDI/1-1", "D_OPTIONS=Ttr") in new stack -- Executing [s@macro-dial-one:31] GosubIf("DAHDI/1-1", "0?func-set-sipheader,s,1(Alert-Info,)()") in new stack -- Executing [s@macro-dial-one:32] ExecIf("DAHDI/1-1", "1?Set(CHANNEL(musicclass)=default)") in new stack -- Executing [s@macro-dial-one:33] GosubIf("DAHDI/1-1", "0?qwait,1()") in new stack -- Executing [s@macro-dial-one:34] Set("DAHDI/1-1", "__CWIGNORE=") in new stack -- Executing [s@macro-dial-one:35] Set("DAHDI/1-1", "__KEEPCID=TRUE") in new stack -- Executing [s@macro-dial-one:36] GotoIf("DAHDI/1-1", "0?usegoto,1") in new stack -- Executing [s@macro-dial-one:37] GotoIf("DAHDI/1-1", "1?godial") in new stack -- Goto (macro-dial-one,s,42) -- Executing [s@macro-dial-one:42] Macro("DAHDI/1-1", "dialout-one-predial-hook,") in new stack -- Executing [s@macro-dialout-one-predial-hook:1] MacroExit("DAHDI/1-1", "") in new stack -- Executing [s@macro-dial-one:43] Dial("DAHDI/1-1", "DAHDI/4,,Ttrb(func-apply-sipheaders^s^1)") in new stack -- DAHDI/4-1 Internal Gosub(func-apply-sipheaders,s,1) start -- Executing [s@func-apply-sipheaders:1] NoOp("DAHDI/4-1", "Applying SIP Headers to channel") in new stack -- Executing [s@func-apply-sipheaders:2] Set("DAHDI/4-1", "SIPHEADERKEYS=") in new stack -- Executing [s@func-apply-sipheaders:3] While("DAHDI/4-1", "0") in new stack -- Jumping to priority 7 -- Executing [s@func-apply-sipheaders:8] Return("DAHDI/4-1", "") in new stack == Spawn extension (from-internal, 113, 1) exited non-zero on 'DAHDI/4-1' -- DAHDI/4-1 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL= -- Called DAHDI/4 -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- DAHDI/4-1 is ringing -- Hanging up on 'DAHDI/4-1' -- Hungup 'DAHDI/4-1' == Spawn extension (macro-dial-one, s, 43) exited non-zero on 'DAHDI/1-1' in macro 'dial-one' == Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'DAHDI/1-1' in macro 'exten-vm' == Spawn extension (ext-local, 113, 2) exited non-zero on 'DAHDI/1-1' -- Executing [h@ext-local:1] Macro("DAHDI/1-1", "hangupcall,") in new stack -- Executing [s@macro-hangupcall:1] ExecIf("DAHDI/1-1", "0?Set(CDR(recordingfile)=.wav)") in new stack -- Executing [s@macro-hangupcall:2] GotoIf("DAHDI/1-1", "1?theend") in new stack -- Goto (macro-hangupcall,s,4) -- Executing [s@macro-hangupcall:4] ExecIf("DAHDI/1-1", "0?Set(CDR(recordingfile)=)") in new stack -- Executing [s@macro-hangupcall:5] Hangup("DAHDI/1-1", "") in new stack == Spawn extension (macro-hangupcall, s, 5) exited non-zero on 'DAHDI/1-1' in macro 'hangupcall' == Spawn extension (ext-local, h, 1) exited non-zero on 'DAHDI/1-1' -- Hanging up on 'DAHDI/1-1' -- Hungup 'DAHDI/1-1'
Остальные ошибки пропали.
Судя по логам входящий звонок из города переадресуется на ext113
Действительно заработало. Дополнительно на вход прикрутил IVR с голосовым приветствием. Спасибо всем отвечающим. Еще вопрос: на карте свободных FXO ещё свободных 2 порта. Как их завернуть на вход, чтобы неважно на какую городскую линию пришел звонок, важно чтобы эти звонки независимо друг от друга одновременно направлялись на входящую маршрутизацию. Как астер делит на аналоговой карте номер порта. В настройках DAHDI каждому порту присвоен from-trunk группа 0.
Ещё хотелось бы прикрутить ext исходящую маршрутизацию. Пробовал создавать исходящее правило, но с префиксами так пока ещё не разобрался.
1. Начал настраивать ip телефоны по протоколу IAX2, никак не могу понять - между IAX2 нет слышимости. С FXO на IAX2 звонки и слышимость нормально, при попытке позвонить с IAX2 на FXO после соединения с абонентом продолжают идти длинные гудки. Если заводить телефоны по SIP, то проблем никаких.
2. Как настроить группы доступа с ext на FXO, кому можно звонить в город, кому нет. Сейчас все абоненты ext могут звонить в город.
Не страдать .... настраивать по SIP Надо прописывать разрешение кому звонить в исходящем маршруте - вот для 105 _________________ платный суппорт по мере возможностей
Ещё вопросик: как отключить попытки определения номера астером? Опция определитель номера не оплачивается оператору связи, не хотелось бы "гонять" аппаратуру АОН оператора связи.
Решил объеденить Asterisk с платой OpenVox (3 - FXO и 1 - FXS) c Panasonic KX-TA616 (4CO, 16SLT). Отсоединил городскую линию от TA616, подключил к 1port-FXO Openvox, настроил маршрутизацию входящую, исходящую, ivr для соединения с внутренними sip ext - все работает. Теперь пытаюсь объеденить Астер с Панасоником. Вообщем подключил я 4port FXS Openvox к CO линии TA616. Теперь если с телефонов миниАТС 616 попытаться выйти в город, слышно приветствие IVR Астера. Как сделать отдельно выход c TA616 отдельно на абонентов sip Астера и в город через тот-же Астер. Что-то мне подсказывает что нужно отдельный входящий маршрут для TA616 и еще один исходящий для города. Сейчас sip телефоны выходят в город через 8.
Я этот вопрос задал ещё в связи с тем что после перехода на актуальную версию Asterisknow исчезли некоторые настройки в gui во входящей маршрутизации. Обновление решило проблему с ошибками подключения астера к бд. Раньше во входящих можно было выбрать номер канала устройства (у меня было доступно каналов FXO=3, т.к. один разъем занят модулем FXS) Сейчас выбор порта во входящей отсутствует, что немного сбивает с толку.
Нужно чтобы при входящем наборе с Панасоника на порт №4 Openvox Астера маршрутизация шла не на IVR, а хотя-бы на ожидание донабора (8495) чтобы набор номера уходил на порты 1-3FXO того-же OpenVox в итоге на медь МГТС.
см. CLI и включайте голову-ручки - вам в custom-файлы, а не терроризм вопросами тут в форуме _________________ P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16 Не люблю gui-сборки: натуральный продукт вкуснее. И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Спасибо за ответ. Но похоже ответ из оперы: Вам ipfw настроить? Тогда Вам в консоль! Всегда считал что форум нужен реально для помощи в настройке, ну как минимум отправить к названию команды, а не из разряда: Вам в платный саппорт, или учите матчасть, или Вам в консоль! Поверьте, я не боюсь консоли, но если вопрос уже содержит в себе часть ответа, то и ответ видимо должен нести в себе какую-то смысловую часть. Соответственно если ко мне обращаются за помощью, я не скуплюсь на советы (направить почитать, проанализировать проблему), а если есть время то помогаю и делом, потому-как знаю: сегодня ты помог, завтра тебе.
Неужели прописать несколько правил в Астере дороже чем купить ip-телефоны? Сейчас уже обсуждаем то что имеем. Хочется не ломать действующую систему а интегрировать. 1порт в OpenVox FXS дороже ip-телефона? Кстати, таких станций 2 в 2х разных зданиях. В идеале разве реализация 2 железок типа Linksys на 4 FXS 1 RJ45 (voip gateway) на каждые 4 CO порта Panasonic в связке с астером не будет выгоднее, чем 24+16=40ip телефонов?
Сейчас уже обсуждаем то что имеем. Хочется не ломать действующую систему а интегрировать.
Это основная ошибка начинающих. Я понимаю, когда среднего размера гибриды - там есть реальная экономия и необходимость плавного перехода, а в небольших аналоговых - именно ВЫБРАСЫВАТЬ АНАЛОГ. Привязывание Астера сбоку - никогда до добра не доводило. В реальности в SOHO/Small business панас войну проиграл и ушел.
Вы сделаете и гимор сотрудникам - нужно будет через префиксы всякие звонить, нет никаких прелестей современной телефонии как то CallerID и маршрутизация в зависимости от него и прочее и прочее и прочее...
Цитата:
1порт в OpenVox FXS дороже ip-телефона?
Даже дешевенький ip-телефон уделывает FXS - там нет АНАЛога!!
Кстати Ваш покорный слуга в 2008 году стал поклонником Астериск именно по той же самой причине: мы занимались чисто разработкой ПО для E1 сетей, у нас стоял TEM824, в офисе все телефоны гурьбой звонили - это всем мешало. Решить более продвинуто этот вопрос на той УПАТС возможности не было.. Астер сначала поставили "сбоку" через FXO - но быстро поняли что эта полумера только всё усложняет, выкинули старую АТС: в офисе стала ТИШИНА, но все по-прежнему могли до нас дозвониться, более того - дальше открыли второй офис и не ломали голову как и чего мудрить.. После этого мы уже придумали и свой Asterisk-based продукт, показывали на Astricon-2010 наш Alvis, тогда еще Alvis-PBX На фотке - наш стенд Astericon-2010, еще под флагом OdinTS. На столе кстати - никому тогда не известные тогда телефоны Yealink (одна из первых моделей). Еще тогда у нас был FreePBX на борту, сейчас уже history) Вот и думаешь теперь - а что бы было, если бы тогда в 2008м удалось так донастроить тот аналог))))))
Мой Вам совет - начните изучать Будущее Телефонии, выкидывайте нахрен это старье - и потом не будете жалеть!!! _________________ http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK! NEW! Alvis-GW-2E1-L по 29500р, спеши! цены
С большим интересом прочитал, знаю про неудобства. Но есть несколько но:
1. Бюджет на телефонизацию крохотный. Тем сотрудникам у кого сейчас есть "средство связи" upgrade делаться пока что не будет. Так что быстро и красиво точно не будет. 2. По мере роста ip-телефонов приходится отрывать городские линии от миниАТС Panasonic. (как его перепрограммировать я разобрался, отключаю от 9 освободившиеся CO) т.к. опять же см. п.1 Учитывая изложенное так или иначе придется временно делать "привязку сбоку", чтобы все телефоны как минимум выходили в город через Астер.
Mike128, про бюджет - это очень условно. Обычно просто IT-служба не может внятно объяснить владельцам бизнеса преимущества новой телефонии - это отдельная тема) Просто возьмите в бухгалтерии распечатку расходов на телефонную связь по месяцам - межгород, звонки на сотовые, в филиалы (если есть) и всё встанет на свои места.
Лучше опишите внятно сам бизнес, кол-во сотрудников и нагрузку по телефонии.. Если информации мало - понаблюдайте и сделайте выводы. Ну а здесь ребята помогут с советом как оптимальнее!!
Прилагаю еще одну историческую фотку, на сей раз с Contech-2009 в Израиле, уже у нас линксисы) _________________ http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK! NEW! Alvis-GW-2E1-L по 29500р, спеши! цены
Если из городской линии приходит входящий звонок, то Астер индицирует его в логах как Unknown. Спору нет, но как его подменить на номер городской линии с которой пришел звонок?
И как сделать ограничение продолжительности звонка в и из городской линии? Нагуглил что в Asterisknow это делается через Подключения => Транки, но как конкретнее?
В плане набора где конкретно? Звонок с номером UNKNOWN приходит с fxo. Если прописать то что Вы рекомендуете в dahdi, то при звонке на этот городской номер Астер будет проговаривать голосовое сообщение что номер отключен. Да, МГТС предоставляет услугу АОН за отдельную плату. Для некоторых организаций оплачивать эту услугу не разрешается.