Asterisk сетевые настройки

Asterisk сетевые настройки Хостинг

Asterisk – это мощное и бесплатное решение для построения собственного сервера IP-телефонии, по сути является программной Мини-IP-АТС. В этой статье разберемся как развернуть такой сервер и поговорим о его настройках.

Начинаем установку. Загрузочный экран встречает нас меню с выбором версии Asterisk, выберем версию 18, как он нам рекомендует, хотя я  больше предпочитаю 16 версию.

Asterisk сетевые настройки

Далее нам предлагают выбор режимов установки, либо с выводом по VGA, либо можно подключиться через VNC и произвести установку удаленно. Мы выберем первый вариант.

Asterisk сетевые настройки

Далее выбираем FreePBX Standart и запускаем установку . Во время установки нам предложат задать пароль root, сделаем это сразу.

Asterisk сетевые настройки

Asterisk сетевые настройки

После ввода пароля нажимаем кнопку Done в левом верхнем углу.

Дожидаемся окончания установки, в конце установщик сообщит нам об этом сообщением Complete! Нажимаем кнопку Reboot и перезагружаем сервер.

Asterisk сетевые настройки

Asterisk сетевые настройки

При первом входе в веб-интерфейс нас поприветствует FreePBX и предложит заполнить данные администратора. Заполняем под себя и нажимаем кнопку Setup System.

Asterisk сетевые настройки

Asterisk сетевые настройки

Далее будет ряд всплывающих окон информационно-рекламного характера, на всех них нажимаем кнопку Skip, пока они все не исчезнут. Увы, бесплатные продукты любят такое.

Далее нас попросят выбрать язык голосовых подсказок, которые будут выводиться в телефонную линию, а так же язык интерфейса системы. Для России выбираем в обеих случаях – Russian, или то, что вам нужно, в конце нажимаем Submit. Кстати, Asterisk имеет неплохую русскую локализацию звуковых подсказок, сделанную на профессиональной студии.

Asterisk сетевые настройки

Далее FreePBX уведомит нас о том, что активировал свой фирменный файрволл, который нам в локальной среде особо не нужен, но мы его отключать не будем, только позднее внесем в него некоторые правила.

Asterisk сетевые настройки

Нажимаем Continue, соглашаемся со стандартными настройками, в конце нажимаем красную кнопку Apply Config в правом верхнем углу, применяем параметры.

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

Asterisk сетевые настройки

Приступаем к настройке Asterisk. Для удобства можно переключить язык веб-интерфейса на русский язык, или продолжать настройку на английском. Мне больше нравится работать на английском языке, но для показа примеров буду использовать русский. Сразу скажу, что русская локализация интерфейса в FreePBX не полная и периодически нам будет попадаться непереведенный текст в интерфейсе. Чтобы написанный материал соответствовал сделанным мною скриншотам, в местах, где будет присутствовать английских текст, я буду так же ссылаться на английские названия, где по-русски – на русские. Если вы устанавливаете другую версию Asterisk, у вас возможно будет другая локализация, более подробная.

Asterisk сетевые настройки

Нажимаем снизу кнопку Save Interface, видим всплывающее окно с предупреждением, чтобы вы внимательно проверили свои сетевые настройки, нажимаем в окне Save and Apply.

Далее нажимаем справа DNS, в поле DNS Server list необходимо прописать DNS-сервер вашего маршрутизатора, или указать адреса общедоступных DNS, например Google.

Asterisk сетевые настройки

После ввода DNS, нажимаем внизу кнопку “Сохранить”.

Теперь откроем встроенный в FreePBX файрволл и внесем в него некоторые настройки. Для этого в веб-интерфейсе переходим в “Подключения – Firewall”.

Asterisk сетевые настройки

Переходим на вкладку Networks и пропишем в Network/Host вашу подсеть, в которой у вас будет работать астериск. Если подсетей несколько, указывайте все, иначе будут наблюдаться проблемы с подключением телефонов и прохождением голосового трафика. После ввода подсети, нажимайте справа зеленую кнопку с изображением плюса, подсеть добавится в исключения файрволла, далее добавляйте следующую подсеть (по необходимости). В поле Assigned Zone выбирайте по умолчанию Local (Local trusted traffic), но можете выбрать и Trusted (Excluden from Firewall)

Asterisk сетевые настройки

Нажимаем внизу кнопку “Сохранить” и далее переходим на вкладку Interfaces, видим список ваших сетевых адаптеров, скорее всего он будет один, и тут необходимо в Default Zone выбрать следующее:

  1. Если ваша сетевая карта светит напрямую в интернет и имеет белый, доступный из интернета, IP-адрес, выбираем – Internet (Default Firewall).
  2. Если ваша сетевая карта находится внутри локальной сети, за маршрутизатором, выбираем Local (Local trusted traffic).

Asterisk сетевые настройки

В конце нажимаем кнопку Update Interfaces, далее переходим в “Настройки – Установки Asterisk для SIP”.

В поле “Локальные сети” должна автоматически прописаться подсеть вашей локальной сети, если у вас есть еще подсети (например удаленных филиалов, подключенных через VPN), пропишите их здесь, нажав на кнопку “Добавить параметр адреса локальной сети”. В конце нажимаем внизу кнопку “Сохранить” и “Применить настройки” (Apply Config).

Теперь можно приступить к основной настройке астериска.

Шаг 1. Создание пула внутренних номеров (экстеншенов)

Переходим в веб-интерфейсе “Приложения – Внутренние номера”. Видим перед собой пустую таблицу, так как номеров у нас пока никаких нет. Создадим первый номер, нажимаем кнопку “Добавить новый номер” и выбираем SIP (chan_pjsip).

Asterisk сетевые настройки

Откроется форма для создания нового абонента.

Asterisk сетевые настройки

Вообще так сложилось, что внутренняя телефония еще со времен аналоговых АТС имела в себе трехзначные номера. Помните фильм “Иван Васильевич меняет профессию”, как Милославский звонил Шпаку на работу: “Стоматологическая поликлиника? Алло! Добавочный – Три Шестьдесят Две!”. Конечно в этой комбинации, которую назвал Милославский, была своя ирония, бутылка водки в те времена стоила 3 рубля 62 копейки. Но мы с вами сейчас не про цены на водку, которые были в 70е годы СССР, а про число цифр в номерах на внутренней телефонии, 362 – три цифры.

На самом же деле вы можете использовать любое количество цифр, главное здесь не допустить пересечение внутренних номеров с номерами во внешней телефонной сети, не стоит делать номер 01, 02, 03, 112 и т.д. Хотя если ваша IP-АТС будет локальная и не будет иметь выхода во внешнюю телефонную сеть, то можно создавать вообще любые номера, но все таки лучше придерживаться классики.

Я рекомендую начинать нумерацию с тройки, первым номером пусть будет 301, вторым 302 и т.д. 300 тоже можно, на него обычно вешают ресепшн или какой ни будь внутренний колл-центр.

Назначаем нашему новому абоненту номер 301, далее пишем имя абонента, либо его роль или должность. В поле “Секрет” сгенерируется пароль для данного абонента, который будет иметь неприлично длинный набор разных символов, как бы заранее нам показывают каким должен быть пароль, но мы нашу систему Asterisk светить голой задницей в интернет не планируем, поэтому пароль лучше поменять на какой ни будь более понятный и короткий, так как в некоторых IP-телефонах и IP-шлюзах возникают проблемы с авторизацией при использовании таких длинных паролей.

Asterisk сетевые настройки

Больше пока никаких параметров мы здесь указывать не будем и просто нажмем кнопку “Сохранить”.

Первый абонент у нас создан, а вверху появилась красная кнопка “Сохранить изменения” (Apply Config). Для применения изменений в Asterisk всегда надо нажимать эту кнопку, если она появилась. Можно это сделать сейчас, можно позже. Каждый раз, когда вы ее нажимаете, происходит полное применение конфигурации, которое может занять время, поэтому лучше сперва произвести несколько необходимых настроек, а уже потом нажимать кнопку, чтобы не ждать долго каждый раз.

Создадим по аналогии второго абонента с номером 302.

Asterisk сетевые настройки

Теперь, когда у нас есть два абонента, можно нажать на кнопку “Применить изменения” и проверить телефонию, попробовав позвонить от одного абонента к другому.

Для проверки звонков можно использовать приложение MicroSIP
для Windows или любой другой SIP-клиент, даже можно воспользоваться настоящим IP-телефоном или VoIP-шлюзом. Использовать MicroSIP для тестов удобно еще потому, что папку с дистрибутивом программы можно размножить и запускать несколько копий программы, одну с одним номером, другую – с другим. Лучше всего использовать Portable версию, тогда вам не нужно будет ее устанавливать, вы просто распакуете архив и создадите столько копий MicroSIP – сколько нужно.

По умолчанию в астериске, да и не только в нем, при использовании SIP применяется порт 5060/UDP. MicroSIP так же по умолчанию устанавливает подключение через этот порт. Если в дальнейшем будет нужда изменить этот порт на другой, то в настройках MicroSIP необходимо будет указывать IP астериска в таком виде – IP:PORT.

Должно получиться следующее:

Asterisk сетевые настройки

Запустим вторую копию MicroSIP с другим абонентом и попробуем позвонить от первого ко второму, в MicroSIP с номером 301 набираем номер 302 и жмем Call.

Если выскочила ошибка “Speakers and microphone both are required”, значит в вашей системе нет либо устройства вывода звука (колонок), либо устройства ввода (микрофон) и MicroSIP сообщаем нам, что без этих двух вещей поговорить по телефону не получится. Так как мы сейчас просто тестируем прохождение звонков, то в качестве микрофона (если его нет) можно использовать стерео микшер в Windows.

Если с звуковыми устройствами ввода и вывода все в порядке, то на второй MicroSIP должен прилететь звонок с определением номера и имени абонента.

Asterisk сетевые настройки

Попробуем от второго абонента позвонить первому, в MicroSIP с номером 302 набираем 301 и звоним.

Asterisk сетевые настройки

Если звонки проходят, значит связь работает. Если есть возможность поднять MicroSIP на разных компьютерах, или, например, использовать на Android-смартфоне, подключенному к вашей локальной сети по Wi-Fi, приложение Sipnetic, можно проверить голосовую связь из разных концов. В прочем, голосовую связь можно проверить и на одном компьютере, достаточно при звонке на другой MicroSIP поднять трубку и сказать что ни будь в микрофон, в колонках должны будете услышать свой голос. Главное постарайтесь поскорее завершить звонок, а то словите акустическую обратную связь (микрофонный эффект).

Читайте также:  Пройдите свой путь к более высокому рейтингу с помощью Site CMD Pathway

Если ваш голос слышен собеседнику, а его голос слышен вам – поздравляю, ваша IP-мини-АТС работает.

Шаг 2. Создание групп вызовов и очередей

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

Группа вызовов от очереди отличается тем, что распределяет звонки по всем свободным абонентам, добавленным в группу, пока кто ни будь из них не ответит на звонок. Если на звонок никто не ответит, то у звонящего по таймауту терминируется звонок (сбрасывается). Группа может принимать звонок только от одного звонящего, если на момент звонка в группу все абоненты будут заняты, то астериск сбросит абонента, или проиграет ему какое ни будь сообщение.

Очередь же держит абонента на линии до тех пор, пока один из абонентов не освободится и не ответит на звонок. При этом она имеет свойство накапливать входящие звонки, раздавая звонящим абонентам места в очереди и периодически сообщая им, на каком месте в очереди стоит их звонок (знакомая вам ситуация, когда вы пытаетесь дозвониться в какой ни будь колл-центр). Даже если включенные в очередь абоненты будут сбрасывать входящие звонки, звонящий по прежнему останется на линии и будет ждать, а абонентам периодически будут прилетать звонки от этого абонента.

Чтобы добавить пользователей в группу вызовов, переходим в “Приложения – Группы вызова” и нажмем кнопку “Добавить группу вызова”. Нам предлагается заполнить и указать различные параметры, мы затронем только несколько основных.

В поле “Номер группы вызова” указываем номер, не пересекающийся с пулом внутренних и внешних номеров. Если у вас внутренние номера начинаются на 3, то группам и очередям лучше назначать номера, начинающиеся с 4, в нашем примере группа будет иметь номер 401.

В поле “Описание группы” пишем ее название, например название отдела, чьи телефоны она будет объединять, в нашем примере будет “Отдал продаж”.

Далее в поле “Лист внутренних номеров” указываем внутренние номера абонентов, которых мы будем собирать в группу. Можно прописать номера вручную, каждый с новой строки, а можно добавить из списка “Use Quick Select”.

Дальше идет выбор стратегии обзвона, нажав на знак вопроса рядом, можно почитать что из себя представляет та или иная стратегия. Мы выберем “Звонят все”, как наиболее универсальный вариант.

В поле “Время звонка” указывается время в течение которого телефоны будут звонить, а звонящий будет находиться в ожидании вызова. По окончании заданного количества времени (максимум 300 секунд) звонок терминируется (сбрасывается), по умолчанию стоит 20 секунд.

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

В поле Play Music On Hold выбирается, что будет слышать звонящий, либо обычные гудки, либо можно выбрать музыку. Для выбора музыкального сопровождения поставьте “По умолчанию”, так звонящему будет воспроизводиться плей-лист из стандартной музыкальной библиотеки астериска (неплохая музыка, кстати).

В параметре “Назначение, если никто не ответил” выбирается действие, которое происходит по истечении таймаута, заданного в поле “Время звонка”. Самое распространенное – это Terminate Call и ниже Hungup, у звонившего абонента сбросится звонок.

Asterisk сетевые настройки

Asterisk сетевые настройки

После указания всех настроек группы, нажимаем внизу Submit и вверху Apply Config.

Asterisk сетевые настройки

Теперь, если позвонить по номеру 401, мы вместо гудков услышим музыку, а у абонентов 301 и 302 зазвонят телефоны и как только один из них поднимет трубку, астериск нас соединит. Если пройдет 20 секунд и никто трубку не возьмет, астериск нас сбросит.

Теперь создадим очередь. Для ее создания переходим в “Приложения – Очереди”, нажимаем кнопку “Добавить очередь”.

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

В поле Music on Hold Class поставим значение “По умолчанию”, а ниже выберем MoH Only. Это позволить при звонке на номер очереди вместо гудков воспроизводить музыку, загруженную в библиотеку астериска.

В поле “Назначение при неответе” как и в случае с группами, выбираем Terminate call/Hungup.

Asterisk сетевые настройки

Переходим на вкладку “Queue Agents” (Агенты очереди).

В поле “Статичные агенты” перечисляем номера внутренних телефонов абонентов, которых мы будем включать в данную очередь. В нашем случае наши два абонента – 301 и 302.

Asterisk сетевые настройки

Переходим на вкладку “Параметры времени и операторов”.

В поле Agent Timeout указываем время, в течение которого звонки из очереди будут поступать на номера абонентов включенных в очередь (операторов), можно поставить “Неограничено”, тогда звонящий на линии будет находиться до тех пор, пока ему не ответит один из операторов, либо пока он сам не сбросит звонок.

В поле “Retry” указывается промежуток времени, через который звонки из очереди будут повторно приходить на номера операторов, если он решил не поднимать трубку, или сбросил звонок. По умолчанию – 5 секунд, я обычно ставлю 30 секунд, чтобы не сводить с ума операторов очереди.

Asterisk сетевые настройки

Переходим на вкладку “Caller Announcements”.

В поле “Frequency” задается интервал, через который звонящему будет сообщаться о его позиции в очереди, я ставлю 1 минуту.

В поле “Minimum Announcement Interval” задается минимальный интервал времени, через который звонящему будет сообщаться его позиции в очереди, если его место в очереди изменилось.

В поле “Announce Position” указываем будет ли сообщаться звонящему о его позиции в очереди, “Да” или “Нет”. Я выбираю “Да”.

В поле “Announce Hold Time” указываем будет ли сообщаться звонящему о примерном времени до ответа оператора, я всегда ставлю “Нет”, но вы можете сделать по своему.

Asterisk сетевые настройки

Основные параметры очереди мы настроили. Нажимаем снизу кнопку Submit и вверху Apply Config.

Теперь если позвонить по внутреннему номеру 402, звонок уйдет операторам 301 и 302, а мы останемся на линии пока кто ни будь из операторов не освободится и не возьмет трубку.

Шаг 4. Настройка конференций

В Asterisk можно создавать комнаты конференций и назначать им свои внутренние номера. Каждый абонент сможет позвонить в такую конференцию, астериск примет его звонок, после чего сообщит сколько собеседников находится в комнате.

Для создания конференции переходим в “Приложения – Конференции”, нажмем кнопку Add.

В поле Conference Number зададим номер создаваемой конференции, в нашем примере будет 888.

В поле Conference Name указываем название конференции, в нашем примере “Общая конференция”.

Параметр Leader Wait определяет ждать ли организатора, пока он не присоединился к конференции. Если включено, конференция не начнется пока организатор не войдет в конференцию.

Параметр Leader Leave определяет завершать ли конференцию для всех участников, если организатор конференции выйдет из нее.

Параметр Music on Hold позволяет включить музыкальное сопровождение, пока в конференции находится один участник.

В строке Music on Hold Class выбирается плей-лист, в нашем случае стандартная музыка в Asterisk “По умолчанию”.

Остальные параметры трогать не будем, должно получиться следующее:

Asterisk сетевые настройки

Попробуем набрать номер конференции сперва у первого абонента, затем у второго. При подключении первого абонента, он услышит фразу “Вы являетесь первым участником конференции” и затем у него заиграет музыка. Как только подключится второй участник, музыка прекратит играть и раздастся звук присоединения к конференции нового участника.

Теперь все находящиеся в конференции абоненты могут общаться между собой.

 Шаг 5. Настройка SIP-транков для приема и совершения звонков во внешнюю телефонию

Переходим в веб-интерфейсе “Подключения – Транки”, нажимаем длинную кнопку с плюсом в начале и выбираем “Добавить SIP (chan_pjsip) транк”.

Asterisk сетевые настройки

В качестве примера будем добавлять транк от провайдера Ростелеком.

В поле “Название транка” пишем его название, в нашем примере – Rostel. В поле “Исходящий CallerID” необходимо указать ваш внешний номер в виде 74951234567. В поле “Количество каналов” указываем максимально количество каналов на входящие и исходящие вызовы, у Ростелекома на одного пользователя доступно 2 входящих и 2 исходящих канала, ставим 2. В поле “Выключить транк” ставим переключатель в положение “Нет”, чтобы транк активировался после завершения настройки. Должно получится так:

Asterisk сетевые настройки

Переходим на вкладку “pjsip Общие настройки”, заполняем данные в нижней вкладке “Общие”.

В поле “Секрет” пишем пароль пользователя в ВАТС.

В поле SIP-сервер пишем адрес вашего домена в Ростелеком ВАТС.

Порт SIP-сервера оставляем пустым, у Ростелекома он стандартный.

Если вы заполняете настройки под другого оператора и у него используется другой порт, как, например, в случае с Mango Telecom, пропишите его в поле “Порт SIP сервера”.

Транспорт оставляем UDP.

Asterisk сетевые настройки

Переходим во вкладку “Расширенный”.

В поле “От домена” снова указываем ваш домен в Ростелеком ВАТС.

В поле “От пользователя” повторяем ввод вашего пользователя в ВАТС.

В поле “Клиентский URI” прописываем следующую строку:

В поле “URI сервера” повторяем эту же строку.

Asterisk сетевые настройки

Переходим на вкладку “Кодеки” и ставим галочки на ulaw и alaw (используемые по умолчанию в Ростелеком), если у вашего оператора имеется поддержка других кодеков, отметьте их. Кодеки ulaw и alaw должны идти первыми в списке для обеспечения большей совместимости.

Asterisk сетевые настройки

Нажимаем внизу кнопку “Сохранить” и кнопку “Применить изменения” вверху.

Если вы все заполнили верно, ваш транк должен авторизоваться. Узнать о том, прошел регистрацию ваш транк на сервере Ростелекома, можно через командную строку как в самой консоли сервера, так и в веб-интерфейсе.

Чтобы узнать информацию о зарегистрированных в сети транках через веб-интерфейс, переходим в “Администратор – Командная строка Астериск” и выполняем там:

Читайте также:  Ощутите повышенную производительность с помощью Proactive HA Provider, больше нет ответа

Получаем ответ (адрес моего домена замылен), видим, что статус нашего транка – Registered.

Asterisk сетевые настройки

Можно узнать состояние и через саму консоль Linux, вводим и выполняем:

Далее вводим и выполняем:

Получаем ответ (адрес моего домена здесь тоже замылен):

Asterisk сетевые настройки

Транк добавлен в астериск и авторизован на серверах вашего провайдера.

Шаг 6. Создание входящей и исходящей маршрутизации вызовов

После того как у нас есть внутренние абоненты и подключен транк для принятия и совершения внешних вызовов, самое время заняться маршрутизацией, ибо без нее астериск не знает как принимать и как совершать звонки через внешнюю телефонную сеть.

Начнем с входящей маршрутизации и для начала разберемся как она работает. На астериск поступает входящий звонок через транк, далее астериск смотрит параметры входящей маршрутизации и далее возможно несколько распространенных сценариев:

  1. Звонок поступает сразу на несколько абонентов, которые объединены в группу вызовов, или в очередь вызовов.
  2. Звонок поступает на интерактивное меню (IVR), где звонящему проиграется приветствие, а он может сделать выбор заданных направлений с помощью тональных клавиш, или набрать добавочный номер абонента.

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

Для начала нам нужно создать аудиозапись, которая будет проигрываться звонящему в интерактивном меню. Запись можно сделать на компьютере, на смартфоне, она может быть в формате wav или mp3, астериск сам ее сконвертирует в свой формат.

Переходим в “Администратор – Записи в системе”, нажимаем кнопку “Добавить запись”, в поле Name пишем название нашей записи, например “Основное приветствие”. Затем в Upload Recording нажимаем Browse, выбираем наш аудиофайл с приветствием. Внизу, в Convert To, выбираем параметры alaw, ulaw, waw и нажимаем Sumbit и Apply Config.

Запись загружена в астериск.

Теперь создадим интерактивное меню, переходим в “Приложения – Интерактивное меню (IVR)”, нажимаем “Добавить IVR”.

Пишем название интерактивного меню, например “Основное меню”.

В поле “Уведомление” выбираем нашу запись, которую только что загрузили.

В параметре “Разрешить прямые наборы” ставим Enabled, чтобы звонящий мог набирать добавочные номера.

В параметре “Таймаут” указываем промежуток времени, который предоставляется звонящему для выполнения каких либо действий (выбрать пункт меню, или набрать добавочный), после истечения данного времени сработает параметр указанный в поле “Назначение при таймауте”, например перевод звонка на телефон секретаря, или отбой вызова.

Если включить параметр “Добавить уведомление при неверном наборе”, то звонящий будет слышать голосовое уведомление об ошибке, если он набрал неверную комбинацию.

В самом низу можно составить схему интерактивного меню, куда будет направляться звонящий при нажатии тех или иных кнопок. В нашем примере при нажатии на 1 его отправит на группу вызова “Отдел продаж”, при нажатии на 2 его отправит в очередь “Отдел продаж”, при нажатии на 3 звонок уйдет абоненту с номером 301, при нажатии на 4 звонок уйдет абоненту с номером 302.

Asterisk сетевые настройки

Можно создавать несколько интерактивных меню и пересекать их друг с другом.

Для сохранения меню нажимаем “Подтвердить”, после чего вверху нажимаем Apple Config. Интерактивное меню создано.

Теперь мы добрались до создания входящей маршрутизации. Переходим в веб-интерфейсе “Подключения – Входящая маршрутизация”, нажимаем кнопку “Добавить входящий маршрут”.

В поле “Описание” пишем название нашей входящей маршрутизации, например “Голосовое меню”, так как эта маршрутизация отправит всех звонящих на интерактивное меню, которое мы только что создали.

Внизу, в поле “Установить направление” выбираем “Интерактивное меню (IVR)” и ниже выбираем наше меню. Нажимаем “Сохранить” и “Применить изменения”.

Asterisk сетевые настройки

Теперь попробуйте позвонить на свой внешний номер транка, астериск должен будет ответить на звонок и воспроизвести вам ваше голосовое приветствие. Попробуйте понажимать кнопки 1, 2, 3, 4, проверьте как работают сценарии в интерактивном меню, потом перезвоните и попробуйте набрать добавочные 301 и 302, проверьте как уходят звонки на них.

Если астериск успешно отвечает на входящие звонки и у вас правильно отработали сценарии в IVR, значит входящая маршрутизация и интерактивное меню настроено правильно.

Теперь, когда астериск научился принимать вызовы и направлять их по нужному направлению, нам осталось настроить исходящую маршрутизацию, чтобы внутренние абоненты могли сами звонить во внешнюю телефонную сеть.

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

Переходим в “Подключения – Исходящая маршрутизация”, нажимаем кнопку “Добавить исходящий маршрут”.

Пишем название маршрута, например “Россия”, далее в поле “Последовательность транков для совпавших маршрутов” указываем наш транк.

Asterisk сетевые настройки

Переходим на вкладку “Правила набора” и вот тут нам надо указать шаблон набираемых номеров, которые астериск будет набирать в транк.

Для начала разберемся как работает исходящая маршрутизация в астериске, взглянем на таблицу:

Asterisk сетевые настройки

В поле “Совпадение маршрута” (pattern) прописывается сам шаблон номера, набор которого будет уходить в транк.

При создании шаблонов используются следующие правила ввода:

  • X
    – совпадение любой цифры от 0 – 9
  • Z
      – любая цифра от 1 до 9
  • N
    – совпадение любой цифры от 2 – 9
  • [1237-9]
    – совпадение любой цифры из набора в скобках, в том числе из указанного интервала (в данном напримере: 1,2,3,7,8,9)

Например, для совершения звонков через Ростелеком шаблон будет иметь следующий вид: 8XXXXXXXXXX

В поле “Префикс” указывается код, который абонент будет набирать в начале номера, затем этот код отбрасывается из набранного номера перед его отправкой в транк.

В поле “Приставка” указывается код, который астериск добавит к набираемому номеру перед отправкой в транк.

Так, с помощью приставок и префиксов можно производить различные конвертации набираемых номеров перед их отправкой в транк.

Для совершения городских звонков на 7-значные номера подойдет такое правило: NXXXXXX с указанием кода вашего города и кода страны в приставке.

Должна получится следующая таблица:

Asterisk сетевые настройки

Нажимаем “Сохранить” и “Применить изменения”. Пробуем позвонить на внешний номер с телефона одного из абонентов, если звонок проходит – исходящая маршрутизация настроена верно.

Заключение

На данном этапе мы с вами произвели основные настройки астериска. Ваш астериск теперь умеет принимать звонки и отвечать на них интерактивным меню, ваши абоненты могут перезваниваться между собой, переводить вызовы друг на друга (как внутренние, так и внешние), а так же звонить во внешнюю телефонную сеть.

Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье
я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.

Учитывая тот факт что библиотека chan_sip

не актуальна, будем рассматривать настройку через PJSIP
. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.

Отключение chan_sip

В файле /etc/asterisk/modules.conf

необходимо найти и убрать ;
перед строкой noload => chan_sip.so

 nano /etc/asterisk/modules.conf 
Asterisk сетевые настройки
noload chan_sip

Рассмотрим структуру Asterisk с кратким описанием конфигурационных файлов требуемых для настройки транка, пользователей, диалплана.

Структура Asterisk

Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/

. Перечислю основные файлы которые нам потребуются для начальной настройки.

  • pjsip.conf
    — файл настройки мультимедийной библиотеки PJSIP
    . В нем содержатся настройки регистрации, транков, пользователей
  • extensions.conf
    — в данном файле происходит настройка диалплана. Все параметры обработки вызова, переадресация, мелодии на удержании, настройка автосекретаря и многое другое.
  • asterisk.conf
    — основной конфигурационный файл, тут указаны пути к используемым папкам, параметры запуска Asterisk и т.д. Подробный разбор параметров данного файла есть тут
  • sip.conf
    — файл настройки устарелой библиотеки chan_sip

    . В работе его использовать не будем
  • cdr.conf
    — основные настройки ведения отчета о звонках Call Detail Record
  • rtp.conf
    — в данном файле определены настройки касательно протокола RTP (порты, поддержка ICE
    и т.д.)
  • features.conf
    — указываются параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF
    коды абонентских функций
  • modules.conf
    — в данном файле содержится информация о модулях которые необходимо загружать при старте Asterisk, либо отключить их загрузку.
  • musiconhold.conf
    — настройка параметров конфигурации музыки на удержании
  • iax.conf
    — используется для настройки соединений по протоколу IAX
    . Данный протокол как правило используется для объединения между собой двух и более АТС
  • voicemail.conf
    — детальная настройка параметров голосовой почты
  • logger.conf
    — указаны детальные параметры журналирования работы Asterisk

Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf

и pjsip.conf

Часть функций а также повторная загрузка данных из конфигурационных файлов происходит с помощью консоли Asterisk. Зайти в консоль можно так:

Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:

Полный список консольных команд с описанием можно прочитать в моей статье

Подключение пользователей

Добавление новых пользователей происходит в файле pjsip.conf

. Конфигурационный файл pjsip.conf

состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT
и AOR
которые должны быть одинаковые с заголовком SIP URI
.

Перечислю возможные типы секций:

  • ENDPOINT
    — описывает опции SIP протокола и взаимодействует с модулями AOR
    , AUTH
    и TRANSPORT
    . Раздел ENDPOINT обязательно должен быть связан с одной или несколькими секциями AOR
    . В секции ENDPOINT указываются основные параметры SIP подключения (телефон, софтфон, транк и т.п.)
  • AOR
    — расшифровывается как Address of Record

    . Данная секция указывает как связаться с ENDPOINT
    . Без AOR секция ENDPOINT не работает. Тут указывается продолжительность регистрации, соответствие голосовой почте, MWI, настройки переодичности SIP сообщений для мониторинга состояния устройства. Получая запрос на регистрацию от устройства первичная обработка идет в AOR. Происходит поиск соответствия SIP
    заголовку To
  • TRANSPORT
    — в данной секции описываются настройки транспортного уровня с использованием протоколов UDP, TCP, WebSockets
    , а также шифрование TLS/SSL
    . Одну транспортную секцию можно настроить для использования множеством точек ENDPOINT. Либо, если необходимо, создать уникальный транспортный уровень для конкретной точки
  • System
    — определяются общие системные настройки PJSIP
  • Global
    — настраиваются глобальные параметры. Возможность включение дебага, изменение строки User Agent

    , параметр поля max forwards

    и т.п.
  • AUTH
    — данная секция используется для аутентификации и содержит настройки для входящих и исходящих регистраций. С этой секцией ассоциируются ENDPOINT
    и REGISTRATIONS
    . В случае необходимости разные ENDPOINT
    и REGISTRATIONS
    могут использовать общую секцию AUTH
  • REGISTRATION
    — обычно используется для регистрации транка от провайдера
  • DOMAIN_ALIAS
    — используется для указания псевдонимов используемых доменов
  • ACL
    — секция ACL используется для контроля входящих SIP соединений
  • IDENTIFY
    — указываются IP адреса конечных точек ENDPOINT
  • CONTACT
    — можно указать короткий контакт вместо SIP URI
Читайте также:  Используются команды Zabbix-get и некоторые параметры, встроенные в Zabbix

В каждой секции есть опция type

содержащая назначение секции в общей конфигурации.

Создание первого пользователя

Создадим учетную запись нашего первого пользователя в Asterisk. Пользователь может подключаться с SIP телефона либо софтфона. Для удобства я заполняю конфигурационные файлы добавляя новые данные в конец файла. Также очень удобно удалить все и создать чистый файл для удобства чтения. Откроем файл pjsip.conf для редактирования

 nano /etc/asterisk/pjsip.conf 

В конец файла добавим информацию о новом пользователе с добавочным номером 1000
. Я всегда использую четырехзначные внутренние номера для дальнейшего возможного роста количества абонентов.

 [tr-udp]
type=transport
protocol=udp
bind=0.0.0.0
allow_reload=true
[1000]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=tr-udp
auth=auth1000
aors=1000
[auth1000]
type=auth
auth_type=userpass
password=parol
username=1000
[1000]
type=aor
max_contacts=2 

В данном пример я добавил минимально необходимую информацию о пользователе для его регистрации на сервере Asterisk. Давайте разберем подробнее что мы написали:

  • protocol
    — тип используемого протокола клиента
  • bind
    — IP адрес клиента. Можно указать конкретный IP чтобы с других адресов никто не мог использовать данную запись. Если необходимо можно задать и порт.
  • allow_reload
    — разрешить перенастройки транспортного уровня без перезагрузки Asterisk. По умолчанию без указания данного пункта с параметром true после изменения настроек необходимо рестартовать Asterisk
  • type
    — тип секции. В данном случае ENDPOINT
  • context
    — контекст диалплана. Данный параметр указывает куда будут направлены звонки приходящие на данный ENDPOINT
  • disallow
    — указывает какие кодеки необходимо запретить. В данном случае all — все кодеки
  • allow
    — кодеки разрешенные для использования. Строкой выше мы запретили все кодеки, текущей строкой разрешили только alaw
  • transport
    — указывает какую конфигурация использовать для траспорта. В нашем случае tr-udp что мы создали выше.
  • auth
    — объект аутентификации относящийся к данному ENDPOINT. В нашем случае это auth1000 дальше по файлу будет его описание
  • aors
    — объек AOR для этого ENDPOINT
  • type
    — тип используемой секции
  • auth_type
    — тип используемой аутентификации. У меня используется логин и пароль
  • password
    — пароль от учетной записи
  • username
    — логин учетной записи
  • type
    — тип секции
  • max_contacts
    — максимальное количество контактов которые могут использоваться с данной AOR

После сохранения конфигурации в файл необходимо чтобы Asterisk применила конфигурацию. Для этого зайдем в консоль

И введем команду повторной загрузки настроек из файла pjsip.conf

Asterisk сетевые настройки
pjsip reload

Теперь запустим SIP телефон и настроем учетную запись 1000
на нём. В работе я использую софтфон MicroSIP
. Он мне нравится за свою компактность и возможность работы в portable
режиме.

Asterisk сетевые настройки
Добавление пользователя 1000
Asterisk сетевые настройки
Microsip user 1000 OnLine

Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.

Создание шаблона
 ;===============Шаблон отдела маркетинга
[marketing-endpoint](!)
type=endpoint
transport=tr-udp
context=from-internal
disallow=all
allow=alaw
[pass-auth](!)
type=auth
auth_type=userpass
[two-contact-aor](!)
type=aor
max_contacts=2 

В шаблоне можно указывать все те же параметры что и при обычном создании пользователя. Я привел пример простого шаблона отдела маркетинга с указанием минимального набора настроек. Однако их может быть значительно больше, например: используемые кодеки, необходимость использования NAT, контекст, разрешенную лиюо запрещенную сеть для регистрации абонентов. В общем параметров может быль сколь угодно много, и писать все их для каждого пользователя дело не благодарное. Рассмотрим далее применение шаблона для создания пользователей.

Применение шаблона

Создадим трех пользователей отдела маркетинга с применением шаблона. Для использования шаблона необходимо справа от названия секции в круглых скобках добавить название шаблона.

 ;===============Добавочный номер 2000
[2000](marketing-endpoint)
auth=auth2000
aors=2000
[auth2000](pass-auth)
password=2000
username=2000
[2000](two-contact-aor)
;===============Добавочный номер 2001
[2001](marketing-endpoint)
auth=auth2001
aors=2001
[auth2001](pass-auth)
password=2001
username=2001
[2001](two-contact-aor)
;===============Добавочный номер 2002
[2002](marketing-endpoint)
auth=auth2002
aors=2002
[auth2002](pass-auth)
password=2002
username=2002
[2002](two-contact-aor) 

Используя шаблон мы указываем только те параметры которые хотим поменять. Все параметры не указанные нами в каждой из секций будут браться из шаблона. Можно зайти под каждый из пользователей и проверить что все получилось.

Команда для вывода пользователей зарегистрированных на сервере

Asterisk сетевые настройки
pjsip show aors
Asterisk сетевые настройки
pjsip show auths
Asterisk сетевые настройки
pjsip show endpoints
Маршрутизация вызовов

Однако, на данном этапе мы пока не можем совершать звонки. При попытке набрать любой номер будет ошибка. Для совершения звонков нам необходимо внести изменения в файл extensions.conf

— основной рабочий файл. В нем настраивается маршрутизация вызовов Asterisk. В понимании телефонии и Asterisk не исключение это называется DIALPLAN
.

Структура файла extensions.conf

Файл имеет две обязательные секции general
и globals
. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.

  • static
    — когда установлено значение no или не указано pbx_config

    перезапишет данный файл когда extensions будет изменен. Все комментарии в этом файле будут потеряны
  • writeprotect
    — если параметр static

    имеет значение yes

    , а параметр writeprotect=no

    то можно сохранить настройки диалплана через командную строку Asterisk «dialplan save»
  • autofallthrough
    — в случае когда параметр имеет значение yes

    и параметры вашего диалплана исчерпали возможности к дальнейшему действию, звонок будет завершен. Это происходит по умолчанию. Если значение будет no или не указано Asterisk будет ожидать действия от пользователя.
  • extenpatternmatchnew
    — установив параметр в значение true

    или yes

    будет использоваться новый алгоритм который будет искать лучшее совпадение паттерна. Увеличение скорости обработки по новому алгоритму повышается с увеличением количества обрабатываемых добавочных номеров. По умолчанию данный параметр отключено. Включайте на свой страх и риск.
  • clearglobalvars
    — если задан параметр clearglobalvars

    , глобальные переменные будут очищены и повторно обработаны при перезагрузке диалплана или перезапуска Asterisk. Когда параметр не установлен или имеет значение no глобальные переменные будут сохраняться при перезагрузке и даже при удалении из extensions.conf или одного из включенных в него файлов, будет использоваться предыдущее значение.

В Asterisk могут использоваться как глобальные переменные

так и переменные канала

. Есть еще переменные окружения

, они обеспечивают доступ из Asterisk к переменным окружения unix.

 [globals]
MSK_time=08:00-19:00
MSK_week=mon-sat
RECEPTION=PJSIP/3010 

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

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

 [from-internal]
exten = 1000,1,Dial(PJSIP/1000) 
Процесс вызова

Совершая вызов абонент будет искать в своем контексте правила набора указанного номера. В каждом контексте может быть большое количество добавочных номеров. К набираемому добавочному номеру правила применяются последовательно.

Формат записи такой: exten = имя,приоритет,приложение(параметры)

Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload

 [from-internal]
exten = 1000,1,Answer() ; Поднимаем трубку
exten = 1000,2,Playback(demo-congrats)	; Проигрываем приветственное сообщение
exten = 1000,3,Dial(PJSIP/1000)	; Звоним на номер 1000 

При звонке на 1000
мы поднимаем трубку, проигрываем приветствие и последним действием будет звонок на добавочный 1000
. Можно написать и так:

 [from-internal]
exten = 1000,1,Answer()
exten = 1000,n,Playback(demo-congrats)
exten = 1000,n,Dial(PJSIP/1000) 

Приоритет можно заменить буквой n
но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.

 [from-internal]
exten = 1000,1,Answer() same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000) 

Используя same
вместо exten
можно не писать в каждой строке добавочный 1000
. Но как и в случае с n
в первой строке указывать exten
обязательно.

Системные добавочные номера

  • s
    — при поступлении вызова в контекст, без указанного добавочного номера используют номер s
    (от слова start
    )
  • i
    — в случае когда абонент набирает не существующий добавочный номер вызов переходит на добавочный номер i
  • t
    — когда абонент долго не нажимает кнопку после запуска приложения WaitExten()

    вызов переходит на добавочный номер t
    . Время ожидания по умолчанию — 10 секунд
  • h
    — добавочный используемый при завершении вызова, когда уже закрылся медиаканал

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

Шаблоны номеров

Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _

  • X
    — цифра от 0 до 9
  • Z
    — любая цифра от 1 до 9
  • N
    — любая цифра от 2 до 9
  • .
    — любой символ
  • [184-7]
    – цифры 1,8,4,5,6,7

Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:

 [from-internal]
exten = _XXXX,1,Dial(PJSIP/${EXTEN}) 
Вложение контекстов

Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.

 [from-internal]
include=long
exten = _XXXX,1,Dial(PJSIP/${EXTEN})
[long]
exten => _X.,1,Dial(PJSIP/${EXTEN}@sipnet) 

В контексте from-internal
сначала будет обрабатываться шаблон _XXXX
затем вложенный контекст include=long

Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду

dialplan show

 

Asterisk сетевые настройки
dialplan show
Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера Asterisk сетевые настройки SIPNET
. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в
pjsip.conf

Настройка внешнего провайдера

Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf

Открываем файл pjsip.conf

 nano /etc/asterisk/pjsip.conf 

Добавляем в конец файла регистрацию транка провайдера

 [sipnet]
type=registration
transport=tr-udp
outbound_auth=sipnet
server_uri=sip:sipnet.ru
client_uri=sip:0042095477@sipnet.ru
retry_interval=60
[sipnet]
type=auth
auth_type=userpass
password=пароль
username=0042095477
[sipnet]
type=aor
contact=sip:sipnet.ru:5060
[sipnet]
type=endpoint
transport=tr-udp
context=from-sipnet
disallow=all
allow=alaw,ulaw
outbound_auth=sipnet
aors=sipnet
from_user=0042095477
from_domain=sipnet.ru
[sipnet]
type=identify
endpoint=sipnet
match=sipnet.ru 

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

После добавления новых данных в файл не забываем зайти в консоль asterisk и перечитать конфиги

Настроим входящую маршрутизацию

Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET

 nano /etc/asterisk/extensions.conf 

Вставим следующий текс в конец файла

 [from-sipnet]
exten = s,1,Answer() same = n,Wait same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000&PJSIP/2000) 

Я создал контекст from-sipnet
указанный ранее при создании ENDPOINT
sipnet

. При поступлении входящего вызова ( s
-без доб номера) поднимать трубку, ожидать 5 секунд ( Wait

) затем проиграть приветственное сообщение. После окончания приветствия звонить одновременно на 2 добавочных 1000
и 2000
.

Приветственное сообщение записать самим в формате wav

с параметрами 8кГц, 16 Бит, Моно
запись скинуть в папку и указать к ней путь, например

 Playback(/opt/sound/my_sound) 

Можно добавить обработку входящего вызова по времени.

 [from-sipnet]
exten = s,1,Answer() same = n,Wait same = n,GotoIfTime(08:00-18:00|mon-fri|*|*?work:outwork) same = n(work),Playback(/opt/work_music) same = n(work),Dial(PJSIP/1000&PJSIP/2000) same = n(outwork),Playback(/opt/outwork_music) same = n,Hangup() 

В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime

будет переход на метку work

. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork

.

На данном этапе мы создали обработку внутренних вызовов, входящих и исходящих внешних (городских) вызовов. В тестовом аккаунте проверить исходящие вызовы можно позвонив по телефону техподдержки
2009991

Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.

https://youtube.com/watch?v=OIbM-TxDPig%3Ffeature%3Doembed

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
Оцените статью
Хостинги