1

Asterisk テレフォニー プラットフォームと対話する小さな Web アプリケーションを作成しようとしています。似たようなものはたくさんありますが、自分で作るという学習体験が欲しいです。

これが私が今持っているものです: 誰かがコマンドライン経由でマネージャーインターフェースと対話できるようにする単純な python スクリプト。スクリプトの基本的な仕組みは次のとおりです。 1) Asterisk Manager インターフェイスに接続します。2) CLI でユーザーから 2 つの電話番号を取得します。3) 2 つのコールを発信します。 4) 発信されたコールを共通のミートミー会議に持ち込みます。5) 「while」ループは、ユーザーからの入力を待ちます。文字 a ~ z のみが許可されます。6) 「az」は、発信元の別のローカル拡張子を使用して会議に再生または「挿入」される .WAV ファイルに対応します。

私にとってはちょっとすっきりしていて、今はウェブアプリからまったく同じことをしたいのですが、どこから始めればいいのかわかりません。どの言語を使用する必要がありますか? 私は基本的なhtmlを知っており、javascriptで遊んだことがあります。フォーム入力変数をサーバー上の Python スクリプトに渡すには、どのような手法が必要ですか (Web サーバーとアスタリスク サーバーは同じマシンです)。CG?PHPの使用についてはどうですか?おそらくいつかそれを学ぶ必要があるでしょう... PHPを使用している場合でも、Pythonスクリプトを「呼び出し」て値を渡すことができますか? 最終的には JavaScript を使用して、ユーザーがボタンに対応するサウンドを再生できるようにしたいと考えていました (コマンド ライン バージョンの文字のように)。この質問は、「PHP を学んで Python をやめるべきか」という質問にもなりつつあると思います。

ヒントやガイダンスをいただければ幸いです。

4

2 に答える 2

1

コードをwsgiインターフェイスにラップすることをお勧めします。これは、Web サービスの Python 標準です ( cgiのようなものですが、プログラムではなく関数を使用するため、インターフェイスが単純になり、Web サーバーでプリコンパイルできます)。

WSGI Web には、多くの Python Web アプリケーション フレームワークへのリンクも含まれています。DjangoPylons、またはTurboGearsがより人気があるようで、Bottleは小さな Web アプリケーションをすばやくまとめるのに最適です。最終的には、かなり制限された Python 環境で非常に高速なホスティングを提供するGoogle App Engineも確認する必要があるかもしれません。

一般に、Python には優れた Web フレームワークがあり、通常は PHP よりも高速であり、Web の内外で同じスキルを使用できますが、PHP は Web 以外ではほとんど役に立ちません。また、Python では、(PHP のように) HTML とコードを組み合わせる方法を学ぶことはありません。

于 2011-02-19T09:40:28.953 に答える
1

必要に応じて、PHP からすべてを行うことができます。しかし、正直なところ、あなたはすでに Python でスクリプトを作成しています。なぜ Web 用にも Python を使用しないのでしょうか? Djangoは、最も人気のある Web フレームワークの 1 つです。チュートリアルに従えば非常に簡単に習得できます。

Django は、やりたいことに対して少し重いかもしれませんが、それでも使用することを強くお勧めします。

Asterix を実行しているサーバーで、mod_wsgi を使用して Apache Web サーバーを構成し、Python を実行できるようにします。ビューに投稿されるフォームをDjango に含めます。そのビューは、Asterix スクリプトからコードを実行できます。

これから直面する主な問題は、Web がステートフルでないことです。これは、関数を非常に簡単に呼び出すことができる一方で、対話型セッションを維持するのが非常に困難になる可能性があることを意味します。HTTPwhileセッション全体でループを維持するのは困難です。開いたセッションを維持するためにcommetのようなものを使うことができますが、私は以前にこれをやったことがなく、どれほど簡単にできるかわかりません.

最初は簡単なものを試してみます。次のような python スクリプトを用意します。

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

そして、あなたのジャンゴビューの中で:

# 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'])

これにより、ソースからターゲットへの呼び出しが行われ、処理が停止します。その後、呼び出しを操作することはできませんが (asterix 内でその呼び出しをさらに操作できるようにする ID を返さない限り)、それでも開始するのに確実な場所になります。

于 2011-02-19T09:47:20.003 に答える