Настройка маршрутизации входящих звонков в FreePBX
Пошаговое руководство по настройке маршрутизации входящих звонков из разных SIP-транков в соответствующие экстеншены в FreePBX.
Как настроить маршрутизацию входящих звонков из определенных транков в определенные экстеншены в FreePBX? У меня есть 4 SIP-транка, каждый связан с отдельной SIM-картой GSM-шлюза, но все входящие вызовы приходят на один экстеншен ‘S’ вместо того, чтобы маршрутизироваться в соответствующие экстеншены.
Правильная настройка маршрутизации входящих звонков из разных SIP-транков в соответствующие экстеншены в FreePBX требует тщательной конфигурации транков, экстеншенов и правил маршрутизации. Для решения вашей проблемы с 4 SIP-транками, которые все маршрутизируются в один экстеншен ‘S’, необходимо проверить настройки каждого транка, создать индивидуальные экстеншены и настроить правила входящей маршрутизации для каждого транка отдельно. Это позволит обеспечить правильное распределение вызовов от каждой SIM-карты GSM-шлюза на соответствующие внутренние номера.
Содержание
- Основы FreePBX и маршрутизации звонков
- Настройка SIP-транков в FreePBX
- Создание и настройка экстеншенов
- Маршрутизация входящих звонков по транкам
- Решение проблем с маршрутизацией
- Оптимизация и дополнительные настройки
Основы FreePBX и маршрутизации звонков
FreePBX — это мощная система управления Asterisk, которая предоставляет удобный веб-интерфейс для настройки IP-телефонии без необходимости прямого редактирования конфигурационных файлов. Вместо сложного программирования Asterisk, FreePBX предлагает предустановленные функции через дружелюбный интерфейс, что позволяет быстро развернуть полноценную АТС. Система поддерживает различные возможности: голосовую почту, функцию “Follow Me”, группы звонков, конференции, paging, intercom, музыку на удержании и очереди звонков. Все это работает на стеке LAMPA (Linux, Apache, MySQL, PHP и Asterisk) и является модульной системой с возможностью установки плагинов из онлайн-репозитория.
Маршрутизация вызовов в FreePBX — это ключевой механизм, определяющий, куда будет направлен входящий вызов. Когда звонок поступает, система анализирует различные параметры: источник вызова (транк), номер звонящего, время суток, нагрузку на систему и другие факторы. На основе этих параметров FreePBX применяет правила маршрутизации для определения конечного экстеншена. Проблема, с которой вы столкнулись, когда все вызовы идут в один экстеншен ‘S’, типична для неправильной настройки именно этих правил маршрутизации.
Для решения вашей проблемы с 4 SIP-транками, каждый из которых должен маршрутизироваться в свой экстеншен, необходимо понять, как FreePBX обрабатывает входящие вызовы. Каждый транк должен иметь уникальную идентификацию, а система должна знать, какой экстеншен отвечает за какой транк. Это достигается через настройку входящей маршрутизации, которая связывает каждый транк с соответствующим экстеншеном через контексты и правила.
Настройка SIP-транков в FreePBX
Правильная настройка SIP-транков — это первый и самый важный шаг для решения вашей проблемы с маршрутизацией. Каждый из 4 SIP-транков, связанных с SIM-картами GSM-шлюза, должен быть настроен с уникальными параметрами, чтобы FreePBX могла их различать и правильно маршрутизировать вызовы. Давайте рассмотрим пошаговую инструкцию по настройке каждого транка.
Настройка первого транка
- Войдите в веб-интерфейс FreePBX и перейдите в раздел “Connectivity” → “Trunks”
- Нажмите “Add Trunk”
- Выберите тип “SIP Trunk”
- В поле “Trunk Name” укажите уникальное имя для первого транка, например “GSM-Trunk-1”
- В поле “PEER Details” введите параметры, предоставленные вашим провайдером или GSM-шлюзом. Обычно это выглядит так:
host=your-gateway-ip
username=your-username
secret=your-password
type=friend
disallow=all
allow=alaw
allow=ulaw
context=from-trunk
insecure=very
- В поле “User Context” оставьте значение по умолчанию
- В поле “Outbound Caller ID” можно указать номер телефона, который будет отображаться при исходящих звонках
- Сохраните настройки
Повторите этот процесс для каждого из 4 транков, используя уникальные имена: “GSM-Trunk-1”, “GSM-Trunk-2”, “GSM-Trunk-3”, “GSM-Trunk-4”. Убедитесь, что для каждого транка указаны корректные параметры подключения: хост, имя пользователя, пароль и другие специфичные для вашего GSM-шлюза настройки.
Важные параметры для настройки
- Trunk Name: Должно быть уникальным для каждого транка
- PEER Details: Содержит параметры аутентификации и подключения
- Context: Определяет, куда будут направляться входящие вызовы. Обычно используется “from-trunk”
- Type: Обычно “friend” для двусторонней связи
- Codecs: Убедитесь, что для всех транков используются одинаковые кодеки (alaw, ulaw)
После настройки всех 4 транков, перейдите в раздел “Status” → “Trunks” и проверьте их статус. Все транки должны быть в состоянии “Registered”, что означает успешное подключение к GSM-шлюзу. Если какие-то транки не регистрируются, проверьте сетевые настройки и параметры аутентификации.
Создание и настройка экстеншенов
После настройки SIP-транков следующим шагом является создание соответствующих экстеншенов для каждого транка. Экстеншен — это внутренний номер в вашей IP-АТС, на который будут поступать звонки. Для решения вашей проблемы необходимо создать 4 отдельных экстеншена, каждый из которых будет принимать звонки только от соответствующего транка.
Создание экстеншенов
- В веб-интерфейсе FreePBX перейдите в раздел “Applications” → “Extensions”
- Нажмите “Add Extension”
- Заполните поля для первого экстеншена:
- Extension: Введите внутренний номер, например “100”
- Display Name: Имя сотрудника или отдела
- User: Имя пользователя (обычно совпадает с экстеншеном)
- Secret: Пароль для SIP-регистрации
- Trunk: Укажите транк, который будет использоваться для исходящих звонков (необязательно для входящих)
- Voicemail: Включите голосовую почту при необходимости
- Сохраните настройки
Повторите этот процесс для каждого экстеншена, используя уникальные номера: 100, 101, 102, 103. Каждый экстеншен должен быть связан с одним из 4 транков через правила входящей маршрутизации.
Важные параметры для экстеншенов
- Extension: Уникальный внутренний номер
- Display Name: Имя для отображения в интерфейсе
- Secret: Пароль для SIP-регистрации
- Voicemail: Настройки голосовой почты
- User Context: Контекст пользователя (обычно “default”)
- CID Options: Опции Caller ID
После создания всех экстеншенов, перейдите в раздел “Status” → “Extensions” и проверьте, что все экстеншены успешно зарегистрированы. Теперь у вас есть 4 внутренних номера, каждый из которых готов принимать звонки от соответствующего транка.
Маршрутизация входящих звонков по транкам
Это самый важный этап настройки, который решит вашу проблему с маршрутизацией входящих звонков. На этом шаге мы свяжем каждый из 4 SIP-транков с соответствующим экстеншеном, чтобы вызовы от разных транков направлялись на разные внутренние номера.
Настройка входящей маршрутизации
- В веб-интерфейсе FreePBX перейдите в раздел “Connectivity” → “Inbound Routes”
- Нажмите “Add Inbound Route”
- Заполните поля для первого маршрута:
- Description: Описание маршрута, например “GSM-Trunk-1 to Extension 100”
- Trunk: Выберите первый транк (“GSM-Trunk-1”)
- ** DID Number**: Если у вас есть DID номер для этого транка, введите его. Если нет, оставьте пустым
- Route to: Выберите “Extension” и введите номер первого экстеншена (100)
- Сохраните настройки
Повторите этот процесс для каждого из 4 транков, создав отдельные маршруты для каждого комбинации транк-экстеншен.
Альтернативный метод: использование контекстов
Если у вас есть доступ к командной строке Asterisk, можно настроить маршрутизацию через файлы конфигурации. Это дает больше гибкости, но требует более глубоких знаний Asterisk.
- Подключитесь к командной строке Asterisk
- Откройте файл /etc/asterisk/extensions_custom.conf
- Добавьте следующие строки для каждого транка:
[from-trunk-custom]
exten => s,1,NoOp(Incoming call from trunk ${TRUNKNAME})
exten => s,n,GotoIf(${TRUNKNAME}=GSM-Trunk-1?ext-100)
exten => s,n,GotoIf(${TRUNKNAME}=GSM-Trunk-2?ext-101)
exten => s,n,GotoIf(${TRUNKNAME}=GSM-Trunk-3?ext-102)
exten => s,n,GotoIf(${TRUNKNAME}GSM-Trunk-4?ext-103)
exten => s,n,Goto(ext-100)
exten => ext-100,1,Dial(SIP/100)
exten => ext-101,1,Dial(SIP/101)
exten => ext-102,1,Dial(SIP/102)
exten => ext-103,1,Dial(SIP/103)
- Перезагрузите конфигурацию Asterisk командой
dialplan reload
Проверка маршрутизации
После настройки входящей маршрутизации, выполните следующие действия для проверки:
- Перезагрузите конфигурацию FreePBX через веб-интерфейс: “Tools” → “Apply Config”
- Проверьте логи Asterisk на предмет ошибок: “Reports” → “Asterisk Logfiles”
- Попробуйте направить тестовый вызов на каждый транк и убедитесь, что он приходит на правильный экстеншен
- Если вызовы все еще приходят на экстеншен ‘S’, проверьте настройки контекста и убедитесь, что нет глобальных правил, которые переопределяют вашу конфигурацию
Решение проблем с маршрутизацией
Если после настройки входящей маршрутизации звонки все еще приходят на один экстеншен ‘S’, необходимо провести диагностику и устранить возможные проблемы. Вот наиболее распространенные причины и способы их решения:
Проблема: Все вызовы идут в экстеншен ‘S’
Это происходит, когда система не может определить, какой именно транк отправил вызов, и использует стандартный экстеншен ‘S’. Возможные причины и решения:
- Неправильная настройка контекста транка:
- Проверьте поле “Context” в настройках транка. Должно быть “from-trunk”
- Если контекст указан неправильно, измените его и перезагрузите конфигурацию
- Отсутствие уникальной идентификации транка:
- Убедитесь, что для каждого транка указано уникальное имя в поле “Trunk Name”
- Проверьте параметры PEER Details, особенно поле “host”
- Глобальные правила маршрутизации:
- Проверьте раздел “Inbound Routes” на наличие глобальных правил, которые могут переопределять вашу конфигурацию
- Убедитесь, что у каждого маршрута есть уникальное описание и привязка к конкретному транку
Проблема: Транки не регистрируются
Если транки не регистрируются в системе, вызовы не могут быть правильно маршрутизированы:
- Неправильные сетевые параметры:
- Проверьте IP-адрес GSM-шлюза в поле “host”
- Убедитесь, что порты (обычно 5060) открыты на файрволе
- Неправильные учетные данные:
- Проверьте поля “username” и “secret” в настройках PEER Details
- Убедитесь, что пароль корректен и содержит специальные символы
- Конфликт с другими настройками:
- Проверьте, нет ли конфликтов с другими настройками SIP
- Убедитесь, что контекст не используется другими компонентами системы
Проблема: Экстеншены не принимают звонки
Если экстеншены зарегистрированы, но не принимают звонки:
- Неправильная настройка экстеншенов:
- Проверьте, что экстеншены созданы правильно и имеют уникальные номера
- Убедитесь, что пароль в поле “Secret” корректен
- Проблемы с контекстом:
- Проверьте, что контекст экстеншена совпадает с контекстом транка
- Убедитесь, что нет конфликтов между контекстами
- Проблемы с маршрутизацией:
- Проверьте настройки входящей маршрутизации
- Убедитесь, что каждый транк привязан к правильному экстеншену
Диагностические команды
Для диагностики проблем с маршрутизацией можно использовать следующие команды Asterisk:
- Просмотр текущих вызовов:
asterisk -vvvr
> core show channels
- Просмотр конфигурации транков:
> sip show peers
- Просмотр конфигурации экстеншенов:
> dialplan show
- Просмотр логов:
> core set verbose 5
> sip set debug on
Используйте эти команды для поиска проблем в реальном времени во время тестовых звонков.
Оптимизация и дополнительные настройки
После успешной настройки маршрутизации входящих звонков по транкам, можно оптимизировать систему для повышения надежности и производительности. Вот дополнительные настройки, которые могут улучшить работу вашей IP-АТС:
Настройка очередей звонков
Если вы ожидаете высокий объем звонков на определенные экстеншены, настройте очереди:
- Перейдите в раздел “Applications” → “Queues”
- Создайте новую очередь для каждого экстеншена или группы экстеншенов
- Настройте параметры очереди: максимальное количество звонков, время ожидания, стратегию распределения
- Привяжите экстеншены к очереди
Настройка группы вызовов
Для распределения звонков между несколькими сотрудниками:
- Перейдите в раздел “Applications” → “Ring Groups”
- Создайте новую группу вызовов
- Добавьте в группу экстеншены, которые должны совместно отвечать на звонки
- Настройте стратегию распределения: последовательная, одновременная, круговая и т.д.
Настройка музыкальных файлов на удержании
Улучшите пользовательский опыт, добавив музыку на удержании:
- Перейдите в раздел “Applications” → “Music on Hold”
- Загрузите музыкальные файлы или используйте предустановленные
- Настройте параметры воспроизведения: цикличность, громкость
- Привяжите музыку к очередям и группам вызовов
Настройка голосовой почты
Настройте голосовую почту для каждого экстеншена:
- Перейдите в раздел “Applications” → “Voicemail”
- Настройте параметры голосовой почты: приветствие, пароль, опции
- Настройте уведомления о новых сообщениях (email, SMS)
Мониторинг и статистика
Для отслеживания эффективности работы системы:
- Настройте систему логирования: “Reports” → “Asterisk Logfiles”
- Настройте статистику вызовов: “Reports” → “Call Detail Records”
- Используйте графики и отчеты для анализа производительности
Резервирование и отказоустойчивость
Для повышения надежности системы:
- Настройте резервирование транков: если один транк недоступен, вызовы перенаправляются на другой
- Настройте распределение нагрузки между транками
- Настройте мониторинг состояния транков и экстеншенов
Источники
- VoIP-Info Wiki — Справочник по FreePBX и настройке IP-телефонии: https://www.voip-info.org/wiki/view/FreePBX
- FreePBX Community Forums — Обсуждение проблем маршрутизации входящих звонков: https://community.freepbx.org
- Asterisk Documentation — Официальная документация по настройке контекстов и маршрутизации: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Documentation
- FreePBX Official Documentation — Руководство по настройке транков и экстеншенов: https://docs.freepbx.org
- VoIP-Info SIP Trunking Guide — Подробное руководство по настройке SIP-транков: https://www.voip-info.org/wiki/view/SIP+Trunking
Заключение
Правильная настройка маршрутизации входящих звонков из разных транков в разные экстеншены в FreePBX решает проблему, когда все вызовы приходят на один стандартный экстеншен ‘S’. Ключевые шаги включают настройку каждого SIP-транка с уникальными параметрами, создание соответствующих экстеншенов и настройку правил входящей маршрутизации для каждой пары транк-экстеншен.
Для решения вашей проблемы с 4 GSM-транками необходимо убедиться, что каждый транк имеет уникальное имя и правильно настроен, затем создать 4 отдельных экстеншена, и наконец настроить входящую маршрутизацию, связывая каждый транк с соответствующим экстеншеном. Если после этих действий проблема сохраняется, необходимо проверить настройки контекста, учетные данные транков и отсутствие конфликтов в глобальных правилах маршрутизации.
FreePBX — это веб-приложение, которое значительно упрощает настройку Asterisk через интуитивно понятный веб-интерфейс. Вместо того чтобы вручную редактировать конфигурационные файлы и писать дайлпланы, FreePBX предоставляет предварительно запрограммированные функции, доступные через дружелюбный веб-интерфейс. Это позволяет получить полностью функциональную АТС практически сразу без необходимости программирования. Система поддерживает неограниченное количество голосовых почтовых ящиков, функции “Follow Me”, группы звонков с подтверждением, конференции, paging, intercom, музыку на удержании и очереди звонков. FreePBX работает на стеке LAMPA (Linux, Apache, MySQL, PHP и Asterisk) и является модульной системой с возможностью установки плагинов из онлайн-репозитория модулей.
Для правильной маршрутизации входящих звонков из разных SIP-транков в разные экстеншены в FreePBX необходимо выполнить несколько ключевых шагов. Во-первых, убедитесь, что каждый SIP-транк правильно настроен с уникальным идентификатором. Во-вторых, создайте отдельный экстеншен для каждого транка. В-третьих, настройте входящую маршрутизацию, сопоставляя каждый транк с соответствующим экстеншеном через настройки маршрутизации входящих вызовов в интерфейсе FreePBX. Также важно проверить настройки контекста (context) и убедиться, что транки используют правильные параметры аутентификации. Если звонки все еще приходят на один экстеншен ‘S’, проверьте настройки маршрутизации и убедитесь, что нет глобальных правил, которые переопределяют вашу конфигурацию.
