Страница 2 из 2
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 08:48
odmin4eg
# cat extensions_minivm.conf | grep exten => h,
Код: Выделить всё
; If the user hangs up during the recording, we need to clean up
exten => h,1,gotoif($[x${MINIVM_DELETE_STATUS} != x] ?h,stop)
exten => h,n,noop(------------------------------------------- HANGUP during voicemail recording -------------)
exten => h,n,goto(minivmcleanup,1)
exten => h,n(stop),noop(---Minivm DONE----)
.....
exten => h,1,gotoif($[${MINIVM_RECORD_STATUS} = SUCCESS]?sendvmcleanup,1))
сколько примеров не искал так и не не понял как оно работает все пишут типо да тебе нужен контекст h, а что как почему
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 11:25
ded
В платном суппорте расскажут - что, как и почему.
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 12:39
odmin4eg
Сделал вот так
Код: Выделить всё
exten => 31262,1,Playback(/var/lib/asterisk/sounds/helo8)
exten => 31262,2,Record(/tmp/asterisk/%d-${CALLERID(number)}-as:wav,,,noanswer)
exten => h,1,System(bash /request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => h,2,Hangup
exten => 31262,3,System(bash /request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => 31262,4,Wait(2)
exten => 31262,5,Hangup
Теперь если я бросаю трубку то всё отрабатывает...
типо всё круто, но если вдруг я после записи слов жму решотку, то вызов систем выполняется 2 раза.
что почитать на эту тему? какая переменная примерно отвечает за состояние звонка, чтоб исключить выполнения сначала
exten => 31262,3,System
а потом
exten => h,1,System
типо если выполнилось одно то второе не выполнять, можно это как-то флагами\переменными отловить?
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 12:44
odmin4eg
ded писал(а):В платном суппорте расскажут - что, как и почему.
Тоже вариант, пойду туда когда будет стоять коммерческий интерес, проще конечно довериться спецам, чем самому городить, а так как-то не шибко интересно
я в своей области стараюсь помогать людям когда спрашивают в моей тематике, понятно что многих отправляем в гугл, типо бугага он не знает как собрать рейд и настроить маршрутизацию
но всёж
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 12:53
Vlad1983
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 14:32
ded
Модуль Dictation стандартной конфигурации freePBX.
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 28 янв 2013, 18:18
odmin4eg
Код: Выделить всё
Дистрибутивный комплект Asterisk и пакет дополнений asterisk-sounds содержат около 1000 голосовых сообщений на английском языке (голос принадлежит дамочке по имени Allison Smith). В качестве альтернативы можно записать мессаджи на русском/украинском/суахили самостоятельно, но для этого необязательно прибегать к аудиоредактору типа Audacity. Нижеследующее дополнение в диалплан обеспечит возможность звонить на номер *98 и записывать сообщения в папку /tmp под именами myrecordНОМЕР.wav. После завершения записи (осуществляется нажатием #) звуковой файл будет воспроизведен, и соединение разорвется. Примечание: чтобы уровень громкости был постоянным, а «белый» шум, создаваемый системами отопления/охлаждения/кондиционирования, сведен к минимуму, для записи лучше воспользоваться аппаратным VoIP-телефоном.
exten => *98,1,Answer()
exten => *98,n,Wait(2)
exten => *98,n,Record(/tmp/myrecord%d:wav)
exten => *98,n,Wait(1)
exten => *98,n,Playback(${RECORDED_FILE})
exten => *98,n,Wait(1)
exten => *98,n,Hangup()
Не забудь скопировать/перенести полученный файл из временной директории в папку для звуковых файлов Asterisk и наделить его каким-нибудь осмысленным именем, вроде privetstvie.wav. Кстати, голосовые сообщения лучше не конвертировать в gsm/mp3/ogg, чтобы на проц не легла дополнительная нагрузка по преобразованию.
спасибо за информацию но вроде по постам выше я с этим разобрался.
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 29 янв 2013, 05:31
odmin4eg
пробую разрулить эту ситуацию через DIALSTATUS
Код: Выделить всё
exten => 31262,1,Playback(/var/lib/asterisk/sounds/helo8)
exten => 31262,2,Record(/tmp/asterisk/%d-${CALLERID(number)}-as:wav,,,noanswer)
exten => 31262,3, Dial(SIP/zadarma-00000001,60)
exten => 31262,n, Goto(${EXTEN}-${DIALSTATUS},1)
;Всё успешно
exten => 31262-ANSWER,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => 31262-ANSWER,2,Wait(2)
exten => 31262-ANSWER,3,Hangup
;Типо сбросили
exten => 31262-CANCEL,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => 31262-CANCEL,2,Wait(2)
exten => 31262-CANCEL,3,Hangup
;Это срабатывает почему-то когда жму # вконце
exten => 31262-CHANUNAVAIL,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => 31262-CHANUNAVAIL,2,Wait(2)
exten => 31262-CHANUNAVAIL,3,Hangup
куда только не пытался вставить вот это
Код: Выделить всё
exten => h,1,System(bash /request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => h,2,Hangup
никак не избавился от 2ного срабатывания при том что я положил трубку
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 29 янв 2013, 07:38
odmin4eg
Криво косо но решил проблему поставил флаг удачной записи и в h сделал проверку на этот флаг
Код: Выделить всё
exten => 31262,1,Playback(/var/lib/asterisk/sounds/helo8)
exten => 31262,2,Set(Flag=1)
exten => 31262,3,NoOp(${Flag})
exten => 31262,4,Record(/tmp/asterisk/%d-${CALLERID(number)}-as:wav,,,noanswer)
exten => 31262,5, Dial(SIP/zadarma-00000001,60)
exten => 31262,n, Goto(${EXTEN}-${DIALSTATUS},1)
; тут проверка успешно ли прошла запись или нет если успешно то пропускаем системный выхов
exten => h,1,NoOp(${Flag})
exten => h,2,GotoIf($[${Flag}=0]?h,4)
exten => h,3,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => h,4,Hangup
; Сюда почему-то уходит если нажать решотку при окончании записи
exten => 31262-CHANUNAVAIL,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
exten => 31262-CHANUNAVAIL,2,Wait(2)
exten => 31262-CHANUNAVAIL,3,Set(Flag=0)
exten => 31262-CHANUNAVAIL,4,NoOp(${Flag})
exten => 31262-CHANUNAVAIL,5,Hangup
и отдельный вопрос почему при успешном или сбросе не попадает вот сюда...
Код: Выделить всё
;exten => 31262-ANSWER,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
;exten => 31262-ANSWER,2,Wait(2)
;exten => 31262-ANSWER,3,Hangup
;exten => 31262-CANCEL,1,System(bash request/${CALLERID(number)}/?temp_file=${RECORDED_FILE}.wav)
;exten => 31262-CANCEL,2,Wait(2)
;exten => 31262-CANCEL,3,Hangup
Re: Принять внешний звонок и сохранить в файл то что скажут
Добавлено: 29 янв 2013, 11:22
ded
Вы не читаете документацию, потому такие вопросы возникают. На шагах
exten => 31262,5, Dial(SIP/zadarma-00000001,60)
exten => 31262,n, Goto(${EXTEN}-${DIALSTATUS},1)
не всегда линейное последовательное выполнение кода далплана сверху вниз. На шестой шаг вниз переходит только при неблагоприятном исходе команды Dial, fа при благоприятном исходе (ANSWER) - уходит как-бы вбок. Где можно поймать по cтатусам
exten => s-ANSWER
exten => s-BUSY
exten => s-CANCEL
core show application Dial
*CLI>
-= Info about application 'Dial' =-
[Synopsis]
Place a call and connect to the current channel
[Description]
Dial(Technology/resource[&Tech2/resource2...][,timeout][,options][,URL]):
This application will place calls to one or more specified channels. As soon
as one of the requested channels answers, the originating channel will be
answered, if it has not already been answered. These two channels will then
be active in a bridged call. All other channels that were requested will then
be hung up.
Unless there is a timeout specified, the Dial application will wait
indefinitely until one of the called channels answers, the user hangs up, or
if all of the called channels are busy or unavailable. Dialplan executing will
continue if no requested channels can be called, or if the timeout expires.
This application sets the following channel variables upon completion:
DIALEDTIME - This is the time from dialing a channel until when it
is disconnected.
ANSWEREDTIME - This is the amount of time for actual call.
DIALSTATUS - This is the status of the call:
CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL
DONTCALL | TORTURE | INVALIDARGS