Я очень новичок в Asterisk, так что это, несомненно, неправильная конфигурация с моей стороны.
Прямо сейчас моя тестовая установка ведет себя следующим образом: когда я делаю входящий вызов на порт FXO на своей аналоговой карте, Asterisk отправляет вызов на аналоговый телефон через порт FXS, и он звонит. Я могу нормально ответить на звонок. Я также могу звонить с аналогового внутреннего номера на программный телефон (внутренний номер 301) и наоборот.
Однако, когда я пытаюсь позвонить, система направляет его, как если бы это входящий вызов, и звонит на аналоговый внутренний номер.
В консоли Asterisk отображаются следующие подробности ведения журнала:
-- Executing [01026@from-internal:1] Macro("SIP/301-00000005", "user-callerid,LIMIT,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/301-00000005", "AMPUSER=301") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/301-00000005", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/301-00000005", "1?Set(REALCALLERIDNUM=301)") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/301-00000005", "AMPUSER=301") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/301-00000005", "AMPUSERCIDNAME=Douglas Crole") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/301-00000005", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/301-00000005", "AMPUSERCID=301") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/301-00000005", "CALLERID(all)="Douglas Crole" <301>") in new stack
-- Executing [s@macro-user-callerid:9] GotoIf("SIP/301-00000005", "0?limit") in new stack
-- Executing [s@macro-user-callerid:10] ExecIf("SIP/301-00000005", "1?Set(GROUP(concurrency_limit)=301)") in new stack
-- Executing [s@macro-user-callerid:11] GotoIf("SIP/301-00000005", "1?continue") in new stack
-- Goto (macro-user-callerid,s,24)
-- Executing [s@macro-user-callerid:24] Set("SIP/301-00000005", "CALLERID(number)=301") in new stack
-- Executing [s@macro-user-callerid:25] Set("SIP/301-00000005", "CALLERID(name)=Douglas Crole") in new stack
-- Executing [s@macro-user-callerid:26] Set("SIP/301-00000005", "CHANNEL(language)=en") in new stack
-- Executing [01026@from-internal:2] Set("SIP/301-00000005", "MOHCLASS=default") in new stack
-- Executing [01026@from-internal:3] Set("SIP/301-00000005", "_NODEST=") in new stack
-- Executing [01026@from-internal:4] Gosub("SIP/301-00000005", "sub-record-check,s,1(out,01026,)") in new stack
-- Executing [s@sub-record-check:1] GotoIf("SIP/301-00000005", "1?check") in new stack
-- Goto (sub-record-check,s,6)
-- Executing [s@sub-record-check:6] Set("SIP/301-00000005", "__MON_FMT=wav") in new stack
-- Executing [s@sub-record-check:7] GotoIf("SIP/301-00000005", "1?next") in new stack
-- Goto (sub-record-check,s,10)
-- Executing [s@sub-record-check:10] ExecIf("SIP/301-00000005", "0?Return()") in new stack
-- Executing [s@sub-record-check:11] GotoIf("SIP/301-00000005", "0?out,1") in new stack
-- Executing [s@sub-record-check:12] Set("SIP/301-00000005", "__REC_STATUS=INITIALIZED") in new stack
-- Executing [s@sub-record-check:13] ExecIf("SIP/301-00000005", "0?Set(__REC_POLICY_MODE=)") in new stack
-- Executing [s@sub-record-check:14] Set("SIP/301-00000005", "NOW=1362573586") in new stack
-- Executing [s@sub-record-check:15] Set("SIP/301-00000005", "__DAY=06") in new stack
-- Executing [s@sub-record-check:16] Set("SIP/301-00000005", "__MONTH=03") in new stack
-- Executing [s@sub-record-check:17] Set("SIP/301-00000005", "__YEAR=2013") in new stack
-- Executing [s@sub-record-check:18] Set("SIP/301-00000005", "__TIMESTR=20130306-143946") in new stack
-- Executing [s@sub-record-check:19] Set("SIP/301-00000005", "__FROMEXTEN=301") in new stack
-- Executing [s@sub-record-check:20] Set("SIP/301-00000005", "__CALLFILENAME=out-01026-301-20130306-143946-1362573586.15") in new stack
-- Executing [s@sub-record-check:21] Goto("SIP/301-00000005", "out,1") in new stack
-- Goto (sub-record-check,out,1)
-- Executing [out@sub-record-check:1] ExecIf("SIP/301-00000005", "1?Set(__REC_POLICY_MODE=dontcare)") in new stack
-- Executing [out@sub-record-check:2] GosubIf("SIP/301-00000005", "0?record,1(exten,01026,301)") in new stack
-- Executing [out@sub-record-check:3] Return("SIP/301-00000005", "") in new stack
-- Executing [01026@from-internal:5] Macro("SIP/301-00000005", "dialout-trunk,1,01026,") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/301-00000005", "DIAL_TRUNK=1") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/301-00000005", "0?sub-pincheck,s,1()") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/301-00000005", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/301-00000005", "DIAL_NUMBER=01026") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/301-00000005", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/301-00000005", "OUTBOUND_GROUP=OUT_1") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/301-00000005", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/301-00000005", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/301-00000005", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/301-00000005", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/301-00000005", "outbound-callerid,1") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/301-00000005", "0?Set(CALLERPRES()=)") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/301-00000005", "0?Set(REALCALLERIDNUM=301)") in new stack
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/301-00000005", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/301-00000005", "USEROUTCID=301") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/301-00000005", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/301-00000005", "TRUNKOUTCID=<0117047821>") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/301-00000005", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/301-00000005", "1?Set(CALLERID(all)=<0117047821>)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/301-00000005", "1?Set(CALLERID(all)=301)") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/301-00000005", "0?Set(CALLERID(all)=)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/301-00000005", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
-- Executing [s@macro-dialout-trunk:12] GosubIf("SIP/301-00000005", "0?sub-flp-1,s,1()") in new stack
-- Executing [s@macro-dialout-trunk:13] Set("SIP/301-00000005", "OUTNUM=01026") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/301-00000005", "custom=DAHDI/g1") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/301-00000005", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default))") in new stack
-- Executing [s@macro-dialout-trunk:16] ExecIf("SIP/301-00000005", "0?Set(DIAL_TRUNK_OPTIONS=M(confirm))") in new stack
-- Executing [s@macro-dialout-trunk:17] Macro("SIP/301-00000005", "dialout-trunk-predial-hook,") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/301-00000005", "") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/301-00000005", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:19] ExecIf("SIP/301-00000005", "1?Set(CONNECTEDLINE(num,i)=01026)") in new stack
-- Executing [s@macro-dialout-trunk:20] ExecIf("SIP/301-00000005", "1?Set(CONNECTEDLINE(name,i)=CID:301)") in new stack
-- Executing [s@macro-dialout-trunk:21] GotoIf("SIP/301-00000005", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:22] Dial("SIP/301-00000005", "DAHDI/g1/01026,300,") in new stack
-- Called DAHDI/g1/01026
-- DAHDI/1-1 is ringing
-- DAHDI/1-1 is ringing
-- DAHDI/1-1 is ringing
-- Hanging up on 'DAHDI/1-1'
-- Hungup 'DAHDI/1-1'
== Spawn extension (macro-dialout-trunk, s, 22) exited non-zero on 'SIP/301-00000005' in macro 'dialout-trunk'
== Spawn extension (from-internal, 01026, 5) exited non-zero on 'SIP/301-00000005'
-- Executing [h@from-internal:1] Hangup("SIP/301-00000005", "") in new stack
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/301-00000005'
Я сгруппировал все свои FXO-порты в одну группу (1) с контекстом "from-zaptel"
Я установил DID канала Zap для порта 5 с DID 105 (канал 5 - единственный, у которого на данный момент подключена линия для тестирования)
Моя магистраль ZAP (имя = канал ZAP g1) использует идентификатор g1 и не имеет правил обработки номеров (это может быть?)
У меня настроен входящий маршрут с пустым DID и номером вызывающего абонента (перехват всех вызовов) с внутренним номером назначения 303 - это добавочный номер моего аналогового телефона.
У меня есть единственный исходящий маршрут, соответствующий шаблону 0X. (любое число с нулевым префиксом) установить для использования магистрального канала ZAP g1 (все каналы в группе 1)
Я использую дистрибутив AsteriskNOW 2.0.2 с установленным FreePBX.
Я почти исключительно использую FreePBX для внесения изменений в конфигурацию на этом этапе (просто изменил zapata.conf, как рекомендовано для настроек телефонной связи в Южной Африке.
Что ж, мне удалось решить проблему, но, к сожалению, я слишком спешил, чтобы определить, какое именно изменение настроек решило ее. Я делал разные вещи:
Где-то во время этого процесса у меня заработали исходящие и входящие звонки. Хотел бы я быть более полезным.