2013-02-11 3 views
4

저는 fastAGI 스크립트를 파이썬으로 작성하고 싶습니다. 나는 이것에 대해 최소한의 문서를 찾기 위해 그물 전체를 조사했다. 지금까지 나는 꽤 인기있는 pyst, pyst2, starpy이 있다는 것을 알게되었습니다. 그러나 문제는 맨손으로 필수 문서가 없다는 것입니다 (또는 적어도 나는 아무것도 찾지 못했습니다). 파이썬에서 fastagI 프로그래밍을 시작하기에 좋은 리소스가 있는지 알고 싶습니다. 파이썬 프로그래밍은 처음부터 모든 것을 다시 쓰지 않고 존재하는 라이브러리를 사용합니다.Python을 사용하여 Asterisk 용 fastAGI 프로그래밍 하시겠습니까?

나는 또한 다른 라이브러리가 있는지 알고 싶습니다.

사용할 수있는 것이 없다면 내 옵션은 무엇입니까?

답변

5

당신이 FastAGI을 개발하는 데 사용할 수있는 파이썬에서 많은 별표 해방이 있습니다 전화 번호부의 미래를 아스 테 리스크. 하나는 Neil Tallim이 작성한 Pystrix (http://code.google.com/p/pystrix/)입니다. 다음은 FastAgi 서버를 개발하는 방법에 대한 예제입니다.

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를 알고있는 경우 :

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

가 듣고/testcall URL을 FastAgi 서버를 만듭니다

는 dialplan을, 당신은 FastAGI 서버로 호출을 전송 그것. 위의 코드는 Pystrix fastagi 예제 페이지에서 복사됩니다. 인라인 코멘트를 읽으려면 여기를 참조하십시오. 또한 설명서는 아직 훌륭하지 않지만 코드는 깨끗하고 간결하며 이해하기 쉽습니다. 그냥 뛰어 들어가서 실험 해보세요.

당신이 FreePBX/Elastix 배포판을 사용하는 경우, 당신은 그것을 실행 얻을 7777[에서-PSTN] 다음 테스트 전화의 dialplan을 쓸 수 있습니다. 대규모 앱의 경우 Django의 URL 매핑에서 영감을 얻어 여기에 구현할 수 있습니다.

+1

이것은 내가 괜찮은 것을 찾지 못해서 사용하고있는 것입니다. 네 말이 맞습니다. 코드는 깨끗하고 잘 문서화되어 있습니다. 나는이 라이브러리를 확장하려고 생각하고있다. :) –

1

현재

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

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

그것은 매우 간단한 일반 문서를 읽을 수있다, 난 당신이 그 기반으로 lib에 전화를 이해할 수있는 확신합니다. 또한 두 번째 페이지에는 파이썬 용 libs 목록이 있습니다.

는 별표 (*)로 시작하는 경우 : http://shop.oreilly.com/product/9780596009625.do

+0

나는 그것을 읽었습니다. 그러나 그들은 파이썬으로 AGI 스크립트를 작성하는 것에 대해서는 도움이되지 않습니다. –

+0

다른 리소스 또는 링크를 알고 계시면 게시 할 수 있습니까? –

+0

링크가 충분합니다. 그냥 라이브러리 코드/doc을 읽으면 충분합니다. Core Agi doc을 읽으려고 시도하기 전에 무엇이든 시도해 보시고 코어 북을 읽으십시오. (위 참조) – arheops