Пользовательское действие IVR в Asterisk - PullRequest
2 голосов
/ 15 декабря 2008

Не могли бы вы, кто-то, укажите мне направление, пример кода или онлайн-ресурс для выполнения следующих действий:

Требования: Я хотел бы написать простой пункт меню IVR, который будет запускать скрипт (Bash или Python). Например, позвоните на компьютер Asterisk и запросите перезапуск службы на другом компьютере Linux. Детали «другого Linux-бокса» будут жестко запрограммированы в пункте меню IVR, и их не нужно будет указывать как часть взаимодействия с IVR - просто перезапустите службу X на блоке Y. Я немного обеспокоен и не уверен, как можно это сделать с помощью пароль (даже если он жестко запрограммирован в версии).

Справочная информация: Я новичок в Asterisk и установил его из дистрибутива AsteriskNow, и я все еще изучаю этот продукт. Основные функциональные возможности УАТС работают и управляются через FreePBX. Asterisk не является нашей основной целью разработки, а скорее инструментом в наборе инструментов. В основном мы работаем с .NET, но обладаем навыками Unix.

Если возможно, я бы не хотел потратить дни на изучение интегрированных деталей Asterisk, чтобы выполнить работу ...

Ответы [ 3 ]

4 голосов
/ 04 сентября 2010

Звездочка не всегда ждет ввода пользователя. Только во время команд Background, WaitExten, Read. Если вы используете Playback (), Asterisk игнорирует все DTMF во время воспроизведения аудиофайла.

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

Вместо

exten => x,n,Playback(yourfile) 
exten => x,n,somethingelse...

вам нужно

exten => x,n,Read(Exit,yourfile,1)
exten => x,n,GotoIf($["${Exit}" = "0"]?0,1) 
exten => x,n,somethingelse...
2 голосов
/ 20 февраля 2009

Будете ли вы настраивать Asterisk только для этого или он будет заниматься другими вещами, такими как АТС, IVR и т. Д.?

Если вы занимаетесь чем-то другим с Asterisk, то настройте скрытое расширение (не рекламируемое в меню IVR), которое вы сможете набрать после подключения; в этом расширении вы можете проверить идентификатор вызывающего абонента и сравнить его с вашим номером, чтобы только вы могли выполнить скрипт (вы можете повысить безопасность, запрашивая PIN-код, чтобы вам было легче отдыхать, если вы не можете найти ваш телефон).

Примерно так:

<code>exten => 9999,1,GotoIf($["${CALLERID(num)}" = "yournumber"]?4)
exten => 9999,2,Playback(sorry)
exten => 9999,3,Hangup
exten => 9999,4,Read(Pin,please-enter-pin,4)
exten => 9999,5,AGI(your-script)

В вашем скрипте вы проверяете переменную Pin и, если она действительна, выполняете, иначе завершаете работу, ничего не делая. Таким образом, вам не нужно жестко кодировать пин-код внутри плана набора, на который может взглянуть кто-то еще ... если это доверенный компьютер, то вы можете проверить пин-код прямо в плане набора:

<code>exten => 9999,5,GotoIf($["Pin" != "1234"]?2)
exten => 9999,6,AGI(your-script)
2 голосов
/ 15 декабря 2008

Страница Asterisk AGI содержит ссылки на приложения на многих языках программирования. Если вы делаете в основном .NET, возможно nasterisk или более старый MONO-TONE помогут.

...