суббота, 20 февраля 2010 г.

Начинаем изучать Oracle 11g

Давненько уже приходиться периодически иметь дело с Oracle. В основном это 9i и в основном это касается написания самых разных запросов и скриптов, периодически создания пакетов. Но порой приходить по мере сил заниматься администрированием. Каюсь что специализированные книги были прочитаны лишь отчасти и зачистую лишь по возникающим в конкретный момент времени задачам.
Но Oracle это такая вещь, которая не поощряет легкомыслия и требует глубокого понимания предмета, а обучающие курсы Oracle для меня слишком дороги + за меня их оплачивать никто не будет. Много раз порывался начать изучать самостоятельно и ответственно, но постоянно дело вскоре застревало.
Как результат, могу поставить его на линукс, но испытываю проблемы с запуском после перезагрузки. Наладил guard recovery и несколько полезных скриптов для управления бэкапами, но не могу нормально разобраться с быстродействием базы...
Поэтому сейчас сного приступаю к изучению, надеюсь подойти к этому делу ответственно и добиться более существенных результатов чем в предыдушие разы, соответственно постараюсь описать в последующих статьях полученный в процессе опыт и знания, особенно останавливаясь на возникших у меня трудностях.

Сейчас качается Oracle Enterprise Linux 5.4, после этого приступлю к его установке и установке на него Oracle 11g. А дальше пойдут опыты и всякие особые вопросы, возникающие в процессе.

четверг, 11 февраля 2010 г.

Запись звонков в Elastix

Задача: Включить запись разговоров и переопределить стандартную директорию хранения аудио файлов с этими записями.

Выполнение:
Первой логичной мыслью было бы в Web консоле зайти в раздел PBX - PBX Configuration - General Settings. Там есть раздел Call Recording, выставить Extension Recording Override: Enabled и указать путь к новому месту хранения файлов.
По моему понимаю это должно включить запись разговоров для всех, но как оказалось данное действие наоборот полностью убивает запись звонков если она изначально была. Кстати, мало ли пригодиться, путь для хранения файлов по умолчанию /var/spool/asterisk/monitor
В итоге для того чтобы сделать запись звонков в нужное мне место нужных пользователей необходимо:
1. Для конкретного пользователя (Extension) выставить опции Record Incoming и Record Outcoming в Always. Это приведет к тому что все разговоры с их участием будут записываться.
2. Отредактировать файл extensions_additional.conf. Для этого можно например в веб консоле перейти в раздел PBX - Tools - File Editor. В этом файле надо найти раздел [macro-record-enable] и внутри него, в последней строчке, заместо ${MIXMON_DIR} ввести абсолютный путь к своей дирректории. В моем случае этот кусок выглядит следующим образом:

[macro-record-enable]
include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),AGI(recordingcheck,${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)},${UNIQUEID})
exten => s,n,MacroExit()
exten => s,1+998(record),MixMonitor(/some_dir/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})


После этого перезагружаем asterisk, например коммандой

service asterisk restart

Теперь разговоры выбранных пользователей сохраняются в указаной дирректории.

Кстати, в разделе PBX - monitoring они больше отображаться не будут.

Дополнение:
Как выяснилось в последствии (хотя это и было написано в самом начале файла extension_additional.conf), файл этот генериться автоматически, как следствие при изменениях он переписывается и все изменения теряются
В разделе [macro-record-enable] по умолчанию используется переменная MIXMON_DIR для указания куда складывать файлы, вот ее то и можно переопределить в файле globals_custom.conf
Достаточно туда добавить строку

MIXMON_DIR = /some_dir/

Теперь все файлы будут складываться в нужную нам директорию.

P.S. Вместе с этой задачей у меня возникла необходимость примонтировать сетевую виндовую папку на которую было сделано ограничение по правам доступа, то есть подключаться нужно с указанием польхзователя и пароля. Для этого использовалась комманда

mount -t cifs //your_server_name_or_ip/dir_name /mnt -o username=username -o password=password