2012-05-02 2 views
2

Linux에서 실행중인 명령 줄 Perl 응용 프로그램에서 전화를 걸고 (SIP) 오디오 파일을 재생 한 다음 수신자로부터 DTMF 입력을 기다려야합니다.Perl에서 SIP 호출을하고 DTMF 입력을받는 방법은 무엇입니까?

대부분의 Linux SIP 클라이언트는 GUI 응용 프로그램을 실행할 수 없으므로 경쟁에서 제외됩니다.

현재 pjsua를 사용하고 있지만 불행히도이 문제는 피하고 싶습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

Linux 용 완벽하게 스크립트 가능한 명령 줄 SIP 클라이언트가 있습니까? 사용할 수있는 정상적인 라이브러리가 있습니까?

+0

sipP를 사용해 보셨나요? 아마 이것은 당신을 위해 작동 할 것입니다. http://sipp.sourceforge.net/doc/reference.html – rpg

답변

1

저는 FreeSWITCH를 강력히 추천합니다. 실제로 Perl API가 제공되므로 Perl 프로그램에서 FreeSWITCH 서버와 대화하고 전화를 발신하고, DTMF를 송수신하며, 오디오 파일을 재생할 수 있습니다.

FreeSWITCH가 Perl에 전화하도록 허용하는 방법이 있습니다 예를 들어 전화가 왔을 때의 프로그램입니다.

1

Perl에서 자체 SIP 클라이언트를 구현하지 마십시오. 바로 사용할 수있는 구현이 있으므로 PITA 및 시간 낭비가 될 것입니다.

예를 들어 Asterisk을 사용할 수 있습니다. 스크립팅 기능으로 매우 유연합니다. 훌륭한 커뮤니티가 있으며 잘 문서화되어 있습니다. 웹에서 많은 예제를 찾을 수 있습니다.

별표와 비교되는 다른 솔루션은 YateFreeSwitch입니다. 별표에서

, 당신은 기본적으로 다음과 같습니다

    이 스풀 디렉토리에 call file을 배치하여 통화를 시작
  1. .
  2. (기본적으로 스크립트 블록) 특별한 "확장"에 그 새로운 발신 통화 연결 :

예 dialplan을 스크립트 : 또는

[specialstuff] 
exten => s,1,Wait(1)     ; wait a second before playback 
exten => s,2,Playback(yourfile.wav) ; play your file 
exten => s,3,AGI(yourscript.pl)  ; run your script with AGI interface 
     ; in "yourscript.pl" you can wait for/receive DTMF and react on it 

, 당신은 완전히 DTMF 물건을 구현할 수 있습니다 별표로 이를 IVR (대화 형 음성 응답)이라고합니다. 웹에 많은 예제가 있습니다.

[specialstuff] 
exten => s,1,Wait(1)     ; wait a second before playback 
exten => s,2,Playback(yourfile.wav) ; play your file 
exten => s,3,WaitExten(10)   ; wait 10 seconds for DTMF input 

exten => 1,1,System(/your/script.pl one) ; callee pressed DTMF 1 
exten => 1,2,Playback(thanks)    ; give feedback 

exten => 2,1,System(/your/script.pl two) ; callee pressed DTMF 2 
exten => 2,2,Playback(goodbye)    ; give feedback 

exten => 3,1,System(/your/script.pl three) ; callee pressed DTMF 3 
exten => 3,2,Playback(something)   ; give feedback 
+0

나는 Asterisk 나 PBX를 SIP 클라이언트로 사용하는 아이디어를 좋아하지 않는다. 그러나 이것이 내 문제에 대한 최선의 해결책이 될 수 있음을 인정해야합니다. 고맙습니다. – tex

+0

@tex는 별표가 좋다는 것을 납득시키지 않으려합니다. 단지 별표가 PBX가 아님을 언급하고 싶었습니다. 그것은 틀입니다. 종종 PBX로 사용됩니다.Apache는 웹샵이 아니지만 서비스를 제공하는 데 자주 사용됩니다. – Kaii

1

약 1 년 전, 사용 가능한 CPAN 모듈을 사용하여 SIP 클라이언트를 구현했습니다.

그러나 결국 나는 SIPp을 사용하여 해결했습니다. 완전히 직관적이지는 않습니다 (Wireshark에서 콜 플로우를 디버깅하는 데 많은 시간을 보냈습니다).하지만 결국에는 내가해야 할 모든 것을했습니다.

관련 문제