25.02.2013 03:00, Admont пишет: > 23.02.2013 15:24, "Артём Н." пишет: >> Кто-нибудь прикручивал сабж? >> Есть ли готовые решения? >> Искал. Не нашёл. >> Очень требуется, прежде всего, для создания "вау-эффекта". > > Вроде вcё стандартно - создать action на trigger. В качестве action > использовать > запуск команды для озвучивания необходимой фразы, например в festival, и > воспроизведения. Блин, я как-то и не подумал о действиях... Да, вариант. Но крайне много минусов. Первый: передача звука. У меня есть браузер, который есть везде и запущен теми, кому это надо. У них ОС windows. Как я буду передавать звук из RHVoice, например, на windows-машину? Ставить на каждой дополнительное ПО? Второй: при добавлении каждого триггера, требуется добавлять его в действие. Ну да, текст триггера, который я хочу проговаривать, возможно прописать макросом наверное (с действиями я как-то не особо), так? Но, всё-равно, надо добавлять... Третий: он всегда будет говорить, а штатная кнопка/галочка в Zabbix - "Отключить звук" не будет работать.
Я сегодня копал эту проблемку. По крайней мере, в версии 1.8 всё сделано на JS. Код для таблицы, которая показывает триггеры, на PHP и реализуется вставкой embed/bgsound, в зависимости от браузера. Но он не особо интересен. Гораздо интереснее всплывающее окно. Там проигрывание реализовано целиком на JS. Просто браузеру передаётся тэг <audio> (там используется Prototype и видимо сделано через него, т.е. зависит от браузера). Т.е., достаточно сделать запрос (используя AJAX) к простенькому php сценарию, вызывающему синтезатор, параметром которого является текст сообщения. Синтезатор выводит звук в файл (в идеале - в именованный канал). Затем, функция вставляет путь к этому файлу в теге <audio>. Добавляется всё в файле zabbix/js/classes.что-то-там-messages. В методе playSound. Там, где message.sound = , очевидно вместо оригинального sound: message.sound = "wav_channel.wav". При этом, файл должен находиться в каталоге audio (иначе, придётся малость переделать функцию create в main.js). Текст триггера возможно взять из message (большой объект). Регулярными выражениями на JS возможно сделать всё, что угодно. Если кого интересует и у меня будет готовый вариант, могу выкинуть сюда. Единственное почему у меня не пошло: синтезатор вылетал с ошибкой Segmentation fault, когда запускался через сервер. При простом запуске php speechsint.php, всё работало: файл создавался, звук проигрывался. Видимо, это вызвано тем, что я запускал скомпилированный на Squeeze синтезатор, на FC 12, которая установлена на сервере. Когда дадут отдельные железные машины, организую несколько виртуалок и поставлю на виртуалку для мониторинга что-нибудь нормальное (Debian, например). Но, может, и сейчас кто прольёт свет: почему синтезатор вылетает, при запуске через сервер, хотя так запускается? -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

