Настройка FreePBX Distro

Содержание

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

Настройка астериска, даже для какой-нибудь маленькой компании довольно трудоёмкий по описанию процесс, поэтому я разделю весь процесс на несколько статей , по пунктам получится примерно следующее:

Начальная настройка;
Создание внутреннего номера (extenshions);
Русификация или учим наш FreePBX говорить по русски;
Создание приветствия (announcement);
Группы звонков (ring groups)
Очереди звонков (queues);
Создание IVR;
Групповая голосовая почта (voicemail);
Создание правила по времени (time conditions);
Создание транка (trunk);
Настройка исходящих вызовов (outbound routes);
Настройка входящих вызовов (inbound routes);
Бэкап.

Фуф, вроде перечислил сколько всего нам придётся сделать что бы наш астериск начал работать. Итак, настраивать мы будем всё не просто так, а по примеру (сферический конь в вакууме), выглядит он примерно так:

  • 3 Внешних транка, один допустим шлюз, аппаратный, городская линия, один транк для звонков на мобильники и один транк для межгорода;
  • 10 Внутренних номеров, прям не знаю, отдел продаж человека, директор, и технари 5 человек, ииии секретарь например;
  • 1 IVR конечно же куда ж без него;
  • Очередь для технарей, у кого ещё очередь может быть;
  • Одна или несколько групп звонков, это для мэнеджеров, они должны брать трубку быстро им очередь не нужна;
  • Запись всех разговоров которые пришли извне или уходят наружу;
  • Во внерабочее время работает голосовая почта;
  • У сотрудников должна быть возможность перехвата звонков.

Начальная настройка

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

Итак, после установки астериска, появится приветствие и просьба ввести логин, затем пароль, которые мы задали в момент установки. Затем появится окно, в котором мы можем увидеть IP адрес нашего астериска.

Заходим через браузер по этому адресу — FreePBX просит задать логин-пароль для WEB интерфейса, а так же email для уведомлений.

После задания этих параметров мы попадаем на стартовое окошко, для настройки выбираем — FreePBX Administration.

freepbx portal

Так выглядит основная страница настроек нашего астериска, в 10 версии всё выглядит пример так же.

freepbx main window

Переходим в раздел Advanced Settings который выбирается из меню Settings. Здесь сосредоточены важные настройки астериска, и я не рекомендую менять в этом разделе что-либо если Вы точно не уверены что делаете. Здесь рекомендую изменить Country Indication Tones на Russian Federation и Ringtime Default на 60, в разделе Dialplan and Operational, не забудьте нажать зелёную галочку после изменений, и красную кнопку Apply Settings для сохранения.

Спускаемся ниже и в разделе GUI Behavior меняем False на True в параметре Show Language setting, так же сохраняем всё это дело.

Да кстати, теперь мы можем поменять язык Web-интерфейса на русский, в правом верхнем углу, переведены правда далеко не все пункты.

Опускаемся ещё ниже, до раздела System Setup и в пункте User Portal Admin Password видим пароль который мы задавали для web в открытом виде, ужасаемся, меняем на что-нибудь ненужное. Забегая вперёд хочу сказать что пароль для вебки FreePBX хранится в mysql в зашифрованном виде, а для User Portal разработчики могли бы и сгенерировать что-нибудь, вместо того что бы вот так светить потом чужие пароли, админов у астериска ведь может быть несколько, некрасиво это.

Есть подозрение что в разделе Asterisk Manager надо также сменить пароль для AMI админа.

Fail2Ban

Переходим к настройкам Fail2Ban что бы добавить свой IP адрес в белый список, в меню Admin выбираем пункт System Admin. Довольно хороший раздел, помогает лишний раз не лазить в консоль. Здесь можно например изменить IP адрес астериска. Но нам нужен пункт — Intrusion Detection.

freepbx fail2ban

В поле WhiteList через пробел добавляем адрес своего пк. Можно задавать как адреса, так и сети, например всеми любимая 192.168.0.0/24. Добавлять адреса через пробел! Для сохранения жмём Отправить запрос (непонятно почему, но кнопка на русском).

SrvLookup

Некоторые провайдеры используют SrvLookup. На текущий момент насколько мне известно PjpSip в астериске не поддерживает этой функции. Зато ChanSip поддерживает, но по умолчанию эта функция выключена. Для включения переходим Общие настройки (settings) — Asterisk SIP Settings далее в зависимости от версии FreePBX либо просто листаем вниз, либо справа выбираем ChanSip и уже затем листаем вниз, ищем пункт SRV Lookup (Поиск записей SRV) и включаем его


Пожалуй на этом первоначальные настройки завершены.

Как и прежде можно оставлять комментарии, вопросы и пожелания, постараюсь ответить.

Хотелось бы увидеть еще и статьи:

Создание приветствия (announcement);
Создание группы звонков (ring groups)
Создание очереди звонков (queues);
Создание IVR;
Групповая голосовая почта (voicemail);
Создание правила по времени (time conditions);
Настройка входящих вызовов (inbound routes);
Бэкап.

Был бы очень благодарен.

Будут со временем ) Сейчас просто времени нет этим заняться ))

После установки и ввода логина и пароля ничего не происходит 🙁 попасть в веб интерфейс не могу… Прошу помощи

откуда попасть не можете?

Ввожу команду ifconfig вижу адрес машины, с другой локальной машины не хочет на нее заходить. И что самое странное что после загрузки терминала ввожу логин и пароль root’а, но никаких надписей freepbx и ip не выводятся…

Добрый день Алексей!
Благодаря Вашей помощи у меня уже работает домофон через ht503 и сейчас стоит следующая задача по громкой связи (оповещениям)
Необходимо из внешнего скрипта на bash осуществить оповещение на все телефоны. Телефоны поддерживают paging, intercom. На freepbx настроил пейджинг группу и включил нужные телефоны. Теперь если позвонить на этот номер , устанавливается канал со всеми телефонами и можно оповещать.
Но как теперь это сделать через ami интерфейс не очень понятно.
Во внешней системе произошло событие, которое необходимо озвучить через телефоны без поднятия на последних трубок.
В ami не нашел команду page

через callfile можно просто звонить на номер и проигрывать что вам нужно
пример скрипта на баше если нужно приведу, только с callfile поиграйтесь сначала, поймите как работает, с ним проще чем ami

3 дня читал Asterisk — будущее телефонии
В общем стало больше ясности но к своей задаче не понимаю с какой стороны подойти.
Если не затруднит приведите пожалуйста пример.
И еще обратил внимание, что если сейчас набрать номер пейджинга (что на freepbx зарегистрирован), все телефоны включают динамики и устанавливается канал. Т.е. с одного телефона можно набрать номер 590 и все остальные сразу слышат. Но при hangup на вызывающем — у слушатаей hangup не происходит.

Не понят как вызвать функцию page().
Правильно ли я понимаю:
Создаем контекст
[play-message]
Exten => s,1, page(sip/590)
Exten => s,n, playback(file-sound)
Exten => s,n,hangup()
Exten => h,n,hangup()

В call файле нужно указать этот контекст play-message
А что указать в chanel и extention?
Инициатором вызова будет сам астериск, а не какой-то номер

там же есть пример 6
вы можете позвонить на какой-нибудь номер что бы сработал интерком? Если да то его и укажите в channel в то время как экстеншн будет приложение которое проигрывает файл или что-то диктует, а вы всё в одну кучу напихали и набор интерком и проигрывание файла.

Freepbx настроин номер 590 как дефолтовый пейджинг. Если его набрать с любого телефона то все включенные в группу дефолт-пейджинг сразу включают динамики на прием. Т.е. так работает. Но если в call файле я задаю канал sip/590 выводится ошибка, что такой канал не существует. Сейчас комп далеко, завтра смогу логи детально описать.

правильно, какой же это sip/590, для внутренних приложений надо использовать local
что нибудь вроде Local/590@from-internal/n

сам правда недавно об этом узнал ))

Установил в play.call
Channel: Local/590@from-internal/n

Сработало оповещение.
Но еще одна проблемка осталась. После hangup — телефоны, что в группе пейджинга не вешают трубку.
Судя по описанию Page(), когда инициатор разрывает связь — то уничтожается канал и все автоматически отключаются. У меня такого не происходит даже если я с телефона набираю 590. Пока ручками не отобьешь тел так и будет busy

Разобрался с проблемой отбоя с интеркомом. Оказывается эта проблема уже бородатая. Но решение ее тоже довольно простое а именно:

Settings -> Advanced Settings
Ищем раздел: Dialplan and Operational
Переменная: Conference Room App

Устанавливаем в значение app_meetme

продолжение…
В скрипте (bash) синтезирую речь из переменной $Message
wget -O out.mp3 https://tts.voicetech.yandex.net/generate?text=$Message&emotion=mixed&format=mp3&lang=ru-RU&speaker=omazh&key=$KeyCode

На выходе получаю out.mp3
Воспроизвожу его обычным плеером и слышу нормальную синтезированную речь.
Но при попытке воспроизвести через asterisk (paging) — неудача.

— Executing [s@pa-custom:3] Playback(Local/590@from-internal-00000176;1, /var/lib/asterisk/sounds/out.mp3) in new stack
[2015-09-20 12:29:59] WARNING[17037]: file.c:666 ast_openstream_full: File /var/lib/asterisk/sounds/out.mp3 does not exist in any format
[2015-09-20 12:29:59] WARNING[17037]: file.c:957 ast_streamfile: Unable to open /var/lib/asterisk/sounds/out.mp3 (format 0x40 (slin)): No such file or directory
[2015-09-20 12:29:59] WARNING[17037]: app_playback.c:479 playback_exec: ast_streamfile failed on Local/590@from-internal-00000176;1 for /var/lib/asterisk/sounds/out.mp3

Файл в директории имеется. Владелец asterisk и права 777

Отвечаю сам себе…
Необходимо указывать только имя файла без расширения. Т.е.
exten => s,n,Playback(/var/lib/asterisk/sounds/out)

Все заработало!
Близится момент, когда научу систему в доме разговаривать, а не просто светить индикаторами и пикать.

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

Первоначально я пошел по другому пути. openhab умеет запускать скрипты. Скрипт получает текстовую строку которую отправлял на гугл для синтеза. Затем полученный файл воспроизводил на микрокомпьютере через динамик с усилителем. Но такой вариант оказался не очень удобным да и не слишком надежен. Нужно гарантированное питание обеспечить да и много других нюансов. Учитывая, что по дому стоят SIP телефоны (PoE) я и подумал почему же их не задействовать в системе оповещения.Собственно в этом направлении теперь и двигаюсь. В довесок перешел на Яндекс сервисы. Оказалось проще и с русскоязычной поддержкой, что так же не маловажно.

Ясно, решили заморочится в этом вопросе по полной )

Добился определенного результата.
1. В скрипте (вызывает openhab) получаю в виде параметра строку.
2. В этом же скрипте синтезирую текст в речь
3. Теперь необходимо обеспечить передачу mp3 файла на asterisk
4. Используя AMI делаю вызов пейджинга с передачей одного параметра в канал — имени файла с речью без расширения.

#!/bin/bash
#
voicefile=out
echo Starting… >> /opt/openhab/cmd/test.log
/opt/openhab/cmd/call.sh $voicefile | telnet

#!/bin/sh.
#.
# ./call.sh | telnet.
#.
soundfile=$1
echo open 192.168.1.11 5038
sleep 2
echo Action: Login
echo Username: openhab
echo Secret: xxxxxx
echo Events: off
echo
sleep 2
echo Action: Originate
echo Channel: Local/590@from-internal/n
echo Context: pa-custom
echo Exten: 577
echo Priority: 1
echo Variable: var1=$soundfile
echo Callerid: openhab ami
echo
sleep 2
echo Action: Logoff
echo

[pa-custom]
exten => s,1 (start),Wait(2)
exten => s,n,NoOp($)
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Playback(/var/lib/asterisk/sounds/$
)>
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()
exten => h,1,Hangup()

при помощи call файла звоню на номер. Но как включить режим интеркома на нескольких телефонах одновременно?

play.call
Channel: SIP/520 — это sip phone
Callerid: 911
MaxRetries: 5
RetryTime: 5
WaitTime: 20
Context: pa-custom
Extension: 557

[pa-custom]
exten => s,1(start),Wait(2)
exten => s,n,Playback(demo-congrats)
exten => s,n,WaitExten(10)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()

exten => 1,1,Playback(digits/1)
exten => 1,n,Goto(pa-custom,s,start)

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

В меню Admin нету пункта System Admin. На страничке создания внутреннего номера нету раздела iSymphony Settings. Где их взять?

симфония на моей памяти во всех дистрибутивах новых по умолчанию идёт, а system admin может быть не установлен, зайдите в admin — module admin и найдите модуль system admin и установите его.


Источник: trustore.ru