AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Asterisk звонок с внутреннего FXS на FXO

Newbies/FAQ Forum 9 сообщений 20.08.2011 12:24 - 02.09.2011 07:49
#1 20.08.2011 12:24

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()
#2 31.08.2011 08:10

не ужели ни кому нечто подобное не встречалось?
#3 31.08.2011 08:21

Что-то я плохо понял.
Вы со 103 звоните на 102 и хотите чтобы Вы услышали Здравствуйте?
#4 31.08.2011 16:19

понимаю что вопрос сложный, но, зачем звонить на FXO порт в внутреннего телефона?
#5 01.09.2011 06:07

По-моему, топикстартер сам запутался в том, что ему нужно. Попробую разобрать поток мысли.

1. Вы присваиваете транку короткий номер. Астериску пофиг, все знают. А теперь вопрос: вы когда трубку обычного телефона просто поднимаете, что слышите: "Здравствуйте..." или гудок? По-моему, всё же второе. И естественно, если вы ничего не набрали, соединение сваливается по таймауту в отбой.

2. Вы хотите при звонке изнутри попадать на то же голосовое меню, что и при звонке снаружи. А ничего, что внешний звонок приходит в контекст типа [from-trunk], а внутренний - [from-internal]. И при этом второй контекст даже и не знает про голосовое меню.

3. max73 правильный вопрос задал: нафига? Позвонить на внешний номер изнутри, чтобы оттестировать IVR? Так надо вешать на тестовый экстеншн и всё.
#6 01.09.2011 14:49

Большое спасибо за ответы ))))
Когда начинаешь осваивать кучу информации волей не волей начинаешь в ней путаться.

dotprint wrote:

3. max73 правильный вопрос задал: нафига? Позвонить на внешний номер изнутри, чтобы оттестировать IVR? Так надо вешать на тестовый экстеншн и всё.

Да, хотел потестировать IVR. Вроде и повесил все на тестовый, только я не понимаю почему в мею не попадаю
#7 01.09.2011 18:51

блин, чесслово, я бы не стал заморачиваться, просто позвонил бы сам себе по обычному городскомуSmile
#8 02.09.2011 06:59

в том то и дело ... что у меня был центртелекомовский номер, те .... 2 линиии .... и одна из них крякнула в пятницу вечером поэтому и возникло желание замарочится на подобное )))))
#9 02.09.2011 07:49

Разберёмся, как правильно делать 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)


Вот и вся любовь.