Миграция программы взаимодействия Asterisk в веб-приложение из сценария Python из командной строки - PullRequest
1 голос
/ 19 февраля 2011

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

Вот что у меня сейчас: простой скрипт на python, который позволяет кому-то взаимодействовать с интерфейсом менеджера через командную строку. В основном, как работает скрипт: 1) Подключается к интерфейсу Asterisk Manager. 2) Получает два телефонных номера от пользователя на CLI. 3) Происходит два звонка 4) Приносит исходящие звонки в общую конференцию Meetme. 5) Цикл while ожидает ввода от пользователя. Разрешены только символы a-z. 6) «a-z» соответствуют файлам .WAV, которые воспроизводятся или «внедряются» в конференцию путем использования другого источника. локальное расширение.

Для меня это довольно аккуратно, и теперь я хочу сделать то же самое из веб-приложения, но я не знаю, с чего начать. Какие языки мне нужно использовать? Я знаю основной HTML и играл с JavaScript. Какие методы потребуются для передачи входных переменных формы в скрипт python на сервере (веб-сервер и сервер звездочек - это один и тот же компьютер)? CGI? Как насчет использования PHP? Возможно, мне нужно будет это узнать в какой-то момент ... Если я использую PHP, могу ли я все еще "вызывать" скрипт Python и передавать ему значения? Я надеялся в конечном итоге использовать javascript, чтобы позволить пользователю воспроизводить звук, соответствующий кнопке (точно так же, как символ в версии командной строки), не нажимая на кнопку submit, но планируя пока просто заставить его работать. Я думаю, этот вопрос также превращается в «Должен ли я просто выучить PHP и бросить питон? Я чувствую, что мог бы действительно добавить к своему текущему набору навыков телефонии (и получить удовольствие ... этот материал Asterisk - взрыв), имея возможность создавать веб-инструменты, которые взаимодействуют с Asterisk (возможно, и с Freeswitch тоже).

Любые советы или рекомендации будут с благодарностью.

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Вы могли бы делать все из PHP, если хотите.Но, если честно, вы уже написали сценарий на Python, почему бы просто не использовать Python и для веб-контента? Django является одним из самых популярных веб-фреймворков.Очень легко научиться, если вы будете следовать учебнику.

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

На сервере, которыйу вас запущен Asterix, настройте веб-сервер Apache с mod_wsgi, чтобы он мог запускать Python.Пусть ваш Django содержит форму , которая отправляется в представление .Это представление может затем выполнить код из вашего сценария Asterix.

Основная проблема, с которой вы столкнетесь, заключается в том, что в Интернете нет состояния.Это означает, что хотя вы можете вызывать функцию довольно легко, поддерживать интерактивный сеанс может быть довольно сложно.Ваш цикл while будет трудно поддерживать в течение сеанса HTTP.Вы можете использовать что-то вроде commet для поддержания открытого сеанса, но я не делал этого раньше, и я не знаю, насколько легко это будет сделать.

Я бы попробовал длясначала что-нибудь простое.Есть сценарий Python, такой как это:

# asterix.py
def make_call(target, source):
    conn = connect_to_asterix()
    conn.make_call(target, source)

А затем в вашем представлении django:

# views.py
def make_call(request):
    if request.method == 'POST':
        form = AsterixForm(request, request.POST)
        if form.is_valid():
            import asterix
            asterix.make_call(form['target'], form['source'])

Это сделает вызов от источника к цели, а затем остановит обработку.После этого вы не сможете взаимодействовать с вызовом (если только вы не вернете идентификатор, который позволит вам манипулировать этим вызовом далее в звездочке), но он все равно будет хорошим началом.

1 голос
/ 19 февраля 2011

Я бы рекомендовал просто обернуть ваш код в интерфейс wsgi , который является стандартом Python для веб-сервисов (что-то вроде cgi , но с функциями вместо программ, поэтому имеет более простой интерфейс и может быть предварительно скомпилирован на веб-сервере).

Веб WSGI содержит ссылки на многие фреймворки Python для веб-приложений, так что посмотрите на них и выберите одну. Django , Pylons или TurboGears кажутся наиболее популярными, а Bottle отлично подходит для быстрого создания небольших веб-приложений. Возможно, вы захотите взглянуть также на Google App Engine , который обеспечивает ограниченную среду Python для очень быстрого хостинга.

Как правило, python имеет отличные веб-фреймворки, как правило, быстрее, чем PHP, и вы можете использовать те же навыки в сети и за ее пределами, в то время как PHP в большинстве случаев бесполезен вне сети. Также с python вы не научитесь смешивать HTML с кодом (как в PHP), который вам придется отучить, если вы когда-нибудь начнете работать вместе с дизайнером.

...