Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

FORWARDING_LOOP_DETECTED IP-Телефония и СКУД

Настройка таймаутов ответа, переадресации по занятости и Follow-Me в Asterisk

Обновлено: 24.08.2026 · Официальная документация ↗
  • Бесконечное зацикливание вызовов (Call Loop) между двумя переадресованными номерами.
  • Звонок обрывается через 20 секунд до того, как мобильный телефон сотрудника успевает зазвонить.
  • Не срабатывает перевод звонка при отклонении входящего вызова на IP-телефоне (DND / Busy).
  • Ошибки отображения CallerID звонящего при внешней переадресации через транк оператора.

1. Архитектура переадресации в диалплане

Asterisk поддерживает три основных типа переадресации:

  • CFU (Call Forward Unconditional): безусловная переадресация всех вызовов;
  • CFB (Call Forward on Busy): переадресация при занятости абонента;
  • CFNA (Call Forward on No Answer): переадресация по истечении времени ожидания (таймаута).

2. Настройка базы AstDB для динамического включения переадресации

Добавьте сервисные коды в /etc/asterisk/extensions.conf:

[from-internal]
; Включение безусловной переадресации (*72) -> Ввод номера -> Сохранение
exten => _*72X.,1,NoOp(=== Enable CFU for ${CALLERID(num)} to ${EXTEN:3} ===)
 same => n,Set(DB(CFU/${CALLERID(num)})=${EXTEN:3})
 same => n,Playback(call-fwd-unconditional)
 same => n,Playback(activated)
 same => n,Hangup()

; Отключение безусловной переадресации (*73)
exten => *73,1,NoOp(=== Disable CFU for ${CALLERID(num)} ===)
 same => n,dbDel(CFU/${CALLERID(num)})
 same => n,Playback(call-fwd-unconditional)
 same => n,Playback(de-activated)
 same => n,Hangup()

3. Логика дозвона с проверкой статусов и таймаутов

[sub-dial-user]
exten => s,1,NoOp(=== Calling User ${ARG1} ===)
 ; 1. Проверка безусловной переадресации в AstDB
 same => n,Set(CFU_TARGET=${DB(CFU/${ARG1})})
 same => n,GotoIf($["${ISNULL(${CFU_TARGET})}" = "0"]?cfu_redirect)

 ; 2. Дозвон на внутренний SIP аппарат с таймаутом 20 сек
 same => n,Dial(PJSIP/${ARG1},20,tT)
 same => n,NoOp(Dial Status: ${DIALSTATUS})

 ; 3. Анализ статуса ответа
 same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?handle_busy)
 same => n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?handle_noanswer)
 same => n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?handle_unavail)
 same => n,Hangup()

 ; Ветка занятости: перевод на мобильный номер
 same => n(handle_busy),NoOp(User Busy - Redirecting)
 same => n,Dial(PJSIP/89991112233@trunk-provider,25)
 same => n,Hangup()

 ; Ветка не ответа: перевод на голосовую почту
 same => n(handle_noanswer),NoOp(No Answer - Voicemail)
 same => n,VoiceMail(${ARG1}@default,u)
 same => n,Hangup()

 ; Переход по CFU
 same => n(cfu_redirect),NoOp(Redirecting by CFU to ${CFU_TARGET})
 same => n,Dial(PJSIP/${CFU_TARGET}@from-internal,30)
 same => n,Hangup()

4. Настройка каскадного дозвона через модуль followme.conf

В файле /etc/asterisk/followme.conf опишите профиль абонента 101:

[101]
musicclass=default
context=from-internal
takecall=1
decline=2
call-from-prompt=followme/call-from
; Сначала звоним на внутренний номер 15 секунд, затем параллельно на мобильный
number=>101,15,1
number=>89991112233@from-internal,25,2

Вызов приложения в диалплане:

exten => 101,1,Followme(101,ant)
💡 Практика специалистов: При внешней переадресации звонка на мобильные телефоны всегда отключайте передачу DTMF-переводов вызова (убирайте флаг 'T' из внешнего Dial), чтобы внешний собеседник не мог перехватить линию тональным набором.

Частые вопросы (FAQ)

Как защитить АТС от бесконечного зацикливания переадресаций (Call Loop)?

Используйте счетчик переадресаций в канале. Увеличивайте переменную Set(__FWD_COUNT=$[0${FWD_COUNT} + 1]) при каждом шаге. Если FWD_COUNT > 5, сбрасывайте вызов с сообщением об ошибке.

Почему при переадресации на мобильный телефон оператор отклоняет вызов с ошибкой 403/404?

Многие операторы запрещают передавать чужой CallerID (подмену номера). Перед вызовом внешнего транка принудительно подставьте ваш зарегистрированный городской номер: Set(CALLERID(num)=84951234567).

Чем отличается одновременный дозвон (Ringall) от каскадного Follow-Me?

Ringall звонит на все указанные телефоны одновременно. Follow-Me звонит по цепочке с задержками и запрашивает подтверждение поднятия трубки (нажмите 1, чтобы принять вызов), исключая срабатывание мобильного автоответчика.

Как проверить содержимое базы переадресаций AstDB из консоли?

Выполните команду asterisk -rx 'database show CFU', либо удалите зависшую запись вручную: asterisk -rx 'database del CFU 101'.

Полезные материалы
Рекомендуем