2013-02-11 45 views
4

我想用Python編寫fastAGI腳本。我在網上查了很多關於這方面的最小文檔。到目前爲止,我發現有相當受歡迎的pyst,pyst2starpy。但問題是,他們甚至缺乏必要的基本文檔(或者至少我沒有找到任何文檔)。我想知道是否有任何良好的資源可以開始使用任何存在的庫來代替我從頭開始重寫所有庫的python中的快速AGI編程。使用Python爲asterisk編寫fastAGI?

我也想知道是否還有其他的好的庫就像我剛纔提到的庫。

如果沒有可用的東西,我的選擇是什麼?

回答

5

有許多星號庫在Python中,您可以使用開發FastAGI。一種是Neil Tallim編寫的Pystrix(http://code.google.com/p/pystrix/)。下面是如何開發FastAgi服務器的例子。

在你的撥號方案,您發送的呼叫FastAGI服務器:

[some-context] 
exten => 567567,1,NoOp() 
exten => s,n,AGI(agi://host:port/testcall) 
exten => s,n,Hangup() 

創建FastAgi服務器偵聽/ TESTCALL網址:

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() 

它像CGI如果你知道它。 上述代碼從Pystrix fastagi示例頁面複製而來。請參閱此處閱讀內嵌評論。此外,文檔還不是很好,但代碼乾淨,簡潔,易於理解。只需跳進它並嘗試。

如果您正在使用FreePBX的/ Elastix的發行版,你可以寫撥號方案爲[從-PSTN],然後測試呼叫得到它執行。 對於大型應用程序,您可以從Django的URL映射中獲取靈感並在此處實施。

+1

這是我一直沒有找到像樣的東西后,我一直在使用。是的你是對的,代碼看起來很乾淨,有很好的文檔。我正在考慮擴展這個庫以及... :) – 2013-02-20 02:50:46

1

你可以在這裏閱讀

http://www.voip-info.org/wiki/view/Asterisk+FastAGI

http://www.voip-info.org/wiki/view/Asterisk+AGI

它非常簡單普通的文檔,我相信你能理解基於該LIB調用。另外第二頁有python的libs列表。

對於開始用星號:星號電話本書的未來http://shop.oreilly.com/product/9780596009625.do

+0

我讀過那些。但是,它們無論如何都不會在Python中編寫AGI腳本。 – 2013-02-12 13:01:34

+0

如果你知道任何其他資源或鏈接,你可以請發佈... – 2013-02-12 13:11:10

+0

thoose鏈接已經夠了。只是閱讀庫代碼/文檔,它已經足夠了。確定你已閱讀核心agi文檔之前嘗試做任何事情+閱讀核心書(見上文) – arheops 2013-02-12 17:22:00