Спасибо Деду. Очень.
Правильно прочитав мантры и прописав extension я получил работаюшие FXS-порты.
Теперь новый вопрос в процессе работы над * у заказчика.
На плате кроме FXS-портов имеются еще и столько же( 12) FXO-портов.
Часть из них должна быть включена в аналоговые GSM-шлюзы ( FXS-выход), часть - в аналоговые порты городского оператора ( причем, в пульсовом наборе). Попробовал через GUI-интерфейс создатьтранки в эти FXO-порты и столкнулся с неприятной проблемой на GCS-шлюзах. Для софтфонов ( X-Lite) и обычных юзеров на FXS-портах прописано правило дозвона через GSM-шлюз в виде транка. Вот куски из extensions.conf:
из Global
trunk_6 = DAHDI/trunk_6
[CallingRule_MTS_050]
exten = _8050.,1,Macro(trunkdial-failover-0.3,${trunk_6}/3${EXTEN:0},,trunk_6,)
А это - куски extensions.conf, созданные GUI-шным интерфейсом:
[macro-trunkdial-failover-0.3]
exten = s,1,GotoIf($[${LEN(${FMCIDNUM})} > 6]?1-fmsetcid,1)
exten = s,2,GotoIf($[${LEN(${GLOBAL_OUTBOUNDCIDNAME})} > 1]?1-setgbobname,1)
exten = s,3,Set(CALLERID(num)=${IF($[${LEN(${CID_${CALLERID(num)}})} > 2]?${CID_${CALLERID(num)}}:)})
exten = s,n,GotoIf($[${LEN(${CALLERID(num)})} > 6]?1-dial,1)
exten = s,n,Set(CALLERID(all)=${IF($[${LEN(${CID_${ARG3}})} > 6]?${CID_${ARG3}}:${GLOBAL_OUTBOUNDCID})})
exten = s,n,Goto(1-dial,1)
exten = 1-setgbobname,1,Set(CALLERID(name)=${GLOBAL_OUTBOUNDCIDNAME})
exten = 1-setgbobname,n,Goto(s,3)
exten = 1-fmsetcid,1,Set(CALLERID(num)=${FMCIDNUM})
exten = 1-fmsetcid,n,Set(CALLERID(name)=${FMCIDNAME})
exten = 1-fmsetcid,n,Goto(1-dial,1)
exten = 1-dial,1,Dial(${ARG1})
exten = 1-dial,n,Gotoif(${LEN(${ARG2})} > 0 ?1-${DIALSTATUS},1:1-out,1)
exten = 1-CHANUNAVAIL,1,Dial(${ARG2})
exten = 1-CHANUNAVAIL,n,Hangup()
exten = 1-CONGESTION,1,Dial(${ARG2})
exten = 1-CONGESTION,n,Hangup()
exten = 1-out,1,Hangup()
При попытке набора номера с кодом 8050. выдаются вот такие грабли в консоли *:
-- Executing [8050xxxxxxx@DLPN_Office:1] Macro("SIP/302-b6b0a518",
"trunkdial-failover-0.3,DAHDI/trunk_6/38050xxxxxxx,,trunk_6,") in new
stack
-- Executing [s@macro-trunkdial-failover-0.3:1]
GotoIf("SIP/302-b6b0a518", "0?1-fmsetcid,1") in new stack
-- Executing [s@macro-trunkdial-failover-0.3:2]
GotoIf("SIP/302-b6b0a518", "0?1-setgbobname,1") in new stack
-- Executing [s@macro-trunkdial-failover-0.3:3]
Set("SIP/302-b6b0a518", "CALLERID(num)=") in new stack
-- Executing [s@macro-trunkdial-failover-0.3:4]
GotoIf("SIP/302-b6b0a518", "0?1-dial,1") in new stack
-- Executing [s@macro-trunkdial-failover-0.3:5]
Set("SIP/302-b6b0a518", "CALLERID(all)=") in new stack
-- Executing [s@macro-trunkdial-failover-0.3:6]
Goto("SIP/302-b6b0a518", "1-dial,1") in new stack
-- Goto (macro-trunkdial-failover-0.3,1-dial,1)
-- Executing [1-dial@macro-trunkdial-failover-0.3:1]
Dial("SIP/302-b6b0a518", "DAHDI/trunk_6/38050xxxxxxx") in new stack
[Aug 10 17:48:16] WARNING[23655]: chan_dahdi.c:9532 dahdi_request:
Unable to determine channel for data trunk_6/38050xxxxxxx
[Aug 10 17:48:16] WARNING[23655]: app_dial.c:1518 dial_exec_full:
Unable to create channel of type 'DAHDI' (cause 0 - Unknown)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [1-dial@macro-trunkdial-failover-0.3:2]
GotoIf("SIP/302-b6b0a518", "0 > 0 ?1-CHANUNAVAIL,1:1-out,1") in new
stack
-- Goto (macro-trunkdial-failover-0.3,1-out,1)
-- Executing [1-out@macro-trunkdial-failover-0.3:1]
Hangup("SIP/302-b6b0a518", "") in new stack
== Spawn extension (macro-trunkdial-failover-0.3, 1-out, 1) exited
non-zero on 'SIP/302-b6b0a518' in macro 'trunkdial-failover-0.3'
== Spawn extension (DLPN_Office, 8050xxxxxxx, 1) exited non-zero on
'SIP/302-b6b0a518'
(Attempt #9)
Пробовал тупо вместо макроса trunkdial звонить прямо в FXO-порт такой вот строкой:
exten = _8050.,1,Dial(DAHDI/18-1/3${EXTEN:0})
или
exten = _8050.,1,Dial(DAHDI/18/3${EXTEN:0})
В этом случае DAHDI не понимает, кого из портов я имею в виду под номером 18.
Подскажите, pls, где надо поправить ошибки?
ded:
Какой контекст для внутренних юзверей у вас? Покажите.
Какой контекст объявлен для (каналов) портов FXS?
Да какой бы не был, если к примеру внутренние номера 1ХХ, и под FXS отвели допустим с 121 по 150 (условно), то в этом контексте
exten => _12Z,1,Dial(DAHDI/${EXTEN:2}) ; это нам даёт первые 9 каналов, и этой строкой мы звоним между ними (но не SIP юзерам!)
дальше может полегче будет?