Asterisk звонок с внутреннего FXS на FXO
Проблема такова .... не могу позвонить с FXS порта в который вставлен обычный телефон или с SIP на FXO порт в который вставлена телефонная линия.
Если набирать внешний номер FXO порта с FXS то в логах появляется, см. ниже, и занято сразу: а хотелось бы услышать : "Здравствуйте!" как при звонке с другого номера на внешний номер FXO
*CLI> core set verbose 10
| Code: |
| Verbosity was 1 and is now 10 *CLI> -- Starting simple switch on 'DAHDI/2-1' DTMF begin '4' received on DAHDI/2-1 ............................................................................ DTMF begin '0' received on DAHDI/2-1 DTMF begin ignored '0' on DAHDI/2-1 DTMF end '0' received on DAHDI/2-1, duration 0 ms DTMF end accepted without begin '0' on DAHDI/2-1 DTMF end passthrough '0' on DAHDI/2-1 -- Executing [494100@local_calls:1] Dial("DAHDI/2-1", "DAHDI/1/494100") in new stack -- Called 1/494100 -- DAHDI/1-1 answered DAHDI/2-1 -- Native bridging DAHDI/2-1 and DAHDI/1-1 |
А если набрать присвоенный внутренний номер FXO порта .... то соединяет и идет длинный гудок, линия свободна, как будто просто трубку подняли, ну а потом на короткие проваливается через таймаут
| Code: |
| core score set verbose 10 Verbosity is at least 10 *CLI> -- Starting simple switch on 'DAHDI/2-1' DTMF begin '1' received on DAHDI/2-1 ............................................................. DTMF end passthrough '3' on DAHDI/2-1 -- Executing [103@local_calls:1] Dial("DAHDI/2-1", "DAHDI/1") in new stack -- Called 1 -- DAHDI/1-1 answered DAHDI/2-1 -- Native bridging DAHDI/2-1 and DAHDI/1-1 |
При звонке с локального SIP картина аналогична, FXO уходит в короткие гудки
| Code: |
| *CLI> core set verbose 10 Verbosity was 1 and is now 10 *CLI> == Using SIP RTP CoS mark 5 -- Executing [103@to-pstn:1] Dial("SIP/sip100-00000000", "DAHDI/1/103") in new stack -- Called 1/103 -- DAHDI/1-1 answered SIP/sip100-00000000 |
root@asterisk:/etc/asterisk# cat dahdi_scan.conf
| Code: |
| [1] active=yes alarms=OK description=DAHDI_DUMMY/1 (source: HRtimer) 1 name=DAHDI_DUMMY/1 manufacturer= devicetype=DAHDI Dummy Timing location= basechan=1 totchans=0 irq=0 type=analog [2] active=yes alarms=OK description=Wildcard TDM410P Board 1 name=WCTDM/0 manufacturer=Digium devicetype=Wildcard TDM410P location=PCI Bus 03 Slot 09 basechan=1 totchans=4 irq=17 type=analog port=1,FXO port=2,FXS port=3,FXS port=4,FXS |
root@asterisk:/etc/asterisk# cat chan_dahdi.conf
| Code: |
| ; Span 1: DAHDI_DUMMY/1 "DAHDI_DUMMY/1 (source: HRtimer) 1" (MASTER) ; Span 2: WCTDM/0 "Wildcard TDM410P Board 1" ;;; line="1 WCTDM/0/0 FXSKS (SWEC: OSLEC)" [channels] signalling=fxs_ks ;Тип используемой каналом сигнализации echocanceller=mg2,1 ;Тип кодека эхоподавления echocancel=yes ;активация эхокомпенсатора Asterisk echotraining=yes ;обучение эхоподавления (для ускорения процесса изучения эха) cidstart=polarity ;Соблюде поляризации для правильного определения номера cid_rxgain=10.0 ;Усиление определения номера callerid=asreceived usecallerid=yes ;служит для активации возможности Caller ID hidecallerid=no ;определяет, что идентификатор вызывающего абонента не будет скрыт для исходящих вызовов transfer=yes ;Разрешение переадресации вызова с помощью рычажного переключателя callwaiting=yes threewaycalling=yes canpark=yes cancallforward=yes group=0 context=test channel => 1 ;;; line="2 WCTDM/0/1 FXOKS (SWEC: OSLEC)" signalling=fxo_ks callerid="Channel 2" immediate=no ;воспроизведение тонального сигнала готовности линии и ожидание ввода пользователя transfer=yes callwaiting=yes threewaycalling=yes canpark=yes cancallforward=yes mailbox=4002 group=5 context=local_calls channel => 2 |
root@asterisk:/etc/asterisk# cat extensions.conf
| Code: |
| [general] static = yes writeprotect = no clearglobalvars = no [globals] autofallthrough=yes [default] [test] exten => s,1,Answer() exten => s,n,Playback(welcome) exten => s,n,Dial(DAHDI/2/${EXTEN}) exten => 102,1,Dial(DAHDI/2) [local_calls] exten => _X.,1,Dial(DAHDI/1/${EXTEN}) ; для набора внешнего номера exten => 103,1,Dial(DAHDI/1) ; для набора внутреннего FXO exten => s,n,HangUp() |
Вы со 103 звоните на 102 и хотите чтобы Вы услышали Здравствуйте?
1. Вы присваиваете транку короткий номер. Астериску пофиг, все знают. А теперь вопрос: вы когда трубку обычного телефона просто поднимаете, что слышите: "Здравствуйте..." или гудок? По-моему, всё же второе. И естественно, если вы ничего не набрали, соединение сваливается по таймауту в отбой.
2. Вы хотите при звонке изнутри попадать на то же голосовое меню, что и при звонке снаружи. А ничего, что внешний звонок приходит в контекст типа [from-trunk], а внутренний - [from-internal]. И при этом второй контекст даже и не знает про голосовое меню.
3. max73 правильный вопрос задал: нафига? Позвонить на внешний номер изнутри, чтобы оттестировать IVR? Так надо вешать на тестовый экстеншн и всё.
Когда начинаешь осваивать кучу информации волей не волей начинаешь в ней путаться.
| dotprint wrote: |
| 3. max73 правильный вопрос задал: нафига? Позвонить на внешний номер изнутри, чтобы оттестировать IVR? Так надо вешать на тестовый экстеншн и всё. |
Да, хотел потестировать IVR. Вроде и повесил все на тестовый, только я не понимаю почему в мею не попадаю
Всё меню пихаем в отдельный контекст, например:
| Code: |
| [menu] exten => s,1,NoOp(Начинаем IVR) same => n,Answer() same => n,Background(privet) same => n,WaitExten(10) ну и так далее... |
Во входящем контексте пишем:
| Code: |
| [from-trunk] exten => _X.,1,NoOp(Входящий звонок) same => n,Goto(menu,s,1) |
Если нам надо тестировать IVR, то в контексте, куда имеет доступ наш внутренний телефон (например, from-internal), создаём тестовый экстеншн:
| Code: |
| exten => *100,1,NoOp(Тестовое меню) same => n,Goto(menu,s,1) |
Вот и вся любовь.