Поиск по моему блогу

Как мониторить доступность сайта круглосуточно?

uptime, web, блог, доступность, интернет, мониторинг, сайт, computers 072aСегодня столкнулся с интересной ситуацией - на мыло пришло сообщение о новом комментарии к моему посту, но перейдя по ссылке, я обнаружил что мой блог "в дауне", выражаясь обычным языком - недоступен. Вот минуту назад человек оставил комментарий, а уже сейчас блог недоступен. Последний месяц для постоянного наблюдения доступности блога я использовал панель от Пингдом на бесплатном аккаунте. SMS-уведомления у меня отключены (я вообще не читаю SMS - ибо кроме рекламы, любимый LIFE:) мне ничего не присылает), но почему же не пришли уведомления на мыло?
Оказывается я исчерпал количество checks (проверок) на бесплатном аккаунте. Это меня конечно же не устроило и я начал искать другие ресурсы, которые меня будут радовать. Я перепробовал несколько разных и остановился на 2-х. Какой из них будет постоянно мониторить мои сайты в будущем, еще не знаю, т.к. нравятся оба, но предлагаемые услуги сильно отличаются.
1) host-tracker.com
Возможности - 111 точек проверки по всему миру, мониторинг до 2 сайтов, русский интерфейс, подробная статистика, сообщения на "мыло" в случае проблем с доступом к сайту. В пробном периоде - первый месяц мониторинг может производится с интервалом вплоть до 1 минуты. Как только он закончится - необходимо выбрать тарифный план. И вот тут небольшая неприятность - на пакете "free" интервал проверки - 30 минут. Это цена бесплатности:
uptime, web, блог, доступность, интернет, мониторинг, сайт
В общем, сайт мне понравился, статистика выглядит таким образом:
uptime, web, блог, доступность, интернет, мониторинг, сайт
С настройками проблемы не возникнет. Самый главный минус - 30 минутный интервал.
2) uptimerobot.com
С этим сайтом все еще проще. Правда, подробной статистики сайт не дает. Зато предлагает другие возможности - проверка доступности ваших сайтов каждые 5 минут, бесплатный мониторинг до 50 сайтов, уведомления на "мыло", в твиттер и SMS-ками. Интерфейс - английский, но настраивать ничего не нужно - просто добавьте URL своих сайтов и все:
uptime, web, блог, доступность, интернет, мониторинг, сайт
В случае неполадок на хостинге и первый и второй сервис присылают сообщения на e-mail (как минимум). Вчера вечером проверил это на своих сайтах.
Enhanced by Zemanta

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

Asterisk (PBX)Image via Wikipedia
Оригинал: http://www.asterisk-support.ru/documentation/bulk/LinuxAsteriskSetup


   В данной статье пойдет речь не об установке какого-то либо
   дистрибутива линукс, а об общих мерах, которые нужно предпринять для
   стабильной и безопасной работы asterisk на linux. Итак,


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

   Пакеты, которые нужны, это:

     * glibc-devel - заголовочные файлы стандартных библиотек. Без этого
       пакета ничего не откомпилируется.
     * kernel-devel и kernel-header - исходные тексты ядра Linux. нужны
       для сборки zaptel. Даже если у вас и не планируется использовать
       железо от Digium, для нормальной работы MusicOnHold? и
       конференций понадобится собрать модуль ztdummy, который обеспечит
       тактирование от USB подсисемы.
     * db-devel - астериск использует встроенную базу данных.
     * gcc,cpp,binutils,bison,expat-devel и ncurses - компиляторы,
       препроцессоры и другие утилиты. curses нужен для сбоки консльного
       менеджера astman.
     * openssl, openssl-devel - библиотеки
   Если каких-то пакетов не хватает, установите их после установки
   системы. В linux при помощи комманды rpm -i package-1.1.rpm , в
   slackware при помощи installpgk package.tgz


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

     * Проверка сетевых служб. netstat -atnup выведет список всех сокетов
       TCP/UDP, которые открыты на данный момент. Так как у нас только
       asterisk сервер, то работать только служба SSH (для удаленного
       администрирования) и астериск. Кстати, чем меньше портов вы
       обнаружите открыми, тем более "правильно (минимально)" вы
       устновили линукс. Комманда netstat выведет номер процесса, и его
       pid узнайте название. Далее при помощи ntsysv или chkconfig
       откючите ненужную службу.

Настройка Winprint HylaFAX

Winprint HylaFAX

SourceForge.net Logo

Installation Instructions

Winprint HylaFAX is a Windows print monitor designed to send its output directly to a HylaFAX Server. Once installed, you can print to a HylaFAX Server from any application, and it will pop up a simple dialog box, allowing you to enter the destination FAX number. It's not intended to be fancy or all encompassing, just a quick and easy way to send FAXes from any Windows application
It can be downloaded here. To go to the sourceforge pages for this software to comment, report bugs, or get source code, click here.
It is packaged in the form of a Windows Installer, which installs the required sets of .DLL files and registers the monitor with the system. This adds support for a new type of port to your system, called a "WinPrint HylaFAX Port." Once you've successfully installed the files, setup is straightforward, but it has a number of steps. First, you'll want to create an appropriate PostScript printer using the "Add Printer" button. You want to select a "Local printer," but since it's not a physical printer, uncheck the "Automatically detect and install my Plug and Play printer" box.
Next, you'll be asked what port to use. Select the radio button "create a new port type." If the installation went well, you should see "Winprint Hylafax" as one of the options. The drop list might scroll, so it may not be obvious that it's at the bottom of the list. (If it doesn't appear on the list at all, something went wrong with your installation.)

Asterisk Голосова пошта

Asterisk (PBX)Image via Wikipedia
Щоб правильно використовувати голосової пошти Asterisk, Ви повинні виконати ряд кроків налаштування. Додержуйтеся інструкцій у цій статті, і Ви можете насолоджуватися поштою.

Основна конфігурація для Asterisk і голосова пошта

Використання інтерфейсу FreePBX і натисніть на компонент "Загальні налаштування".
У розділі "Параметри набору", змінити таким:
Опції Commandes де numérotation : TRW
Замовлення Параметри вихідної : TW
T: Дозволяє апелянти перевести дзвінок, натиснувши #
г: Генерує сигнал для заявника
в: Дозволяє апелянти, щоб почати запис, натиснувши * 1
У "Голосова пошта", змінити таким:
Час за замовчуванням рінгтон: 20
20 це кількість секунд телефон задзвонить до відправки виклику на голосову пошту. Це дасть вам більше часу для відповіді на дзвінок.
Повідомлення тип доступу до голосової пошти: Недоступний
Це дозволить уникнути проблем при використанні функції "Йди за мною", перешкоджатиме система грає повідомлення за замовчуванням і дозволяє грає персональної повідомлення.
У розділі "Бізнес-довідник", змінити таким:
Пошук користувачів в каталозі компанії з: ім'я
Це дозволить абонентам шукати вашу систему на більш підходящі житлові. Я користуюся, як моя гіпотеза, що всі ті ж прізвища.
У полі "Факс", змінити таким:
Розширення для отримання факсів: Система
Вибір системи для системи отримувати факси та відправляє їх по електронній пошті. Якщо у вас є факс підключений до аналогової лінії, з продовженням на цьому шляху, як значення параметра. Якщо ця опція вимкнена, він буде відповідати на дзвінки швидше, але ви не будете мати можливість факс.
Email Факс: VOTRE_ADRESSE@gmail.com
Адреса електронної пошти буде використовуватися, якщо система варіант був вибраний для факсу розширення визначено вище. Це дозволить вам отримувати факси прямо у вашу поштову скриньку.
Email викидів факс: VOTRE_ADRESSE@gmail.com
Адреса електронної пошти, факсу, буде відображатися, якщо система була обрана для факсу розширення визначено вище.
У полі "Мережеве оновлення", змінити таким:
Перевірка оновлень: та
Адреса електронної пошти оновлення: VOTRE_ADRESSE@gmail.com

Повідомлення про голосових повідомлень по-французьки

Якщо ви хочете думку голос повідомлень, переданих по електронній пошті дані по-французьки, виконати наведені нижче інструкції:
Для редагування конфігураційних файлів, Ви можете використовувати редактор "VI", або "Джо" на засіданні "Shell". Ви також можете робити редагування з FreePBX за допомогою компонента "Змінити конфігурацію", перебуває в "Інструменти", і виберіть потрібний файл.
Freepbx_Edittion
Відредагуйте файл / ETC / зірочка / vm_email.inc
Змініть рядок :
;emailbody = $ () VM_NAME,\ П \ nМожливо новий голосової пошти в поштовій скриньці $ () VM_MAILBOX:\ N \ п \ tFrom:\ Т $ (VM_CALLERID) \ п \ tLength:\ T $ () VM_DUR секунд \ п \ TDate:\ Т $ (VM_DATE) \ п \ nDial * 98 для доступу до голосової пошти по телефону. \ NVisit HTTP:/ / AMPWEBADDRESS / запису / index.php для перевірки голосової пошти з веб-браузером. \ П
Для цього :

Программа для конвертирования и работы со звуками в Asterisk

 AudioCommander v3.4
picГод выпуска: 2006
Версия: v 3.4
Разработчик: Mystik media
Платформа: windows 95 / 98 / ME / 2000 / XP / 2003
Совместимость с Vista: неизвестно
Системные требования: min
Язык интерфейса: только английский
Таблэтка: Присутствует
Описание:
Программа является скоростным и высоко профессиональным кодировщиком для работы со многими аудио форматами. Читает CD, WAV, MP3, WMA, OGG, AAC, AC3, AMR, 3GP, AIFF, AU, VOX, RAW, GSM, ADPCM, A-LAW, u-LAW, g726, g721, g723, MPC, MP+, MOV, QT, AVI audio и др., переводит в MP3, WMA, WAV, OGG, AAC, AC3, AMR, AIFF, ADPCM, A-LAW, u-LAW, DSP, GSM, или VOX и ему подобные. Меняя при этом частоту и Bitrat`у и комбинируя их между собой. При рипаньи диска способен отыскать информацию о нем с FreeDB. Работая с МР3, сжимает с 320 kbps до 128 kbps. Работа с программой не вызывает затруднений даже для начинающих, все установки осуществляются в пару приемов и всегда можно видеть, что будет на выходе, до того как будет дан пуск на обработку.
Английское описание

Asterisk. Запись телефонных разговоров.

Modern musical symbolsImage via WikipediaЗапись разговоров – довольно удобная вещь. Можно всегда прослушать кто, что кому говорил. Настройка не сложная, достаточно включить в dialplan на обработку этого направления функции Monitor или MixMonitor. Отличие этих функций заключается в том, что Monitor пишет раздельно голос звонившего и голос звонящего, в разные файлы. А MixMonitor создает один файл, который содержит оба направления разговора.
В диалплане это выглядит для Monitor так:
[dial]
exten => _8.,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})
exten => _8.,2,Monitor(wav,/home/share/monitor/${fname},mb)
exten => _8.,3,Dial(SIP/prov1)

В этом примере первой строчкой, Set(fname и т.д. мы описываем имя файла в котором будет хранится запись разговора. В нашем случае имя файла будет состоять из даты и времени когда происходил звонок, номера звонящего абонента и куда он звонил. Запись как я уже писал будет состоять из двух файлов в конце будут соответственно добавлены цифры 1 и 2 соответственно номерам каналов.
И второй пример – использование MixMonitor, тут все так же просто:
exten => _8.,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})
exten => _8.,2,MixMonitor(/home/share/monitor/${fname}.wav)
exten => _8.,3,Dial(SIP/prov1)
Тут все то же самое, только меньше флагов в команде MixMonitor, тут вписывается только имя файла с расширением.
Enhanced by Zemanta

Asterisk. Интерфейс AGI. Функция GotoIf.

Asterisk (PBX)Image via WikipediaAsterisk Gateway Interface или сокращенно AGI – интерфейс взаимодействия с внешними скриптами. С помощью AGI можно получить информацию, которая не доступна напрямую из астериска. Вообще скрипты из Asterisk можно выполнять из функций System и через AGI. System выполняет скрипты без обратной связи, через AGI можно устанавливать переменные используемые далее в extensions.conf.
К примеру можно воспользоватся вызовом скрипта для определения типа дня недели. Подобная информация может понадлбится если вам нужно проигрывать один вид меню, а в выходные дни другой.

Для определения дня недели воспользуемся таким скриптом:

#!/usr/bin/perl -w
use Date::Calc qw(Day_of_Week Now Today);
 
($year,$month,$day) = Today();
$dow = Day_of_Week($year,$month,$day);
 
if($dow eq 6 or $dow eq 7)
{
  print "SET VARIABLE DOW WEEKEND\n";
}
else
{
  print "SET VARIABLE DOW WORKDAY\n";
}
 
Для работы скрипта понадобится Date::Calc – модуль перла для работы с датой и временем.

Установить его можно из портов:
cd /usr/ports/devel/p5-Date-Calc
make install clean

Теперь можно доработать меню, так что бы в будний день проигрывалась начитка welcome.wav, а в субботу и воскресенье была начитка weekend.wav.

Диалплан теперь будет выглядеть так:
[sip-dialout]
exten => 444,1,Goto(menu,s,1)
 
[menu]
exten => s,1,Set(home="/home/menu")
exten => s,2,AGI(${home}/bin/date.pl)
exten => s,3,NoOp(" day ${DOW} ")
exten => s,4,GotoIf( $["${DOW}" = "WEEKEND"]?8)
exten => s,5,Playback(${home}/welcome)
exten => s,6,NoOp(WEEKEND)
exten => s,7,Goto(s,10)
exten => s,8,Playback(${home}/weekend)
exten => s,9,NoOp( WEEKEND )
exten => s,10,WaitExten()
 
exten => 1,1,Playback(${home}/tariff)
exten => 1,2,Goto(s,1)
 
exten => 2,1,Dial(SIP/operator)
 
exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)
 
exten => i,1,Playback(wrong_choice)
exten => i,2,Goto(s,1)
 
В нашем примере появилась новая функция GotoIf, функция условного перехода. Мы проверяем какой тип дня недели и в случае выходного дня, осуществляется переход на соответсвующую метку меню. Таким образом в случае выходного дня, мы переходим на начитку weekend.wav и пропускаем welcome.wav.
Функцию GotoIf можно применять не только с AGI, но и для переходов по проверке любых переменных установленных в extensions.
Enhanced by Zemanta

Asterisk. Автоматические исходящие звонки.

Asterisk (PBX)Image via WikipediaМногие сталкивались со звонками от крупных компаний, когда происходит звонок и зачитывается автоматическое сообщение, рекламное или уведомление о просроченой оплате. Такую систему можно сделать на астериске с помощью внешнего скрипта.
Исходящий звонок Asterisk может выполнять при размещении специального файла в директории /var/spool/asterisk/outgoing.

Файл должен выглядеть так:
Channel: SIP/prov1/8067xxxxxxx
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: auto-dialout
Extension: 800 
Priority: 1

В этом файле. первая строка – канал через который будет осуществляться звонок и номер телефона на который будет исходить звонок. MaxRetries – здесь описывается число повторных звонков, пока система не дозвонится абоненту. RetryTime – время через которое осуществится повторный звонок. WaitTime – время ожидания ответа вызываемого абонента, то есть попросту через сколько секунд система положит трубку не дождавшись того, что вызываемая сторона снимет трубку. Context – контекст в котором определена последовательность действий при дозвоне. Extension – в указанном контексте, определен в extensions.conf. И Priority – строка обработки описанного экстеншена в указанном контексте.

Контекст должен быть определен так(в примере мы просто проиграем файл tariff.wav):
[auto-dialout]
exten => 800,1,Playback(/home/menu/tariff)
 
Для автоматических исходящих звонков голосовое меню можно создавать точно такое же как и для обычного IVR, отличий нет. Единственное – не абонент звонит нам, а мы звоним абоненту и предлагаем ему вступить в диалог с нашей системой.
Enhanced by Zemanta

Asterisk. Queue. Очередь звонков в Asterisk.

Asterisk Flash Operator PanelImage via WikipediaПри телефонизации офисов, вопрос с созданием очереди звонков возникает достаточно часто. Например при наличии более 1 менеджера по продажам, руководство хочет, что бы им на отдел поступали звонки и звонки равномерно распределялись по менеджерам, да в прочем, даже если они хотят, что бы все звонки поступали ко всем сразу все это реализуемо и работает. Работает с помощью Queue.

А настраивается это так. В первую очередь опишем в sip.conf наших менеджеров:
[manager1]
type=friend
secret=manager1
host=dynamic
username=manager1
context=sip-users
callerid=101
call-limit=1
 
[manager2]
type=friend
secret=manager2
host=dynamic
username=manager2
context=sip-users
callerid=102
call-limit=1
 
Да и обязательно в секции [default] sip.conf, если у вас Asterisk 1.4.29 или старше, должно быть:
limitonpeers = yes
иначе очередь работать не будет.

И сделаем:
asterisk -r
sip reload

Теперь организуем саму очередь. Описывается она в queues.conf. Добавим в конце описание нашей очереди:
[managers]
strategy = rrmemory
member => SIP/manager1
member => SIP/manager2
 
Здесь описаны состав очереди,manager1 и manager2 и тип распределения звонков strategy = rrmemory. Это роунд-робин – то есть менеджеры по очереди будут получать звонки. До недавнего времени он так и назывался, кстати, roundrobin, а потом, по непонятной причине был переименован в rrmemory.
Еще доступные варианты strategy = ringall – телефон звонит у всех. Вариант, поступления звонка к оператору, который дольше всех не отвечал на звонки: startegy = leastrecent. random – случайный выбор оператора и fewestcalls – звонок будет поступать оператору с наименьшей длительностью разговоров.

Теперь в консоли астериска(asterisk -r) делаем:
reload app_queue.ko

А теперь осталось направить входящие звонки на Queue. Для этого в extensions.conf, в том контексте в котором должны поступать звонки на очередь, прописываем:
exten => 1000,1,Answer
exten => 1000,2,Wait(1)
exten => 1000,3,Queue(managers|t||)
exten => 1000,4,Hangup
 
Тут соответсвенно 1000 – номер на который будут поступать звонки.
Перегружаем диалплан:
extensions reload
и в общем то все. Настройка простейшей очереди закончена.
Enhanced by Zemanta

Asterisk. Перехват (PickUP) звонка.

Asterisk (PBX)Image via WikipediaЕще одна из востребованных функций – это перехват звонка. То есть, если ваш сосед вышел, а у него звонит телефон, нужно перехватить звонок. Очень полезная функция. Она по умолчанию включена в Asterisk. По умолчанию за перехват звонка отвечает комбинация клавиш *8. Проверить что у вас учтановлено можно с помощью консоли Asterisk(asterisk -r):
show features

и должны увидеть строку:
Pickup                    *8      *8
Изменить эту комбинацию можно в файле features.conf.
pickupexten = *8
Теперь остается определить кто чьи звонки может перехватывать.
Делается это с помощью опций pickupgroup и callgroup. Устанавливаются они на соответствующих абонентов.

Например для sip абонентов это будет выглядеть так:
[manager1]
type=friend
secret=manager1
pickupgroup=1
callgroup=1
host=dynamic
username=manager1
context=sip-users
callerid=101
call-limit=2
 
[manager2]
type=friend
secret=manager2
pickupgroup=1
callgroup=1
host=dynamic
username=manager2
context=sip-users
callerid=102
call-limit=2
 
И еще. Звонок можно перехватить даже еслт он шел в Queue и любой может быть членом нескольких pickup и call групп.
Enhanced by Zemanta

Установка голосовых файлов в Asterisk

Asterisk (PBX)Image via WikipediaТак уж случилось, что в поставку Asterisk не входит ни русского языка, ни украинского. Но тщательно погуглив, можно найти готовые голосовые файлы приемлемого качества. Правда только русскоязычные, но этого в принципе достаточно.
Астериск держит звуковые файлы в директории /usr/local/share/asterisk/sounds/. Это под FreeBSD, под Linuxами в /usr/share/asterisk/sounds/.
То что непосредственно находится в директории sounds – это англоязычные файлы. Английский язык – он по умолчанию. Внутри этой директории находятся файлы, которые отвечают за базовый функционал.

То есть к примеру в базовый функционал Asterisk входит модуль голосовой почты и к примеру файлы vm-* – они относятся к этой голосовой почте. Файлы conf-* к модулю конференций. И так далее. Название каждого файла жестко определено. Кроме того, в этой директории можно видеть поддиректории es и fr. Это директории содержат локализированные начитки. То есть, по простому – файлы испанского и французского языков.
И нам, что бы сделать русскую локализацию, нужно создать директорию ru и положить в нее необходимые начитки. Начитки могут быть как в формате gsm, так и wav. Главное что бы само имя файла совпадало.
А для того, что бы астериск знал, что нужно использовать начитки русского языка, нужно указывать в начале диалплана такую стоку:
exten => 5740000,1,Set(CHANNEL(language)=ru)
Естественно, устанавливать эту переменную нужн для каждого экстеншена персонально.
Enhanced by Zemanta

Asterisk. Делаем простейшее голосовое меню (IVR).

Asterisk (PBX)Image via WikipediaОдним из основных достоинств Астериск является легкость, с которой с помощью него создаются IVR.
Для того что бы создать IVR нужно в первую очередь представить себе его структуру, то есть что за чем и как будет делаться, и составить тексты.
Сейчас мы опишем создание простейшего голосового меню, состоящего из приветствия и после приветствия, переключение на оператора. Файл в котором хранится фраза «Здравствуйте, вы позвонили в нашу компанию» называется welcome.wav и находится в директории /home/menu.
Номер, который принимает звонки 444. А выглядеть меню будет так:

[sip-in]
exten => 444,1,Set(home="/home/menu")
exten => 444,2,Wait(1)
exten => 444,3,Playback(${home}/welcome)
exten => 444,4,Dial(SIP/operator)
 
У нас появилась новая функция Playback, она предназначена для проигрывания звуковых файлов, файлы должны быть подготовленны заранее, так как мы описывали в статье ffmpeg, подготавливаем звуковые файлы для Asterisk. Есть еще сходная функция Background, она отлдичается от Playback тем, что не блокирует нажатия на кнопки, то есть в момент проигрывания голосовых меню, позволяет реагировать на передаваемые звонившим DTMF.
Это простейший IVR и в нем отсутствует основная особенность IVR, нет никакого выбора. Поэтому приведем пример с диалогом. Тут будет присутствовать вторая начитка: «Для связи того что бы прослушать тарифы нажмите 1, для связи с оператором нажмите 2″. Файл содержащий эту начитку будет называться menu.wav и файл с тарифами соответсвенно tariff.wav. После прочтения инструкции должен осуществляться переход в главное меню.
Выглядит это так:
[sip-in]
exten => 444,1,Goto(menu,s,1)
 
[menu]
exten => s,1,Set(home="/home/menu")
exten => s,2,Wait(1)
exten => s,3,Playback(${home}/welcome)
exten => s,4,Playback(${home}/menu)
exten => s,5,WaitExten()
 
exten => 1,1,Playback(${home}/tariff)
exten => 1,2,Goto(s,1)
 
exten => 2,1,Dial(SIP/operator)
 
exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)
 
exten => i,1,Playback(wrong_choice)
exten => i,2,Goto(s,1)
 
Тут у нас появилось много нового. Во первых Goto – функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий.
Так же появились екстеншены i – это реакция на неправильно нажатую кнопку, Invalid input и t – реакция на истекшее время ожидания выбора. Если их не описать то при истечении таймаута или при неправильно нажатой кнопке произойдет обрыв соединения.
Enhanced by Zemanta

ffmpeg, подготавливаем звуковые файлы для Asterisk

FFmpegImage via WikipediaЕсли вы хотите создать голосовое меню(IVR) с помощью Asterisk, вам понадобится подготовить файлы начиток так, что бы астериск смог их проигрывать. Сконвертировать файл в формат который понимает Asterisk можно с помощью ffmpeg. ffmpeg есть в портах, из них и установим:

cd /usr/ports/multimedia/ffmpeg
make install clean
 
В начале появится диалог настроек. Я обычно выставляю такие флаги:

┌────────────────────────────────────────────────────────────────────┐                                   
│                     Options for ffmpeg 0.5,1                       │                                   
│ ┌────────────────────────────────────────────────────────────────┐ │                                   
│ │[X] AMR_NB            AMR Narrow Band encoder                   │ │                                   
│ │[X] AMR_WB            AMR Wide Band encoder                     │ │                                   
│ │[X] DIRAC             Dirac codec via libdirac                  │ │                                   
│ │[ ] FAAC              FAAC mp4/aac audio encoder                │ │                                   
│ │[X] FAAD              FAAD mp4/aac audio decoder                │ │                                   
│ │[X] FFSERVER          Build and install ffserver                │ │                                   
│ │[X] GSM               GSM audio codec                           │ │                                   
│ │[ ] IPV6              IPV6 network support                      │ │                                   
│ │[X] LAME              LAME MP3 encoder                          │ │                                   
│ │[ ] OPENJPEG          JPEG 2000 decoder                         │ │                                   
│ │[X] OPTIMIZED_CFLAGS  Additional optimizations                  │ │                                   
│ │[X] SCHROEDINGER      Dirac codec via libschroedinger           │ │                                   
│ │[ ] SDL               SDL support (build ffplay)                │ │                                   
│ │[X] SPEEX             Speex audio decoder                       │ │                                   
│ │[ ] THEORA            Theora encoder (implies OGG)              │ │                                   
│ │[ ] VHOOK             Video hook support                        │ │                                   
│ │[X] VORBIS            Vorbis encoder via libvorbis (implies OGG)│ │                                   
│ │[X] X264              H.264 encoder                             │ │                                   
│ │[X] XVID              Xvid encoder via xvidcore                 │ │
├─└────.(+)────────────────────────────────────────────────────────┘─┤                                   
│                       [  OK  ]       Cancel                        │                                   
└────────────────────────────────────────────────────────────────────┘
Важные для нас в этой задаче кодеки: LAME – позволяет работать с mp3 файлами, GSM и SPEEX – это кодеки нужные Asteriskу.
Самая главня задача выполнена, теперь можно конвертировать файлы. Делается это так:

ffmpeg -i test.mp3 -acodec pcm_s16le -ar 8000 -ac 1  -y  done/test.wav
 
Это простейшее преобразование формата acodec определяет кодек которым будет закодирован выходящий файл, ar – определяет audio sample rate, частота дискретизации и -ac – это количество каналов. Для телефонии хватает монофонического звука, поэтому второй канал срезаем.

Вообще ffmpeg очень приятная утилита. Например если нужно уменьшить громкость, то достаточно задать флаг -vol и дальше – цифру громкости.

Выглядит это так:
ffmpeg -i test.mp3 -acodec pcm_s16le -ar 8000 -vol 550 -ac 1  -y  done/test.wav
 
Перед запуском ffmpeg нужно создать в той директории где находится файл поддиректорию done, в ней и появится после конвертации файл.

Для того что бы сконвертировать много файлов можно воспользоваться таким скриптом:
#!/bin/sh                                                                                                                                   
for i in *.mp3                                                                                                                              
do                                                                                                                                          
        ffmpeg -i $i -acodec pcm_s16le -vol 550 -ar 8000 -ac 1  -y  done/"${i%mp3}wav"                                                      
done
Enhanced by Zemanta

Качество VoIP

Аналоговый и цифровой способ передачи сигнала ...Image via Wikipedia

Основными составляющими качества IP-телефонии являются:
I. Качество речи, которое включает:
1. диалог - возможность абонента связываться и разговаривать с другим абонентом в реальном времени и полнодуплексном режиме; 2. разборчивость - чистота и тональность речи; 3. эхо - слышимость собственной речи; 4. уровень - громкость речи.
II. Качество сигнализации, включающее:
1. установление вызова - скорость успешного доступа и время установления соединения; 2. завершение вызова - время отбоя и скорость разъединения; 3. DTMF - распознавание и фиксация сигналов многочастотного набора номера.
Факторы, которые влияют на качество IP-телефонии, могут быть разделены на две категории:
I. Факторы качества IP-сети:
1. максимальная пропускная способность канала - макс. кол-во полезных и избыточных данных, которые можно передать; 2. задержка - промежуток времени, требуемый для передачи пакета через сеть; 3. джиттер - задержка между двумя последовательными пакетами; 4. потеря пакетов - пакеты или данные, потерянные при передачи через сеть.
II. Факторы качества шлюза:
1. требуемая полоса пропускания - различные кодеки требуют различную полосу пропускания; 2. задержка - время, необходимое цифровому сигнальному процессору DSP или другим устройствам обработки для кодирования и декодирования речевого сигнала; 3. буфер джиттера - сохранение пакетов данных до тех пор, пока все пакеты не будут получены и можно будет передавать в требуемой последовательности для минимизации джиттера; 4. потеря пакетов - потеря пакетов при сжатии и/или передаче в оборудовании IP-телефонии; 5. подавление эхо - механизм для подавления эхо, возникающего при передаче по сети; 6. управление уровнем - возможность регулировать громкость речи.

Влияние IP-сети на показатели качества IP-телефонии

I. Максимальная пропускная способность канала
II. Задержка
Задержка создает неудобство при ведении диалога, приводит к перекрытию разговоров и возникновению эхо. Все это становится заметным когда задержка в одном направлении передачи превышает 250 мс. Можно выделить следующие источники задержки при пакетной передачи речи из конца в конец:
1. Задержка накопления (иногда называется алгоритмической задержкой) - велечина задержки определяется типом речевого кодера и изменяется от небольших велечин (0,125 мкс) до нескольких миллисекунд; 2. Задержка обработки - процесс кодирования и сбора закодированных отсчетов в пакеты для передачи через пакетную сеть создает определенные задержки. Задержка кодирования или обработки зависит от времени работы процессора и используемого типа алгоритма обработки; 3. Сетевая задержка - задержка обусловлена физической средой и протоколами, используемыми для передачи речевых данных, а также буферами, используемыми для удаления джиттера пакетов на приемном конце.
Время задержки при передаче речевого сигнала можно отнести к одному из трех уровней:
  • первый уровень до 200 мс - отличное качество связи. Для сравнения, в телефонной сети общего пользования допустимы задержки до 150-200 мс;
  • второй уровень до 400 мс - считается хорошим качеством связи. Но если сравнивать с качеством связи по сетям ТфОП, то разница будет видна. Если задержки постоянно удерживаются на верхней границе 2-го уровня (на 400 мс), то не рекомендуется использовать эту связь для деловых переговоров;
  • третий уровень до 700 мс - считается приемлемым качеством связи для ведения неделовых переговоров. Такое качество связи возможно также при передаче пакетов по спутниковой связи.
III. Джиттер Когда речь или данные разбиваются на пакеты для передачи через IP-сеть, пакеты часто прибывают в пункт назначения в различное время и в разной последовательности. Это создает разброс времени доставки пакетов (джиттер). Джиттер приводит к специфическим нарушениям передачи речи, слышимым как трески и щелчки. Различают три формы джиттера:
1. джиттер, зависимый от данных - происходит в случае ограниченной полосы пропускания или при нарушениях в сетевых компонентах; 2. искажение рабочего цикла - обусловлено задержкой распространения между передачей снизу вверх и сверху вниз; 3. случайный джиттер - является результатом теплового шума.
IV. Потеря пакетов Потерянные пакеты в IP-телефонии нарушают речь и создают искажение тембра. Предполагается, что потеря до 5% пакетов незаметна, а свыше 10-15% - недопустима. Причем данные величины существенно зависят от алгоритмов компрессии/декомпрессии.
Источник: «IP-телефония», А.В. Росляков, М.Ю. Самсонов, И.В. Шибаева. Из-во «Эко-трендз», 2001г.
Enhanced by Zemanta

Skype SIP транк

Image representing Digium as depicted in Crunc...Image via CrunchBase

SipToSis

- это программное обеспечение которое позволяет совершать и принимать звонки Skype на SIP адаптер или SIP атс (например Asterisk).

Требования к системе для Skype Gateway


  • Skype клиент

  • Java 1.5 или выше (для Linux используйте SUN's java)

  • SIP / VoIP шлюз (например Linksys SPA 2102), или Asterisk / любая АТС с поддержкой SIP (например LG ipLDK).

Пример настройки Skype to Sip соединения для Windows и Asterisk

Есть комп под Windows с установленным Skype и комп с установленным Asterisk.

Настройки Asterisk

sip.conf
[skypetosip]
username=skypetosip
type=friend
context=your_context
secret=mypassword
host=IP адрес машины где установлен Skype (SipToSis)
dtmfmode=auto
port=5070
qualify=yes
disallow=all
allow=alaw
allow=ulaw
Настройте план набора в соответствии с вашими требованиями.
Например звонок на Эхо тест Скайп:
extensions.conf
[your_context]
exten => 123,1,Dial(SIP/skypetosip/echo123)

Факс сервер на Asterisk

Asterisk (PBX)Image via Wikipedia


Это решение отличается от факса по умолчанию во FreePBX, использующего rxfax и txfax. Вместо этого, с помощью HylaFax, вы получите полнофункциональный факс-сервер корпоративного класса.
  • CentOS 5.3
  • Asterisk должен быть установлен.
  • IAXmodem требует SPANDSP
  • HylaFax имеет зависимости:
    • libtiff-3.5.5 или выше
    • ghostscript-5.50 или выше
    • ghostscript-fonts-5.50 или выше
Скачать Hylafax
Вопросы при FaxSetup:
Should an entry be added for the FaxMaster to /etc/aliases )yes(? yes
Users to receive fax-related mail )root? ( root 
HylaFAX configuration parameters are:
1 Init script starts faxq: yes
2 Init script starts hfaxd yes
3 Start old protocol: no
4 Start paging protocol: no
Are these ok yes? yes
Скачать Iaxmodem
-Прочтите README из IAXmodem для установки.
-В завершении установки, скопируйте бинарник iaxmodem в /usr/local/sbin
Создайте файл /etc/iaxmodem/ttyIAX0
device /dev/ttyIAX0  #IAX1, IAX2 и т.д. 
owner uucp:uucp
mode 660
port 4570  #уникальный порт для каждого устройства!
refresh 300
server 127.0.0.1
peername iaxmodem0  # это IAX экстеншн в Asterisk!
secret 12345  # пароль экстеншена
cidname Fax1
cidnumber 78123216111
codec alaw
Настройте IAX экстеншн в Asterisk.
iax.conf
[iaxmodem0]
type=friend
username=iaxmodem0
context=modembank
secret=12345
host=127.0.0.1
qualify=yes
disallow=all
allow=ulaw;
trunk=no
Теперь, когда, IAXmodem сконфигурирован, научим Hylafax обращаться к нему. В исходниках IAXmodem есть файл config.ttyIAX. Скопируйте его в /var/spool/hylafax/etc/ изменяя название для каждого модема - config.ttyIAX0, config.ttyIAX1 и т.д.
Чтобы Hylafax начал принимать факсы, надо запустить IAXmodem и ttyIAX устройство. Вручную это можно сделать командами:
/usr/local/sbin/iaxmodem ttyIAX0

Несколько OpenVZ и Asterisk внутри каждой из них.

Logo de AsteriskImage via Wikipedia

Лаболаторная работа.
Дано:
1. Три (3) виртуальных среды на одной хост системе.
2. Они клоны. Во все трех запущен Asterisk.
Цель: проверить работоспособность Asterisk внутри виртуальной среды в трех экземплярах на одной хост-системе.
Тест 1.
На каждом астериске настроен диалплан, который принимает входящий звонок и 300 секунд играет входящему Music On Hold.
В три ствола прозваниваемся с той же хост системы софтфоном на все астериски одновременно. Работает.
Тест 2.
Второй астериск в 30-каналов звонит на первый. Оба астериска слушают свой Music On Hold. Параллельно автор звонит на первый и второй астериски и слушает их Music On Hold. Работает без помех.
Тест 3.
Второй и Третий астериски по 30 каналов звонят на первый. Соответственно на каждом из них открыто по 60 каналов. Параллельно звоним софтфоном на каждый из них и слушаем Music On Hold. Работает без проблем.
Вывод: Можно запустить несколько одинаковых Virtual Environment's с Asterisk IP PBX внутри на одной хост-системе. Работать будет.
Enhanced by Zemanta

Реклама от BigBN