Автоинформатор с произвольным текстом

Пришла с час назад идея облегчить жизнь нашему персоналу — по ночам уведомлять их о падении оборудования телефонным звонком. При чем так, чтобы не просто «у вас что-то сломалось», а с указанием точного адреса.

Модуль мониторинга — где-то у админов, по событию они могут сгенерировать строку с адресом и номером телефона ответственного, так что задача сводится к тому, чтобы:

  • Получить параметры
  • Сформировать коллбек
  • После поднятия трубки — продиктовать полученный адрес.

Нам потребуются:

  • Сервер с астериском
  • ffmpeg. Можно в дефолтной конфигурации
  • apache (у меня с mod_rewrite чтобы ограничить доступ к функционалу только конкретным инстансам)
  • 15 минут времени

Итак, приступим.

Научить астериск разговаривать гуглоголосом — нетрудно. Вот здесь ребята заморочились и сделали скрипт, который примет параметром текст, отдаст его на озвучку гуглу, заберет готовый mp3 и перекодирует в понятный астериску файл, после чего выдаст потоком.

Небольшая доработка напильником — и мы получаем скрипт в 30 строк, который реализует нужные нам функции.

Код скрипта »

say.php

Правила для Астериска — также не представляют из себя ничего военного

Диалплан »

Для получения параметров от инициатора вызова в простейшей форме используется php-скрипт, принимающий параметры через $_GET. В дальнейшем возможно перепишем под $_POST.

Страница получения параметров »

Что получаем в итоге

  • Внешний софт для инициирования уведомления посылает CURL формата /pingersay.php?destination=380комузвонить&message=»что говорить»
  • Страница формирует call-файл для коллбека, передавая локальные переменные для контекста. Переменные, описанные в call-файле, доступны для чтения в текущем контексте на всех этапах звонка.
  • Коллбек инициируется через localchannel, с передачей управления в контекст incoming-ip.from-system-pinger, где можно дополнительно играться с параметрами вызова первого плеча при необходимости
  • после соединения — управление передается в тот же контекст на экстеншен s, где вызывается созданный нами скрипт-говорилка, принимающий параметром текст.
  • PROFIT

Недостатки:

  • Гуглоробот не всегда корректно проставляет ударения в тексте
  • Гуглоробот гнусавит (да, гнусавит женским голосом)
  • Гуглоробот говорит довольно тихо. опция -vol в строке транскодинга почему-то не помогла увеличить громкость.

Требует доработки:

  • Громкость. Нужно пересобрать FFMpeg.
  • Передача параметров через форму.

Однако, как для реализованного за 15 минут механизма, получилось довольно неплохо.

| Рубрики: Asterisk, Linux, VOIP

| Метки: ,

Оставить комментарий

Вы должны быть авторизованы, чтобы оставить комментарий.

Авторизация