Asterisk. Начало

На написание этой статьи меня побудило практически полное отсутствие how-to по настройке Астериска, с понятными новичку примерами. В сети можно найти кучу информации по настройке IVR, по настройке авторизации SIP-пользователей через LDAP, мануалов по созданию HA-кластеров с Астерисками внутри, etc., но нет ни одной статьи о том, как завести его с нуля, да и еще с примерами. Практически везде предлагается сразу же использовать все возможности, которые предлагает Астериск, а если убрать часть функционала, предлагаемого в мануале, то в большинстве случаев это приведет к получению неработоспособной конструкции. Эта статья — результат хождения по граблям… чтения мануалов. Если вы находитесь в такой же ситуации, что и я пару лет назад — добро пожаловать под кат.

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

Первое что нам необходимо — сервер с установленной операционкой. По ряду причин я выбрал для своих серверов CentOS 6. Все примеры будут с привязкой к этой ОС, так как именно на ней получаются наиболее стабильные сервера. Тем не менее, я ни коим образом не пытаюсь ограничить вас выборе. Астер нормально заведется и под Debian-ом, и под Arch-ем, и даже на FreeBSD. Замечу: желательно не пользоваться гипервизорами на начальном этапе, так как вы можете получить «металлический» голос, либо его полное отсутствие. Про таймеры и прерывания расскажу в следующей статье, так как их описание и настройка выходит за рамки этой статьи. В том случае, если свободного сервера у вас нет и без виртуальной машины не обойтись, обязательно ставьте x86-го гостя.

После того, как вы установили операционку на сервер, можно приступить к установке Астериска. Добавляем репозитории Didgium:
rpm -Uvh http://packages.asterisk.org/centos/6/current/i386/RPMS/asterisknow-version-3.0.1-2_centos6.noarch.rpm
yum update

Устанавливаем dnsmasq:
yum install dnsmasq

Устанавливаем Астериск:
yum install asterisk asterisk-configs --enablerepo=asterisk-12

Важное замечание: цифра в конце строки указывает на мажорную версию Астериска. В примере будет установлена наиболее свежая версия из 12-й ветки, доступная в репозиториях.

После установки перезагружаем сервер и заходим в шелл Астериска:
asterisk -rv

Обратите внимание на ключи, c которыми запускается шелл. Количество ключей «v» влияет на количество выводимой информации при звонке, их количество варьируется от 1 до 14.

Если установка прошла успешно и Астериск запустился, вы увидите вот такое приглашение:
asterisk*CLI>

Поздравляю, Астериск установился и готов к работе. Но пока что шелл нам не нужен, поэтому пишем exit.

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

Первое что вам требуется сделать — создать пиров в файле /etc/asterisk/sip.conf. Открываем его:
nano /etc/asterisk/sip.conf

И сразу переходим в конец файла. Вставляем следующий текст:
[internal](!)
type=friend
insecure=invite,port
context=office
fromdomain=<имя домена или IP>
host=dynamic
disallow=all
allow=alaw
qualify=yes
canreinvite=no
nat=no

[100](internal)
secret=XXX
[101](internal)
secret=XXX

Мы завели двух внутренних пиров с номерами 100 и 101. Разберем эти настройки, так как их понимание — ключ к успешному внедрению Астериска.

[internal](!)

[internal], это имя шаблона, а (!) указатель шаблона.
Почему сразу начинаем использовать шаблоны? Потому что они сокращают время настройки и уменьшают количество текста с конфигурационном файле, а для понимания они очень просты.

type=friend

Доступные параметры: «peer», «user» и «friend». Очень часто встречается ошибочное мнение относительно того, чем они отличаются. Многие считают, что параметр «user» разрешает только исходящие, «peer» — только входящие звонки, а «friend» разрешает звонки в обе стороны. Это не так. Использование ключа «peer» отключает проверку соответствия имени пользователя и пароля при звонке. При использовании параметра «peer», Астериском проверяется только соответствие IP-адреса и номера порта источника вызова, при использовании «user» — проверяется поле username, а проверка адреса источника не производится. Параметр «friend» заставляет проверять поле username и IP-адрес источника.

insecure=invite,port
invite — отключается аутентификация при входящем звонке.
port — отключается проверка порта источника.

При первоначальной настройке пропишите оба ключа.

context=office

Контекст, в котором будут обрабатывается исходящие звонки от этого устройства. Подробности чуть ниже.

fromdomain=<имя домена или IP>

Имя SIP-домена. Для первоначальной настройки укажите IP адрес сервера с Астериском.

host=dynamic

IP-адрес пира. В случае использования авторизации по логину и паролю — ставьте dynamic. Конкретный IP указывается только в том случае, если настройки пира используются для транка без регистрации.

disallow=all
allow=alaw


Указываем разрешенные кодеки.

В нашем примере первая строка запрещает использование всех кодеков, а вторая — разрешает g711-a. Настройки кодеков индивидуальны для каждого случая, однако, большинство Российских и Украинских провайдеров используют g711a и g729. Последний — пропиетарный, и Астериском поддерживается лишь в Passthrough-режиме (то есть, невозможен транскодинг).

qualify=yes

Эта строка заставляет Астериск опрашивать устройство или софтфон пакетами OPTIONS. Необходим для мониторинга и траблшутинга.

canreinvite=no

Запрещает пересылать медиа напрямую между устройствами. Рекомендую ставить «no», для упрощения настройки.

nat=no

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

[100](internal)
secret=XXX
[101](internal)
secret=XXX


Тут мы задаем имя пира и берем настройки из шаблона. Единственные уникальные параметры в нашем примере — имя пира и пароль.
На этом мы закончили настраивать внутренних пиров, перейдем к настройке стыка с операторами. Добавим 2 записи в конец sip.conf:
[operator1]
fromdomain=<имя домена или IP>
host=1.2.3.4
insecure=invite,port
port=5060
qualify=yes
type=friend
username=YourLogin
secret=YourPass
disallow=all
allow=alaw
context=operator1

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

Добавим второго оператора:
[operator2]
fromdomain=<имя домена или IP>
host=5.6.7.8
insecure=invite,port
port=5060
qualify=yes
type=friend
disallow=all
allow=alaw. 
context=operator2

Отличий тоже никаких, за исключением отсутствия строк username и secret, так как, напомню, второй оператор не использует регистрацию.

Осталось настроить регистрацию на сервере оператора №1. Для этого в файле sip.conf, перед секцией описывающей настройки оператора вставим следующую строку:
register => udp://YourLogin:YourPass:YourLogin@1.2.3.4/YourLogin

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

Наверняка вы редактировали файлы конфигурации под пользователем с ограниченными правами. Если это так, то Астериск не сможет получить доступ к файлу конфигурации, поэтому пишем:
chown asterisk:asterisk /etc/asterisk/sip.conf

На этом настройка пиров закончена, ее достаточно для работы в минимальной конфигурации, сохраняем и закрываем файл и возвращаемся в шелл Астериска командой:
asterisk -rv

В шелле Астериска пишем команду:
sip reload

Теперь вы можете зарегистрировать на своем Астериске пользователей с логинами 100 и 101. Проверяется состояние регистрации следующей командой:
sip show peers

Если вы все настроили правильно, то увидите примерно вот такой вывод:
asterisk*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description
100/100                 10.0.0.52                              D  Yes        Yes            59080    OK (1 ms)
101/101                 10.0.0.57                              D  Yes        Yes            49973    OK (1 ms)
operator1           1.2.3.4                              No         No             5060     OK (22 ms)
operator2           5.6.7.8                              No         No             5060     OK (22 ms)

Если вы это видите, то, поздравляю, ваши устройства или софтфоны успешно зарегистрировались и Астериск увидел сервера операторов.

Состояние регистрации проверяется командой:
sip show registry

Если регистрация прошла успешно, то вы должны увидеть вот такой вывод:
asterisk*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
1.2.3.4:5060                       N      YourLogin               120 Registered
1 SIP registrations.

На этом настройка пиров закончена, перейдем к настройке диалплана. Диалплан — это сердце Астериска, с помощью него обрабатываются абсолютно все звонки. Астериск понимает несколько языков, но в нашем примере мы будем использовать стандартный, появившийся в самых первых релизах Астериска. Файл конфигурации хранится в файле /etc/asterisk/extensions.conf.

Откроем его командой:
nano /etc/asterisk/extensions.conf

В стандартных файлах конфигурации хранится много дефолтных правил. Они нам не нужны, поэтому очистим содержимое и пропишем следующее:
[general]
static=yes
writeprotect=no

[globals]

Это параметры необходимые для нормального чтения диалплана, поэтому менять их не следует.

Начнем с простого. Нам нужно позвонить с номера 100, на номер 101. Для этого нужно прописать правило, сразу после секции globals:
[office]
exten => _1XX,1,Dial(SIP/${EXTEN})

Разберем эту строку.
[office] — имя контекста, в котором обрабатываются звонки от пира.
exten => — указатель начала шага.
_1XX — маска. На маске остановимся чуть подробнее. С помощью нее сортируются все звонки, попадающие в контекст диалплана.

Маска использует набор паттернов для сортировки звонков по caller-id:
X – любая цифра от 0-9
N – любая цифра от 2-9
[234-6] – цифры 2, 3, 4 и 6
. – любые возможные символы

Маска начинается с символа "_", который означает что это шаблон. В случае, если вы забудете указать его, Астериск примет 1XX за вызываемый номер и передаст Dial-у паттерны вместо номера телефона, и звонок не состоится.
1 — номер действия.

Dial — это приложение. В диалплане можно использовать более 200 различных приложений, которые используются для манипуляций со звонками. Сейчас, в самом начале, мы будем использовать только одно приложение — Dial. Из названия понятно, что оно используется для совершения звонков.

(SIP/${EXTEN}) — аргументы для приложения. В нашем примере, для внутренних пиров мы используем протокол SIP, поэтому первый аргумент, который мы передаем dial-у — указывает на используемый протокол сигнализации. ${EXTEN} — текущий экстеншен, его значение берется из заголовка (из поля destination).

/ — разделитель для передаваемых аргументов.

Каждый из параметров разделяется запятыми. В нашем примере используются трехзначные номера, поэтому в маске должно быть 3 паттерна. В случае, если вы захотите использовать иную длину нумерации, то пишите в маске нужное количество паттернов. Теперь сохраняем файл, открываем шелл астериска и пишем команду:
dialplan reload

Если возникли проблемы с доступом к файлу, то пишем:
chown asterisk:asterisk /etc/asterisk/extensions.conf

И снова перезагружаем диалплан через шелл Астериска.

Теперь пробуем звонить. Если вы все правильно настроили, то пир с номером 100 дозвонится до пира с номером 101. Сейчас мы можем звонить внутри офиса, между пирами, которые работают в контексте office. Для того что бы позвонить в город, нам нужно написать правило для исходящих звонков через первого оператора. Прописываем его в контекст office, выглядит оно так:
exten => _XXXXXXX,1,Dial(SIP/${EXTEN}@operator1)

Перезагружаем диалплан и пробуем звонить в город.

Теперь нам надо принять входящий звонок. Сделаем новый контекст в диалплане, пишем в конец файла:
[operator1]
 exten => s,1,Dial(SIP/100&SIP/101)

Поясню что означает «s». Это стандартная маска в Астериске, под которую попадают абсолютно все вызовы. То есть, если мы используем транк с регистрацией, входящий caller-id будет «s».

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

Сейчас нам понадобилось позвонить на сотовый телефон, с федеральным номером. Допишем еще одну строку в контекст [office]:
exten => _89XXXXXXXXX,1,Dial(SIP/${EXTEN}@operator1)

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

Однако, тут кроется небольшая проблема, которая возникнет при звонке на сотовые телефоны других регионов. Так как номер телефона федеральный, то все звонки пойдут через первого оператора. Поэтому уместно уменьшить размер масок в диалплане. К примеру:
exten => _8909[89][2-9][1-3]XXXX,1,Dial(SIP/${EXTEN}@operator1)
exten => _8901[456][2-5]1XXXX,1,Dial(SIP/${EXTEN}@operator1)
exten => _XXXXXXX,1,Dial(SIP/${EXTEN}@operator1)

С такой конструкцией все звонки на телефоны с кодами из диапазонов 890982XXXXX-890999XXXXX и 8901421XXXX-8901651XXXX пойдут через первого оператора. Не совсем удобно, соглашусь с этим. В будущих статьях выложу конфигурацию диалплана для автоматического выбора оператора в зависимости от направления звонка, так как подобное опять же выходит за рамки этой статьи.
Теперь нам осталось пустить междугородние звонки через второго оператора. Добавляем строку в контекст [office]:
exten => _[78][3-689]XXXXXXXXX,1,Set(CALLERID(num)=74991234567)
same => n,Dial(SIP/${EXTEN}@operator2)

Как вы заметили, тут появились новые приложения, которые обрабатывают звонки. Set(CALLERID(num)=74991234567) — так как мы используем транк без регистрации, то это значит что мы должны отсылать оператору caller-id. Этот номер не обязательно должен существовать. Тут мы просто представляемся провайдеру и не более. Какой номер подставлять — зависит от оператора. Некоторые предоставляют услугу подмены caller-id на номер другого оператора, для совершения исходящих вызовов по межгороду или для зоновуй связи. За подробностями обращайтесь к оператору. same => n — указатель, который позволяет не писать каждый раз маску и номер действия. К примеру:
exten => 78121234567,1,Answer
exten => 78121234567,1,Set(CALLERID(name)=Trunk_1
exten => 78121234567,1,Dial(SIP/1000)

Можно заменить на:
exten => 78121234567,1,Answer
same => n,Set(CALLERID(name)=Trunk_1
same => n,Dial(SIP/1000)

Во втором случае все гораздо проще, не так ли?

На этом все, мы настроили Астериск. Теперь мы можем звонить в город, на сотовые, по межгороду и у нас есть внутренняя связь между пирами. Получаем вот такой, вполне рабочий диалплан:
[general]
static=yes
writeprotect=no

[globals]

[office]
exten => _8909[89][2-9][1-3]XXXX,1,Dial(SIP/${EXTEN}@operator1)
exten => _8901[456][2-5]1XXXX,1,Dial(SIP/${EXTEN}@operator1)
exten => _[78][3-689]XXXXXXXXX,1,Set(CALLERID(num)=74991234567)
same => n,Dial(SIP/${EXTEN}@operator2)
exten => _XXXXXXX,1,Dial(SIP/${EXTEN}@operator1)
exten => _1XX,1,Dial(SIP/${EXTEN})

[operator1]
exten => s,1,Dial(SIP/100&SIP/101)

Спасибо за внимание.
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 40

    –1
    мне вот итересно в чём приимущество asterisk перед freepbx? В freepbx тоже можно при желании руками писать, но смысл?
      +6
      Преимущество в том, что чистый asterisk делает то что нужно, а не то что можно. FreePBX, как и другие сборки, напичкан всем что пихается и в него установлено все, что устанавливается. Из-за этого очень сложно что либо переделать под свои задачи, а конфиг и диалплан, сгенерированные web-интерфейсом, невозможно переписать вручную в файле конфигурации.
        0
        Если человеку достаточно дыр в самом Астериске, то дополнительные дыры FreePBX, ему не особо нужны. Лично для меня FreePBX абсолютно не юзабелен. Большая часть модулей, которые там есть, не достаточно гибкие, что б ими пользоваться. Это мое личное мнение.
          0
          На мой взгляд, на выбор между «чистым» asterisk'ом и freepbx может повлиять первое знакомство. Например я, начав с «чистого», не смог потом освоить freepbx. Для меня последний неудобен.
          0
          Во-первых, гибкость — всеравно FreePBX не дает тех возможностей, что Asterisk (из собственного опыта знаю). Ну да, можно писать руками, но оно почти всегда идет в конфликт со свистоперделками, которыми FreePBX напичкан. Если, конечно задача не банальный IP сервер с минимумом функционала.
          Во-вторых, чистая установка и возможность поставить на сервер, на котором уже что-то крутится.
          В-третьих FreePBX не на любое железо встает (с этим я тоже сталкивался, после чего я его, как вариант, больше не рассматриваю вообще).
            0
            И в куда же не встал FreePBX? Можно пример?
              0
              Intel Atom и старые AMD. Модели уже не назову — не помню.
                0
                Прошу прощения, FreePBX зависит это железа? Что? Это же надстройка над астериском с веб интерфейсом…
                  0
                  видимо имеется в виду сборка freepbx distro
                    0
                    freepbx distro встает на атомные матери.
                      0
                      freepbx distro лично у меня не встал ни на одну железку.
                      Это были сервера supermicro (2013 года выпуска) и комп на основе материнки intel со встроенным процом (на нее я ради интереса пробовал ставить). Подробностей уже и не вспомню, т.к. почти два года уже нет на руках этого оборудования.
                      Сипались ошибки ядра и некоректной работы драйверов, вплоть до зависаний наглухо.
                        0
                        Вы видимо использовали x86 версию?
                          0
                          Не только, и x64 версию пробовал ставить.
            0
            nat=no

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

            Можно не морочиться и писать во всех пирах nat=yes. Смысл этой настройки очень простой — если nat=yes, то астериск будет отвечать пиру не на тот IP-адрес, что он указал в заголовке Contact, а на тот, что стоит в SRC пакетов от пиры.
              –1
              А вообще эта опция depricated
              nat=auto_force_rport,auto_comedia
                +1
                Давненько не брал в руки шашек, я уже сам deprecated :)
                  –1
                  У нормальных свитчей вообще никаких настроек на нат нет, все определяется и работает само.
                    0
                    аха)) как родились сами, так и работают сами) И вообще самый правильный свитч — Это девушка оператор которая проводами соединяет звонящих) вот она с натом вообще отлично работает.
                –4
                На написание этой статьи меня побудило практически полное отсутствие how-to по настройке Астериска, с понятными новичку примерами.


                Не официальная документация
                help.ubuntu.ru/wiki/asterisk

                Официальная докуметация
                www.asterisk.org/sites/asterisk/files/mce_files/documents/asterisk_quick_start_guide.pdf

                (это все первая страница гугла по запросу asterisk install)

                Ну и для тех кто хочет знать больше всех
                asterisk-service.com/downloads/Asterisk-%20The%20Definitive%20Guide,%204th%20Edition.pdf

                Отсюда вопросы:
                Какими методами поиск информации вы пользуетесь?
                Зачем ваша статья?
                  0
                  Какими методами поиск информации вы пользуетесь?

                  В основном читаю документацию и гуглю, иногда пользуюсь яндексом.
                  Зачем ваша статья?

                  Первые два предложения, из первого абзаца:
                  В сети можно найти кучу информации по настройке IVR, по настройке авторизации SIP-пользователей через LDAP, мануалов по созданию HA-кластеров с Астерисками внутри, etc., но нет ни одной статьи о том, как завести его с нуля, да и еще с примерами. Практически везде предлагается сразу же использовать все возможности, которые предлагает Астериск, а если убрать часть функционала, предлагаемого в мануале, то в большинстве случаев это приведет к получению неработоспособной конструкции.

                  Я понимаю, Вы уже забыли что такое каша из информации в голове у новичка. Эта статья для того, что бы структурировать уже имеющуюся информацию и получить новую, которая необходима для запуска, пусть и не в продакшн, а хотя бы на стенде.
                    0
                    Я прекрасно понимаю что такое каша в голове когда, сталкиваешься с новыми технологиями. Многие разработчики сталкиваясь с чем-то новым сначала получают порцию этого замечательного блюда в свой мозг. Я в таком состоянии пребываю раз в месяц — минимум.

                    Цель моего вопроса — понять какую новизну несет Ваша статья. На сколько я знаю идеологию HABRAHABR — это сообщество специалистов, которые публикуют здесь что то новое. То чего еще нет нигде. То есть библиотека хабра по сути своей уникальна и Ваша статья как то не вписывается в эту идеологию. Книга (а я хочу заметить — отличная книга, где все разжевано как раз вот для новичков) asterisk definitive guide (ну на крайний случай asterisk — будущее телефонии) содержит в общем то все, что вы тут изложили. Новизны нет.
                      +1
                      Цель статьи — структурировать имеющуюся в голове новичка информацию, это я написал в предыдущем комментарии. Относительно идеологии и уместности статьи — возможно Вы правы. Удалить?
                      Гайд по астериску и про будущее телефонии читал. Да, обе содержат исчерпывающую информацию про большую часть функционала. Собственно, с помощью них и поднял у себя телефонию. Но за какое время вы их переварите? За какое время поймете, что вот без этой фичи телефония нормально не заведется, а вот другую можно реализовать уже после запуска? У меня ушла почти неделя на то, что бы поднять астер на стенде и вывести в продакшн. Долго. Очень долго. Лишь из-за того, что пришлось перелопатить горы информации. Не хватало аналога статьи, которую я написал. Собственно, поэтому она тут. Еще вопросы?
                        –1
                        Дело Ваше- удалять или нет. Я объяснил почему назрел вопрос.
                  0
                  А) Я пооонял) Статья для тех, кто любит перечитывать одно и то же на разных рессурах))) Надо будет накопипастить себе и опубликовать Asterisk Defenitive guide)))

                  exten => _78121234567,1,Answer


                  И тут неожиданно всплывает вопрос:
                  Зачем писать номер шаблоном?
                    0
                    И тут неожиданно всплывает вопрос:
                    Зачем писать номер шаблоном?

                    Извиняюсь, поправил.
                    0
                    Какой смысл в голом астериске, есть же AsteriskNOW? А кто думает что во FreePBX нельзя что-то дописать и исправить под себя — тот просто не умеет его готовить. Есть наборы конфигов custom (дополняющие) и override (заменяющие), через них можно сделать почти всё то же что и на чистом астериске.
                      0
                      Прикрутите редис к AsteriskNOW. Сделайте кастомную обработку звонка в очередь на каждого агента с неограниченными переадресациями.
                        0
                        Смогу и это.
                          0
                          Ну и в итоге у вас получится то же самое что голый Астериск. Во FreeBPX эти изменения будут незаметны и не управляемы. Смысл тогда от FreePBX, если для внесения изменений вм нужнао лезть в конфигурационные файлы и вносить изенения там?

                          Да и вообще — я так понимаю вы видели то генирирует в диалплан FreePBX. В общем то даже дело не в том как он генирирует в диалплан. а в том что он именно ГЕНИРИУЕТ В ДИАЛПЛАН. То есть об универсальности кода программисты FreePBX похоже даже не подозревают.

                          А если у меня будет 150 транков (а такое вполне реально — был живой пример когда к PBX подключались номера Мультифона для исходящих с них, чтобы обратно перезванивали на сотовые. Для простоты и удобства общения), FreePBX будет для всех генерить DIALPLAN конфиги?
                            0
                            Если у вас 150 транков и в штате есть спец реально хорошо знающий астериск — тогда чистый астериск оправдан.
                            Если их у вас 5 транков и админ общего профиля — тогда нет.

                            А вообще у меня был в подопечных колл-центр с довольно хитроумными запросами, и высококастомизированный. Всё отлично делалось штатными средствами FreePBX и только в одном месте пришлось править его PHP-генератор, и то в двух строчках (добавить перенаправление на опросник после разговора).
                              0
                              Ну вот я о том и говорю — что FreePBX использовать можно, но когда на нем решаются стандартные задачи, а когда нужна гибкая система — то тут от него толку никакого — либо городить свой огород с костылями и дописками — либо написать все заново. Свое. Но зато это будет работать как нужно, а не как получилось.
                                0
                                У меня имеется в наличии гибкая система на FreePBX и всё окей с ней.
                          0
                          Кроме того, инструмент хорош под задачи. Знаю несколько организаций которые зачем-то вместо FreePBX ставили чистый астриск а потом их админы не могли с ним справиться. Что конечно радовало меня но не радовало руководство этих организаций. А ведь им не нужны были никакие кастомизации и отлично бы подошёл FreePBX!
                            0
                            Можете уточнить с чем именно не могли справиться эти админы?
                              0
                              Asterisk полностью называется Asterisk Communications Fremework, и правильнее сказать что он не конфигурируется а программируется. Если во FreePBX бывает достаточно поставить галочку, то в чистом астере зачастую надо писать пяток строчек в диалплан, а то и не пяток. Для этого надо как-то владеть «языком» на котором это пишется. В общем задача нестандартная.
                          0
                          Есть частные случаи, для которых чистый астериск больше подходит, например самодельный gsm-шлюз.
                          Лично мне тот-же FreePBX просто неудобен. Редактирование конфигов напрямую для меня проще и нагляднее.
                          0
                          Пробовал настроить FreePBX с GSM шлюзом AddPac. Были откровенные глюки, хотя все настройки были корректные. В итоге поставил Asterisk. Имхо настройка где-то даже проще. И уже глубоко понимаешь что и как работает
                            +2
                            Действительно, очень много статей по астериску, где подробно расписывается процесс сборки астериска со всеми модулями из исходников, и в конце — теперь все, запускаем астериск и можно звонить!
                            Как именно звонить — остается загадкой.
                              0
                              MKudryavcev, прекрасная статья! Только «insecure=port,invite» в шаблоне пользователей — это прямо ножом по сердцу. Люди ведь потом плюются на Астериск, говоря, что он дырявый как решето. А все дело в настройках.

                              Это круто, что вы решили поделиться опытом с другими. И если цель статьи еще и поднобраться опыта с фидбеков — мой вам совет, insecure использовать исключительно там, где это абсолютно необходимо.
                                0
                                Некоторый опыт по прикручиванию Asterisk к российским сетям связи у нас есть, возможно напишем статью и поделимся с вами MKudryavcev.

                                Only users with full accounts can post comments. Log in, please.