python中有许多Asterisk Lib可用于开发FastAGI.一个是由Neil Tallim编写的Pystrix(http://code.google.com/p/pystrix/).以下是如何开发FastAgi Server的示例.
在您的拨号方案中,您将呼叫发送到FastAGI服务器:
[some-context]
exten => 567567,1,NoOp()
exten => s,n,AGI(agi://host:port/testcall)
exten => s,n,Hangup()
Run Code Online (Sandbox Code Playgroud)
创建一个FastAgi服务器来监听/ testcall url:
import pystrix
class FastAGIServer(threading.Thread):
_fagi_server = None
def __init__(self):
threading.Thread.__init__(self)
self.daemon = True
self._fagi_server = pystrix.agi.FastAGIServer()
self._fagi_server.register_script_handler(re.compile('testcall'), self._testcall_handler)
self._fagi_server.register_script_handler(None, self._fallback_handler)
def _testcall_handler(self, agi, args, kwargs, match, path):
agi.execute(pystrix.agi.core.Answer())
response = agi.execute(pystrix.agi.core.StreamFile('demo-thanks', escape_digits=('1', '2')))
agi.execute(pystrix.agi.core.Hangup())
def _fallback_handler(self, agi, args, kwargs, match, path):
# Do something here
def kill(self):
self._fagi_server.shutdown()
def run(self):
self._fagi_server.serve_forever()
if __name__ == '__main__':
fastagi_core = FastAGIServer()
fastagi_core.start()
while fastagi_core.is_alive():
time.sleep(1)
fastagi_core.kill()
Run Code Online (Sandbox Code Playgroud)
如果你知道它就像CGI一样.以上代码是从Pystrix fastagi示例页面复制的.请参考那里阅读内联评论.此外,文档还不是很好,但代码干净,简洁,易于理解.跳进去试验吧.
如果您正在使用FreePBX/Elastix发行版,您可以为[from-pstn]编写拨号方案,然后在7777上测试呼叫以执行它.对于大型应用程序,您可以从Django的URL映射中获取灵感并在此处实现它.
| 归档时间: |
|
| 查看次数: |
5901 次 |
| 最近记录: |