Звонит клиент. Как ему проиграть НЕСКОЛЬКО файлов при ответе
Добавлено: 23 окт 2017, 16:57
Задача: при входящем звонке в момент поднятия трубки оператором нужно проиграть НЕСКОЛЬКО файлов оператору и НЕСКОЛЬКО файлов клиенту. В идеале одновременно, но буду рад и последовательному.
Решение 1
Можно просто проиграть оператору ОДИН файл, а после этого обоим одинаковый другой файл, но тоже ОДИН:
Если с логикой еще можно стерпеться, то с количеством файлов никак не могу - нужно именно несколько отдельных файлов клиенту и несколько других файлов оператору.
Решение 2
Можно через макрос добиться проигрывания НЕСКОЛЬКИХ файлов оператору и ОДИН файл клиенту.
Тут почти как нужно, оператору играем сколько хотим файлов. Правда в этом время клиент просто ждет слушая гудки - это минус.
Но клиенту мы по прежнему играем только ОДИН файл! Как сделать несколько?
Пробовал указывать несколько файлов через символы , ^ | &, но ничего не помогло (считает эти спец.символы за часть имени файла и не находит его).
Решения 3, 4 и 5
Пробовал несколько вариантов через Originate и ChanSpy:
и так:
Но в этом случае возникает параллельный звонок оператору, а не клиенту. Пробовал подставлять канал клиента - пишет занято.
При ChanSpy речь произносится обоим, но при этом и голос слышится. А мне нужно, чтобы речь людей не была слышна друг другу до проигрывания нескольких файлов.
Можно попробовать создать call-файл. Но что-то не догоняю саму суть - с какой командой?
Чую, что нужно сунуть ногу к клиенту (пока не соединенному с оператором) и проговорить файлы.
И хотелось бы избежать параллельных звонков, они мусорят всюду. Хотелось бы как-то нативно и логично: одной стороне вызвать одни Playback'и, другой стороне другие и после этого сбриджевать абонентов.
Как, толкните меня в правильное русло, весь мозг выел себе уже
Решение 1
Можно просто проиграть оператору ОДИН файл, а после этого обоим одинаковый другой файл, но тоже ОДИН:
Код: Выделить всё
channel["LIMIT_PLAYAUDIO_CALLER"]:set("yes")
channel["LIMIT_PLAYAUDIO_CALLEE"]:set("yes")
channel["LIMIT_CONNECT_FILE"]:set("client1")
app.dial("SIP/50,60,L(9999999)A(operator1)")
Решение 2
Можно через макрос добиться проигрывания НЕСКОЛЬКИХ файлов оператору и ОДИН файл клиенту.
Код: Выделить всё
function test_dial_takeup(ctx, ext)
app.background("operator1")
app.background("operator2")
app.background("operator3")
app.background("operator4")
app.background("operator5")
end
...
...
channel["LIMIT_PLAYAUDIO_CALLER"]:set("yes")
channel["LIMIT_PLAYAUDIO_CALLEE"]:set("yes")
channel["LIMIT_CONNECT_FILE"]:set("client1")
app.dial("SIP/50,60,M(test-dial-takeup)L(9999999)")
Но клиенту мы по прежнему играем только ОДИН файл! Как сделать несколько?
Пробовал указывать несколько файлов через символы , ^ | &, но ничего не помогло (считает эти спец.символы за часть имени файла и не находит его).
Решения 3, 4 и 5
Пробовал несколько вариантов через Originate и ChanSpy:
Код: Выделить всё
app.Originate("Local/50@test,app,Playback,operator1")
Код: Выделить всё
app.Originate("SIP/50,app,Playback,operator1")
Код: Выделить всё
app.ChanSpy("SIP/" .. ext .. ",BEq")
Можно попробовать создать call-файл. Но что-то не догоняю саму суть - с какой командой?
Чую, что нужно сунуть ногу к клиенту (пока не соединенному с оператором) и проговорить файлы.
И хотелось бы избежать параллельных звонков, они мусорят всюду. Хотелось бы как-то нативно и логично: одной стороне вызвать одни Playback'и, другой стороне другие и после этого сбриджевать абонентов.
Как, толкните меня в правильное русло, весь мозг выел себе уже