1

我正在尝试创建一个小型 Web 应用程序来与 Asterisk 电话平台进行交互。那里有很多类似的东西,但我想要自己制作的学习经验。

这是我现在所拥有的:一个简单的 python 脚本,允许某人通过命令行与管理器界面进行交互。该脚本的工作原理基本上是: 1) 连接到 Asterisk Manager 界面。2) 在 CLI 上从用户那里获取两个电话号码。3) 发起两个呼叫 4) 将发起的呼叫带入一个共同的meetme 会议。5) 'while' 循环等待用户输入。只允许使用字符 az。6) “az”对应于通过使用发起另一个本地扩展名播放或“注入”到会议中的.WAV文件。

对我来说这有点整洁,现在我想从一个网络应用程序做同样的事情,但我不知道从哪里开始。我需要使用哪些语言?我知道基本的 html 并且玩过 javascript。将表单输入变量传递给服务器上的 python 脚本需要哪些技术(Web 服务器和星号服务器是同一台机器)?电脑动画?使用 PHP 怎么样?我可能需要在某个时候学习……如果我使用 PHP,我还能“调用”python 脚本并将值传递给它吗?我希望最终使用 javascript 来允许用户播放与按钮相对应的声音(就像命令行版本中的字符)而无需点击提交,但计划现在让它工作。我想这个问题也变成了“我应该学习 PHP 并放弃 python 吗?”

任何提示或指导将不胜感激。

4

2 回答 2

1

我建议只将您拥有的代码包装在wsgi接口中,这是 Web 服务的 Python 标准(类似于cgi,但具有函数而不是程序,因此它具有更简单的接口并且可以在 Web 服务器中预编译)。

WSGI web 也包含许多 python web 应用程序框架的链接,因此请查看它们并选择一个。DjangoPylonsTurboGears似乎更受欢迎,而Bottle非常适合快速组合较小的 Web 应用程序。您最终可能还想看看Google App Engine,它提供了一些受限的 python 环境非常快速的托管。

通常,python 具有出色的 Web 框架,通常比 PHP 更快,并且您可以在 Web 内外使用相同的技能,而 PHP 在 Web 之外几乎无用。同样使用 python,您不会学习将 HTML 与代码混合(如在 PHP 中),如果您与设计师一起工作,您将不得不忘记这些。

于 2011-02-19T09:40:28.953 回答
1

如果你愿意,你可以从 PHP 做任何事情。但老实说,你已经用 Python 编写了脚本,为什么不把 Python 也用于 Web 的东西呢?Django是最流行的 Web 框架之一。如果您按照教程进行操作,将非常容易学习。

对于您想做的事情,Django 可能有点重,但我仍然强烈建议使用它。

在运行 Asterix 的服务器上,使用 mod_wsgi 配置 Apache Web 服务器,以便它可以运行 Python。让您的 Django 包含一个发布到视图的表单。然后,该视图可以从您的 Asterix 脚本执行代码。

您将遇到的主要问题是 Web 不是有状态的。这意味着虽然您可以很容易地调用一个函数,但维护一个交互式会话可能非常困难。您的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'])

这将从源调用目标,然后停止处理。之后您将无法与呼叫进行交互(除非您返回一个 ID 以允许您在 asterix 中进一步操作该呼叫),但它仍然是一个可靠的起点。

于 2011-02-19T09:47:20.003 回答