FreePBX: Настройка Транка, входящих исходящих вызовов. Работа над ошибками.


После настройки внутренних номеров, групп и очередей можно позаботиться о настройки входящих, исходящих вызовах и самом транке через который будут совершаться вызовы.
В моем случае работа транка будет осуществляться через FXO шлюз DAG 1000-8O и как следствие его настройка будет отличаться от конфигурации необходимой для настройки Транка предуготовляемыми операторами IP телефонии. Настройку самого шлюза будем затрагивать в отдельной статье, на нем заострять внимание сильно не будем. так же по ходу настройки Asteriska пришлось провести работу над ошибками, их мы так же разберем в данной статье.



Начнем с настройки Транка. Разберем настройки, которые видим на первой
вкладке при входе в Connectivity -> Trunks -> Add SIP Trunk:
Вкладка General:
  • Trunk Name - Название транка
  • Hide CallerID - Опция скрытия CID при исходящем вызове
  • Outbound CallerID - CID, который будет передаваться при исходящем вызове
  • CID Options - Настройки передачи CID – разрешить все, запретить иностранные и т.д
  • Maximum Channels - максимальное количество одновременных разговоров вне локальной сети
  • Asterisk Trunk Dial Options - модификация Dial options, в данном случае оставим опцию дефолтной
  • Continue if Busy - опция направления вызова на следующий транк даже если канал сообщает «BUSY» или «INVALID NUMBER»
  • Disable Trunk - опция выключения транка
Далее вкладка Dialed Number Manipulations Rules: настройка "диалплана" сейчас пропускаем данную вкладку, так как все исходящие звонки будут проходить через Outgoing routes (Исходящие вызовы) где и будут прописаны все правила набора номера.


Вкладка sip Settings:

 Outgoing - параметры исходящих вызовов.
  • Trank Name - Наименование транка
  • Peer Details:
  1. host=ip.sip.ru // адрес sip сервера провайдера на котором нам необходимо зарегистрироваться (В нашем случае в качестве него выступает DAG1000-8O) 
  2. port = 5060 // порт регистрации sip пользователя, 5060 - стандартный. 
  3. type=peer //peer - набор свойств для исходящих вызовов можно написать и friend и не назначать никакие параметры в секции Incoming (кроме register string, которая хоть и расположена во FreePBX в секции incoming настроек транка, прямой связи с ним не имеет и может существовать вообще без sip пира, хоть и нуждается в нем, для аутентификации входящего вызова, как доверенного, а не анонимного)
  4. context=from-pstn // контекст обработки входящих вызовов. Стандартный контекст входящих вызовов Freepbx для цифровых транков- from-trunk. 
  5. insecure=no // параметры аутентификации insecure=port - Проверять совпадение IP адреса, но не порта; insecure=invite - Не требовать аутентификации в инвайте (INVITE); insecure=port,invite - И то, и другое.;
Для настройки outgoing в связке с FXO шлзом этого достаточно, однако при регистрации на сервере операторов IP телефонии используются более жесткие требования авторизации, или возможно необходимы дополнительные параметры.
  1. username=ваш_sipid// логин, который выдается провайдером(ваш номер) 
  2. secret=ваш_пароль// – пароль, выданный провайдером 
  3. fromuser= ваш_sipid// логин, который выдается провайдером(ваш номер)
  4. fromdomain=sip.sun-tel.ru// Домен провайдера на котором нам необходимо зарегистрироваться
  5. qualify=yes //Посылать запросы Options = yes/no
  6. nat - задать свойства использования rport, media при работе за nat. Если не указано, будут использованы настройки из модуля
Настройка Incoming - параметры входящих вызовов.

Данная секция должна иметь уникальное название, т.к. является, в некотором роде, независимым объектом, который требует пароль (secret) и указывает путь (context), если проверка пройдена. Именно здесь я допустил первую ошибку, но об этом позже. Как и следует из названия, отвечает за входящие вызовы. Основные параметры: context и secret те же, что указаны в outgoing.

Здесь же задается строка регистрации, которая отвечает за посылку Register SIP серверу регистраций. Если вы подключаетесь к SIP серверу провайдера и требуется получать входящие вызовы, в большинстве случаев, надо посылать Register. 

Формат Register String: user[:authuser]:secret@host:port/extension
  1. user - идентификатор пользователя, используемый для SIP сервера.
  2. authuser - необязательное имя пользователя для авторизации на SIP сервере (authuser). Обычно то же, что и 'user'.
  3. secret - пароль пользователя
  4. host - имя домена или хоста SIP сервера.
  5. port - номер порта на сервере host для запросов регисрации. Если не указано, то по умолчанию - 5060.
  6. extension - Расширение для приема вызовов в Вашем Asterisk (extension). 'extension' - вставляется в SIP заголовок contact запроса на регистрацию. Этот екстеншен используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону вашего Asterisk. Данный екстеншен (расширение) будет вызван Asterisk в контексте транка ( в модуле Inbound Routes, например). Если не указывать расширение, SIP сервер провайдера сам определит вызываемый номер, обычно это значение 'user'. Если Asterisk не найдет вызываемый екстеншен в контексте транка, то будет искать расширение 'i' (invalid). К транку могут быть привязаны несколько номеров. В таком случае, лучше не указывать этот параметр. Возможно также, что SIP сервер провайдера вообще проигнорирует указанное здесь значени
Так после создания трнка необходимо заняться настройкой входящих и исходящих вызовов. Начнем с исходящих Connectivity -> Outbound route -> Add Route;

Вкладка Route Settings:
  • Route Name - Имя маршрута.
  • Route CID - В данном поле можно ввести CallerID для этого маршрута, т.е номер звонящего, который мы будем отправлять в сторону провайдера. Важно отметить, что данный CID является менее приоритетным, чем CID настроенный на SIP – транке и правилах Ring Group, Follow Me.
  • Override Extension - Yes/No: Если выбрано значение Yes, то настроенный в параметрах экстеншена Outbound CID будет игнорироваться
  • Route Password - Данная настройка позволяет запрашивать у пользователя пароль, чтобы позвонить через данный маршрут. Это достаточно полезная опция, при звонках за рубеж, однако по мне проще настроить Dial Patterns с правилами набора для каждого экстеншена.
  • Route Type - Выбрать тип маршрута: Аварийный (Emergency) или Корпоративный (Intra-Company); Аварийный (Emergency): Набор экстренных служб и прочих; Корпоративный (Intra-Company): В данном случае будет сохранена информация Caller ID в настройках Extension
  • Music On Hold - Музыка ожидания на маршруте.
  • Time Group - Временная группа. Если отмечено, то этот маршрут будет использоваться только в указанное в настройках Time Group времени.
  • Route Position - Во FreePBX 13, как и в других версиях используется приоритетность маршрутов в зависимости от его позиции. В данном пункте можно выбрать позицию маршрута относительно других.
  • Trunk Sequence for Matched Routes - Последовательность SIP – транков для отправления вызова в сторону провайдера. Если первый транк не работает, вызов будет отправлен во второй и так далее. В нашем случае он единственный.
  • Optional Destination on Congestion - Если вызов не может состоять по причине неработоспособности SIP – транков, то можно отправить вызов, например, на звуковое сообщение "В настоящее время все линии недоступны. Обратитесь в техническую поддержку".
Вкладка Dial Patterns, в которой мы будем определять формат набора номера, а так же кому разрешено набирать тот или ной формат номера.
Шаблон набора номера имеет 4 поля настройки: Prepend, Prefix, Match Pattern и CallerID.
Формат такой:
(prepend) prefix | [ match pattern / caller ID ]
Описание
  • X - Любое целое число от 0 до 9
  • Z - Любое целое число от 1 до 9
  • N -Любое целое число от 2 до 9
  • [#####] - Любое целое число в скобке. Например, перечисление – [1.2.7], или диапазон чисел –[1.2.6-9], в который попадают числа 1,2,6,7,8,9
  • .(точка) - Любой набор символов
Теперь давайте разберемся с полями, которые доступны для заполнения:
  • Prepend - Данная часть будет добавлена к номеру, перед отправкой в SIP – транк в случае совпадения шаблона.
  • Prefix - Префикс – это часть шаблона, которая будет удалена
  • Match Pattern - Набранный номер.
ВАЖНО: Asterisk ищет совпадения сопоставляя поле Prefix и Match Pattern.
CallerID - Данный звонок будет выполнен только в случае, если звонок инициирован с указанного CallerID. В данном поле можно использовать шаблоны. Полезно, если компания имеет несколько офисов с нумерацией виду 1XXX, 2XXX и так далее. 


 Вкладка Import/Export Patterns:
  • Import CSV - 
  • Export CSV -Экспорт паттернов в в виде CSV файла с заголовками: prepend, prefix, match pattern и caller id.
Вкладка Additional Settings:
  •  Call Recording -  Записывать исходящие вызовы. Если выбрано 'never' запись по запросу (on demand) недоступна. Force и Never имеют приоритет над "Yes" или "No"; Yes и No имеют равный приоритет; Если несколько Yes или No встречаются на пути вызова, самая первая установка имеет приоритет над последующими; Последующие Yes или No не переопределяют заданные ранее "Yes" или "No"; Force и Never всегда переопределяют установки заданные ранее; Force и Never всегда переопределяют друг друга. Т.е. если сначала было "Force", а затем "Never" вызов не будет записан; Force или Never переопределяют "Yes" или "No"; Yes и No не переопределяют "Force" или "Never"; Don't Care не затрагивает заданные ранее установки.
Исходящий маршрут настроен перейдя к настройке входящих маршрутов: Connectivity -> Inbound routes -> Add incoming routes
Вкладка General:
  • Description - Описание маршрута для отображения в модулях FreePBX. Используйте говорящее название, чтобы вам было легче идентифицировать маршрут среди других.
  • DID Number - Назначьте вызываемый DID номер.Оставьте пустым, для приема вызовов с любым DID. Также возможно задать шаблоны: (например: _2[345]XXXXX). Это ключевое поле, оно определяет совпадение с идентификатором вызываемого абонента, в транке.
  • CallerID Number - Назначение номера CallerID вызывающего абонента.Если задано, вызовы будут приниматься только с указанного CallerID. Оставьте пустым, если не требуется.
  • CID Priority Route - Определяет маршрут основываясь ТОЛЬКО на Caller ID, без указания номера DID. Если включено, то все звонки с этого Caller ID будут направлены в этот маршрут, даже если существуют маршруты с совпадающим DID. YesNo
  • ALERT_INFO - Данное поле подставляется текст в заголовок SIP ALERT_INFO. Используется для маркировки вызова на SIP телефоне.
  • CID name prefix - Добавляет указанный префикс к Caller ID (name). т.е.: Если добавлено «Sales, а вызов поступает от VPupkin отобразится «Sales:VPupkin» когда поступает вызов.
  • Music On Hold - Установите Музыку на удержании специфичную для данного маршрута.
  • Set Destination - Выберите пункт наведения из выпадающего списка модулей FreePBX. При выборе Ring Group, Queues, Extensions видны те объекты которые мы создавали в прошлой статье..
Вкладка Advanced:
  • Signal RINGING(Посылка КПВ) - Многие устройства или провайдеры требуют посылать RINGING (КПВ) до того, как получено ANSWER. YesNo
  • Reject Reverse Charges - Поддержка запроса вызова за счет вызываемой стороны в PRI канале. YesNo
  • Pause Before Answer - Пауза перед ответом и направлением вызова по назначению. Это бесполезно на цифровых, но может пригодиться на аналоговых линиях
Вкладка Privacy:
  • Privacy Manager - Если не получено CallerID, Privacy Manager потребует ввести номер вызывающего абонента. Если Call Screening у абонента включен, звонящему будет предложено назвать свое имя.
Вкладка Fax:
  • Detect Faxes - Параметр, который включает детектирование факса до принятия вызова. При установке параметра Yes открываются дополнительные настройки.
  • Fax Detection type - Тип линии по которой будет приниматься факс, Dahdi; NVFax; SIP;
  • Fax Ring - Звонок во время обнаружение факса, в зависимости от выбранного параметра yes/no, во время обнаружения будет проходить звонок или звонка не будет согласно уставленному времени в Fax Detection Time.
  • Fax Detection Time - Время ожидания детектирования факса в секундах.
  • Fax Destination - направление отправки факса.
Вкладка Other:

  • Call Recording -  Записывать входящие вызовы. Если выбрано 'never' запись по запросу (on demand) недоступна. Force и Never имеют приоритет над "Yes" или "No"; Yes и No имеют равный приоритет; Если несколько Yes или No встречаются на пути вызова, самая первая установка имеет приоритет над последующими; Последующие Yes или No не переопределяют заданные ранее "Yes" или "No"; Force и Never всегда переопределяют установки заданные ранее; Force и Never всегда переопределяют друг друга. Т.е. если сначала было "Force", а затем "Never" вызов не будет записан; Force или Never переопределяют "Yes" или "No"; Yes и No не переопределяют "Force" или "Never"; Don't Care не затрагивает заданные ранее установки.

Теперь когда все настроено можно сделать тестовый звонок, но как видно на видео у меня это не получилось, а значит нужно искать в чем дело и где я  мог ошибиться.

Первым делом было бы не плохо смотреть логи, но для начала я решил посмотреть CDR на наличие вызова, и ничего не увидел, а это значит что до самого вызова дело даже не дошло.

Дальше смотрим зарегистрирован ли сам Транк. Перейдя на web интерфейс DAG1000 8O, обнаружил ожидаемую надпись Unregister.

Проверя основные параметры транка, а так же отсутствие заблокированных ip адресов в fail2ban, дело дошло до логов. Зайдя в лог увидел, что Asterisk выдает ошибку связанную с неверным паролем при регистрации Транка, а именно: Registrtion from '' filed for '192.168.77.194:5060' - Wrong password. 



Не сразу понял, но дело в том что регистрация проходила с пользователя 3000, в то время как в SIP Settings настройках трака название Incoming было имя VOIP_In и как следствие не совпадение имени пользователя при авторизации. Устранив данную ошибку наткнулся на вторую.
Несмотря на то, что теперь регистрация прошла успешно при вызове АТС мне сообщила: "Данный номер не может быть вызван". Проверив логи и убедившись, что ничего странного нет, я понял что система просто запрещает мне совершеть данный вызов. Так как контроль набранных номеров в моем случае происходт в outbound route то идем и смотрим, что написано в Dial Patterns.


Моей ошибкой была запись CallerID в скобках "[100]", они ставятся когда тебе необходимо записать несколько значений, а в моем случае asterisk меня не понимал. После правки данной ошибки соединение прошло успешно.


Считаю что на этом можно закончить настройки Транка, входящих и исходящих линий. В следующей стать рассмотрим настройку IVR для входящих звонков.


Комментарии

Популярные сообщения из этого блога

FreePBX: Первоначальная настройка

FreePBX: Создание Extensions, Ring Group, Queues