перед настройкой диалплана астериска лезем в базу и смотрим ID переменной night (лениво было писать выборку по имени, в принципе можно переписать значение переменной)
в диалплан добавляем проверку включения или выключения режима:
/mnt/disk2/ast/menu/ - путь к файлам меню (изменить на свой)
в начало файла extensions.conf Добавляем пути, куда будут записываться разговоры
Код: Выделить всё
[globals]
WAV=/mnt/disk2/ast/wav
MP3=/mnt/disk2/ast/mp3
1. записываем звуковое сообщение ночной и дневной режим (99# вызов) (если используете мои файлы, можно это пункт пропустить)
Код: Выделить всё
;запись голоса для меню
exten => _99,1,Wait(2)
exten => _99,n,Set(filename=${STRFTIME(${EPOCH},,%Y-%m-%d_%H_%M_%S)})
exten => _99,n,Record(/mnt/disk2/ast/menu/${filename}:wav)
exten => _99,n,Wait(1)
exten => _99,n,Playback(/mnt/disk2/ast/menu/${filename})
exten => _99,n,Wait(2)
exten => _99,n,Hangup()
Код: Выделить всё
exten => day-gw,1,Playback(/mnt/disk2/ast/menu/r_day)
exten => day-gw,2,Return
exten => night-gw,1,Playback(/mnt/disk2/ast/menu/r_night)
exten => night-gw,2,Return
;проверка режима
exten => 55,1,MYSQL(Connect connid localhost db_user db_password db_terminal)
exten => 55,2,MYSQL(Query resultid ${connid} SELECT VALUE,PROPERTY_ID FROM pvalues WHERE PROPERTY_ID='54')
exten => 55,3,MYSQL(Fetch fetchid ${resultid} pDayNight)
exten => 55,4,GosubIf($[${pDayNight} = 0]?day-gw,1:night-gw,1)
exten => 55,5,Playback(/mnt/disk2/ast/menu/${pDayNight})
exten => 55,6,MYSQL(Clear ${resultid})
exten => 55,7,MYSQL(Disconnect ${connid})
exten => 55,8,Hangup()
Код: Выделить всё
;входящие с linksys3102
[from-gw]
exten => 10,1,Answer()
exten => 10,2,MYSQL(Connect connid localhost db_user db_password db_terminal)
exten => 10,3,MYSQL(Query resultid ${connid} SELECT VALUE,PROPERTY_ID FROM pvalues WHERE PROPERTY_ID='54')
exten => 10,4,MYSQL(Fetch fetchid ${resultid} pDayNight)
exten => 10,5,GotoIf($[${pDayNight} = 0]?13:6)
exten => 10,6,Set(filename=${STRFTIME(${EPOCH},,1night-%Y-%m-%d_%H_%M)}-${CALLERID(number)}-${EXTEN}-in)
exten => 10,7,Set(monopt=nice -n 19 /usr/bin/lame -b 16 --silent "${WAV}/${filename}-in.wav" "${MP3}/night/${filename}.mp3" && rm -f "${WAV}/${filename}-in.wav" && rm -f "${WAV}/${filename}-out.wav")
exten => 10,8,Monitor(wav,${MP3}/night/${filename})
exten => 10,9,Playback(/mnt/disk2/ast/menu/menu_night)
exten => 10,10,MYSQL(Clear ${resultid})
exten => 10,11,MYSQL(Disconnect ${connid})
exten => 10,12,Hangup()
exten => 10,13,Set(filename=${STRFTIME(${EPOCH},,%Y-%m-%d_%H_%M)}-${CALLERID(number)}-${EXTEN}-in)
exten => 10,14,Set(monopt=nice -n 19 /usr/bin/lame -b 16 --silent "${WAV}/${filename}.wav" "${MP3}/${filename}.mp3" && rm -f "${WAV}/${filename}.wav")
exten => 10,15,MixMonitor(${WAV}/${filename}.wav,,${monopt})
exten => 10,16,Dial(SIP/10,60,t)
exten => 10,17,Hangup()
1 - поднятие трубки
2-4 - подключение к базе и считывание данных
5 - проверка значения
6-12 - проигрывание звукового сообщения при включении ночного режима
8 - можно убрать, пишет в папку что говорит звонящий когда слушает сообщение, можно убрать.
с 13 до конца - дневной режим, стандартный звонок
13-15 - запись разговора и конвертация сразу в mp3
16 - звоним на SIP/10 - это fxs linksys 3102
17 - вешаем трубку.
Если будете добавлять или убирать строки, то не забудьте поправить в 5-й строке ссылки на 13-ю и 6-ю
Вот собственно и все, проверка режима нужна только при отладке и можно её не делать и пропустить 1 и 2-й пункты.