Asterisk Dialplan (extensions.conf) Приложения - PullRequest
2 голосов
/ 30 мая 2009

Я разрабатываю приложение, которое позволит пользователям получать доступ к своим почтовым ящикам с помощью своих телефонов. Я разработал меню IVR, которое пользователи будут использовать для получения своих писем. Более конкретно я пишу AGI в Perl для получения почты. Проблема в том, что выполнение AGI занимает довольно много времени. Для этого мне нужно, чтобы мои пользователи слышали музыку, воспроизводимую в фоновом режиме, во время выполнения agi. То есть мне нужно, чтобы приложения «AGI» и «MusicOnHold» в моей диалплан выполнялись одновременно. Любая подсказка, как я могу этого достичь?

Ответы [ 3 ]

1 голос
/ 30 мая 2009

Вы можете выдать SET MUSIC ON от вас AGI приложений, обработать ваши расчеты, а затем выдать SET MUSIC OFF.

Если вы хотите, чтобы музыка была прерывистой, введите следующее:

CONTROL STREAM FILE <filename> "0123456789*#" "0" "" "" ""

Вторым параметром является список цифр, способных прерывать музыку.

Лучше не смешивать AGI и команды диалплана.

AGI способен на все, на что способен dialplan, но AGI реализован на полноценном языке программирования и, следовательно, дает вам больший контроль над логикой выполнения.

1 голос
/ 30 мая 2009

Возможно, это не тот ответ, который вы ожидали, но если вы планируете создать подходящее приложение для работы по телефону, обратите внимание на другие решения, кроме звездочки. И yate, и (насколько я знаю - никогда не пробовал это для чего-то серьезного) freeswitch реализуют более асинхронный интерфейс, где вы можете подключить входящий вызов к любому источнику звука, который вы хотите, не теряя контроля над ним. Они могут быть намного лучшим выбором для продвинутых приложений.

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

0 голосов
/ 05 июня 2009

Завершение выполнения занимает много времени или просто запуск приложения? Если все исполнение занимает слишком много времени, вы можете делать то, что говорит Quassnoi, запускать музыку сразу после запуска программы AGI.

Если время запуска является проблемой, вам может потребоваться реализовать что-то с помощью FastAGI, чтобы ваше приложение всегда работало и прослушивало соединения через сокет. Производительность намного лучше в среде с большим количеством вызовов AGI.

...