По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Приходилось ли вам сталкиваться с задачами, которые не представляется возможным решить встроенными средствами FreePBX? Например, это может быть необходимость подключить TTS, настроить «кастомную» обработку вызова при звонке на конкретный внутренний номер и прочие задачи. Поискав в интернет, вы, возможно, уже находили готовые контексты обработки вызовов для решения ваших задач, а, возможно, вы самостоятельно создавали их с нуля. Так или иначе, появляется вопрос: как подключить собственный контексты, написанные в файле /etc/asterisk/extensions_custom.conf в FreePBX? Об это и поговорим. В нашем случае на помощь приходит модуль Custom Destinations. Назначения, созданные с помощью данного модуля, будут использовать специальные контексты, которые были созданы вручную и которые хранятся в конфигурационном файле /var/asterisk/extensions_custom.conf, а также эти назначения будут отображаться во всех других модулях, которые, так или иначе, участвуют в маршрутизации звонка, таких как: IVR, Queues, Announcement и прочие. Настройка модуля Перейдём к настройке. Чтобы попасть в модуль, с главной страницы переходим по следующему пути Admin –> Custom Destinations. Перед нами открывается следующее окно. Обратите внимание на предупреждение, оно сообщает нам, что для работы с модулем нам необходимо быть опытными и знающими пользователями :) Чтобы создать новое назначение, нажмите на кнопку Add Destination, откроется следующее окно Для каждого нового назначения необходимо указать следующие параметры: Target - Здесь необходимо указать ранее созданный контекст, на который нужно отправить абонента в формате [context],[exten],[priority]. Допустим, мы написали следующий контекст: [test_context] exten => s,1,Answer() exten => s,2,Playback(greetings) exten => s,3,Voicemail(100) exten => s,4,Hangup() Набор действий, которые будет выполнять система по данному контексту следующий: Отвечаем на звонок Озвучиваем файл greetings Отправляем на голосовую почту Завершаем вызов Таким образом, в поле Target можно записать следующее: test_context,s,1 Description - Простое описание, вновь создаваемого, назначения Notes - Здесь можно дать более развернутое описание, для чего и при каких условиях используется данное назначение Return - Возвращать ли звонок в родительский контекст, другими словами «обратно». Если выбрано Yes, то открывается список доступных направлений. Если No - звонок завершается Важно: при указании опции Return удостоверьтесь, что ваш «кастомный» контекст заканчивается командой Return Пример настройки Custom Destinations Для примера было создано следующая запись Здесь будет использоваться контекст test_context и после того, как все действия контекста будут завершены, модуль отправит звонок на IVR. Теперь можно использовать созданное нами назначение в других модулях, например Announcement Не забываем нажимать Submit и Apply Config
img
Если ты используешь модуль EndPoint Manager, о котором мы рассказывали в нашей предыдущей статье, или же другое решение auto-provisioning для автоматической настройки телефонных аппаратов на FreePBX, то эта статья для тебя! В ней мы покажем универсальный способ для поиска и устранения проблем, которые могут возникнуть в процессе работы с решениями auto-provisioning, таких как EPM. Как ты уже знаешь, принцип auto-provisioning заключается в том, что телефонный аппарат обращается на сервер, на котором для него уже подготовлен конфигурационный файл. Затем он скачивает его, применяет настройки и становится готовым к работе. Сервер может работать по протоколам TFTP, FTP, HTTP и др. в зависимости от выбранного режима и протоколов, которые поддерживает аппарат. Давайте рассмотрим типовую проблему, с которой мы можем столкнуться, при автоматической настройке телефонных аппаратов с помощью auto-provisioning на примере модуля EPM Кейс Допустим, мы сделали глобальные настройки для сервера TFTP и создали типовой шаблон для телефона Yealink SIP-T28P. Теперь мы пробуем назначить этот шаблон конкретному телефонному аппарату. Для этого, либо через модуль Extension, либо через Extension Mapping в самом EPM мы привязываем созданный шаблон к телефону по его MAC-адресу. Затем перезагружаем телефон и обнаруживаем что … он не получает настройки. Для начала, проверим логи TFTP сервера и выясним, посылает ли телефонный аппарат какие-либо запросы. Для этого откроем CLI нашего сервера и дадим такую команду: tail -f var/log/asterisk/messages | grep tftp После того, как мы введём эту команду, мы будем в реальном времени получать записи из лога messages, относящиеся к сервису tftp. Скорее всего, мы увидим там что-то типа: Где: 192.168.2.57 - IP адрес телефонного аппарата; 1111ссссdddd.cfg - Конфигурационный файл, который телефонный аппарат запрашивает с сервера. 1111ссссdddd - MAC адрес телефонного аппарата; Сообщение RRQ from 192.168.2.57 filename 1111ccccdddd.cfg означает, что телефон запрашивает с tftp сервера свой конфигурационный файл, а сообщение sending NAK (1, File not found) to 192.168.2.57 означает ответ сервера о том, что файл с таким именем не найден. Давайте теперь проверим директорию tftpboot, где EPM хранит конфигурационный файлы для телефонов и проверим, есть ли там файл с именем 1111ccccdddd.cfg. Для этого в CLI даём такие команды: cd /tftpboot ls -la | grep 1111ccccdddd Скорее всего, мы получим пустой вывод, а значит такого файла нет. В этом случае нужно ещё раз проверить, что телефон корректно привязан по MAC адресу к нужному шаблону через модуль Extension или Extension Mapping. После чего, ещё раз проверьте директорию tftpboot на предмет конфигурационного файла своего телефонного аппарата по MAC адресу:
img
Данная тема важна так как позволяет изменять приоритет процессов в операционной системе Linux. Иногда возникает такая ситуация, что необходимо изменить приоритет процессов, какой - то процесс сделать более приоритетным, отдав побольше ресурсов, а какой-то менее приоритетным забрав часть ресурсов сервера. В данной теме мы рассмотрим следующие вопросы: Научимся определять приоритеты процессов; Рассмотрим, как запускать программы с повышенным приоритетом или с пониженным; Посмотрим, как изменять приоритет запущенных программы. В Linux любой процесс может иметь приоритет от -20 до +19. Во FreeBSD до +20. Максимальным приоритетом считается, тот процесс у которого минимальное число. Т.е. максимальный по приоритету процесс будет иметь число - 20, а минимальный -19 соответственно. Поэтому задача с приоритетом -20 будет выполняться в первую очередь с максимум ресурсов и наоборот задача с +19 будет выполняться в последнюю очередь и минимум ресурсов. Linux для установки приоритетов использует такую программу nice и renice. Для того, чтобы рассмотреть данную тему воспользуемся командой ps aux. Запуская данную команду мы получаем все сведения о запущенных процессах на данном сервере. Так же мы можем увидеть от какого пользователя данный процесс запущен. Теперь мы используем другой набор ключей для команды ps. Чтоб получить нам интересующий вывод данных используем команду ps alx. Мы можем видеть, что получили немного другую информацию. Появилась колонка, промаркированная "NI" и колонка "PRI". Мы можем видеть, что верхние процессы выполняются с nice 0, т.е. это авторитет по умолчанию, который присваивается если не сказано иного. Возьмем другой вариант команды ps, с другими ключами. ps -eo user,pid,pcpu,nice,comm -e - ключ показывать все -o - output т.е какая информация нужна, далее в команде перечисляется необходимая информация (колонки) После ввода данной команды, мы видим, что столбцов стало меньше. Только то, что мы запрашивали, пользователь, ID процесса, загрузка CPU, приоритет и какая команда. Для того, чтобы понять, что такое приоритет, попробуем использовать команду sleep, которая позволяет, остановить операционную систему на указанное число секунд. sleep 10000 & И выведем команду ps -eo user,pid,pcpu,nice,comm | grep sleep, используя pipline сортируем по названию процесса sleep. Вот, что у нас вышло. Видим наш запущенный процесс. Далее запустим какую-нибудь задачу с максимальным приоритетом. Это полезно если мы хотим запустить, какой ни будь серьезный процесс, чтобы он получил максимальный приоритет. Как пример, срочная переиндексация базы данных на сервере с максимальным приоритетом или программку, которая будет собирать информацию о системе с минимальным приоритетом. nice sleep 60000 И мы можем увидеть, что появился наш процесс со значение 10 по умолчанию. Десять - это приоритет по умолчанию, и он ниже, чем ноль. Чем выше значение, тем приоритет ниже. Т.е. получается если мы запускаем с командой niсе, то процесс запускает с приоритетом ниже в 2 раза, чем просто если бы запустили. Мы можем принудительно завершить процессы. killall sleep. Попробуем запустить задачу с минимальным приоритетом. Для этого воспользуемся параметром. Команда будет выглядеть следующим образом. nice -n 19 sleep 6000 Как мы видим все получилось. Процесс запущен с минимальным приоритетом. Аналогично запускается процесс с максимальным приоритетом. nice -n -20 sleep 6000 Тут нужно пояснить, что задачи с наивысшим приоритетом, могут пользователи только с правами root. Если мы бы попытались сделать из-под обычного пользователя, то ничего у нас бы не вышло. killall sleep, еще раз завершим принудительно процессы. Запустим еще раз процесс с наименьшим приоритетом. nice -n 19 sleep 60000. Теперь изменим приоритет текущего процесса. Для этого есть следующая команда: renice 5 -p 416802 - т.е 5 - новый приоритет , 416802 - id процесса. Как мы видим все успешно поменялось. Вот таким образом мы можем динамически менять приоритеты. В Операционной системе Windows мы так же можем менять приоритеты в менеджере задач, но если там пять уровней, то в Linux их получается 40. Мы можем так же менять приоритеты определенному пользователю. renice приоритет -u пользователь Данные команды, нам позволяют гибко управлять распределением ресурсов на нашем сервере.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59