Технический псто.
Возникла задачка записывать входящие телефонные вызовы. Asterisk, ага. Но просто записать мало. Надо ещё и по папочкам разложить для удобства дальнейшего поиска и прослушивания. "Заказчик" попросил сделать иерархическую структуру каталогов вида "Год" → "Месяц" → "День" → "ID_ответившего" (сверху вниз). А сам звуковой файл называть по шаблону "ЧЧММСС_НомерАбонента". Таким образом, мы сперва находим нужную дату, там открываем каталог со всеми принятыми данным сотрудником вызовами, после чего зная время и номер звонившего, можем отыскать требуемый файл.
Внутри Asterisk-а, понятно, используем приложение "MixMonitor", для раскладывания по папочкам написал несложный Bash-скрипт. Вот он.
Немного комментариев.
В первом цикле "while read" мы забираем у Asterisk-а все AGI-переменные, которые он нам хочет отдать через стандартный ввод. Попутно очищаем их значения от двоеточий и присваиваем "нормальным" bash-евским переменным вида "$agi_блаблабла".
Asterisk-у в MixMonitor-е говорим складывать все записи в некоторый временный файл, имя которого совпадает с именем инициирующего канала. Это делается как-то так.
После этого внутри башевского скрипта пресловутое имя канала можно узнать из переменной "$agi_channel" (которую до того нам отдали на стандартный ввод).
Потом спрашиваем у Asterisk-а какое он запускал приложение до того, как дёрнул наш скрипт. Если там было не "Dial", а что-то другое, то проходим мимо, ничего не делаем. Нам это не интересно.
Если же это был таки реальный разговор с реальным человеком, то спрашиваем (у стандартного вывода, где слушает Asterisk) в котором же часу стартовал этот достойный внимания звонок и кто на него ответил. Дату-время парсим при помощи стандартной утилиты "date" (у "голого" баша функции работы с текстом оставляют желать лучшего), а из имени SIP-канала "жадно" ("greedy") забираем только то, что между символами "/" (слэш) и "-" (минус).
Остаётся только создать директорию с желаемым именем, если таковой ещё не существует и положить туда файлик с записью. Попутно при помощи sox-а дописываем к нему заголовок (около 50 байт) с мета-информацией, дабы его могли без лишних вопросов воспроизводить распространённые медиапроигрыватели.
По осуществлении всех махинаций временный аудиофайл удаляем.
Усё.