AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Проигрывание аудио файлов во время разговора

Newbies/FAQ Forum 15 сообщений -
#1

Уважаемый форумчане, столкнулся вот с таким заданием. Нужно во время разговора проигрывать аудио файлы. Например оператор делает звонок и начинает опрашивать респондента. На каждый вопрос он должен проиграть аудио файл. Покопался в иненте, нашел:

[ConferenceAudio]
; Users would join the conference at extension 100
exten => 100,1,Goto(start,1)

; Trigger audio playback with extension 200
exten => 200,1,Originate(Local/inject@ConferenceAudio/n,exten,
ConferenceAudio,quiet_join,1)

; Users join the conference here
exten => start,1,NoOp()
same => n,Answer()
same => n,MeetMe(31337,d)
same => n,Hangup()

; Use a couple flags to quietly enter the conference
exten => quiet_join,1,NoOp()
same => n,Answer()
same => n,MeetMe(31337,dtq)

; This triggers the file to be played into the conference
exten => inject,1,NoOp()
same => n,Playback(silence/1&tt-weasels)
same => n,Hangup()

Подскажите пожалуйста, в том ли направлении работаю? Или есть еще какие то варианты?
#2

Не в том. feautures.conf в помощь. Что угодно можно поставить на практически какие угодно кнопки.
То есть, грубо говоря,
*1 - проиграть первый файл
*2 - второй
*3 - третий
и т. д.
*50 - пятидесятый
#3

Спасибо, но список аудио файлов заранее не определен. Например есть несколько проектов по которым звонят операторы и для каждого проекта свой набор файлов и свое количество. Возможно как то подключиться к каналу по которому идет разговор и проиграть там файл. Потом отключиться. Ну что то по принципу ChanSpy, только добавить проигрывание файла
#4

Вы можете для разных проектов использовать что-то типа exten => 555,1,Set(DYNAMIC_FEATURES=audio_proekt1)

Или же вообще хранить кучи вариантов в DB и загружать их в динамике

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#5

Да-да. Если подойти с умом, то возможности даже просто по этой теме практически неограничены.
Позвонил клиент? Менеджеру на компе автоматом высветилась вся инфа (берём по callerid) + какие звуки конкретно у него будут на каких кнопках для этого конкретного клиента.
#6

А можно как то автоматизировать заполнение features.conf, чтобы наборы звуков можно было программно(динамически) формировать, а не выбирать из уже существующих. Поскольку проекты постоянно меняются и править этот файл при создании нового проекта как то не очень хорошо.
#7

Читай мой пост насчет DB
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#8

Уточните пожалуйста, как
Цитата:
загружать их в динамике
#9

ну как, как...
Вызываем макрос, а он уже разбирает всё что хочет. Запросы к базе, выборка нужных данных...
#10

Я бы сразу аги делал. С тем.что у.вас есть уже матросы немаленькие, а если добавить функций то вообще будет.
Но на данном этапе features / sh / macro подходят.

Советую app_conference, meetme нестабильна временами. Решение на app_conference много надежнее.
#11

Ну все, вроде бы, разобрался. Огромное спасибо всем за помощь и указание правильного пути.
Если кому интересно, то сделал все через phpAGI:
1. При звонке в БД записываю название канала, по которому идет разговор, только пропускаю его через URLENCODE() - иначе Originate не выполнится

Для аудио-вставок:
1. В плане набора прописал екстеншн, который перенаправляет на выполнение аги скрипта.
exten => _*4XXX,1,Answer
exten => _*4XXX,n,AGI(scripts/Main.php,listen)
exten => _*4XXX,n,Hangup

XXX - caller_id

еще прописал

[whisper-channel]

exten => _spy-.,1,NoOp()
same => n,Set(EncodedChannel=${CUT(EXTEN,-,2-3)})
same => n,Set(ChannelToSpy=${URIDECODE(${EncodedChannel})})
same => n,ChanSpy(${ChannelToSpy},wsqEB)
same => n,Hangup()

exten => audio,1,NoOp()
same => n,Answer()
same => n,Wait(0.4)
same => n,Set(VOLUME(TX)=-3)
same => n,Playback(/usr/share/asterisk/agi-bin/test)
same => n,Hangup()

2. Потом в скрипте получаю название канала по caller_id и выполняю $this->agi->exec('Originate',"Local/spy-".$res['chanel_name']."@whisper-channel,exten,whisper-channel,audio,1");
И все, вроде гуд. Возможно метод немного кривоватый, но все же рабочий. Для моей задачи вполне подходит Smile
#12

сделал все как написал автор, но столкнулся с проблемой. Мне нужно чтоб музыка играла с первых секунд прихода звонка на сервак, пользователь мог донабирать дтмф и все такое... у меня получается так, что музыка пробивается только тогда. когда есть плейбек какого-то сообщения в основной канал, дальше тишина ((
#13

Вы, часом, не early media пробуете гонять т.е. гнать звук в канал который еще не в отвеченном состоянии? Не у всех операторов такое прокатывает.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#14

так везде ансвер стоит, та и после плейбэка музыку тоже не слышу... ( но вот во время плейбэка слышу музыку, т.е. чанспай нормально подключается к каналу и произрывает файл, но его слышно только тогда, когда в основном канале плейбэк... и с сервака ртп пакеты идут только тогда, когда играет плейбек основного канала(
#15

У кого-то вообще работало это? Я вижу много тем, но никто не говорит что нормально работает. Может астериск не умеет отрабатывать нормально такое?