Perl で独自の SIP クライアントを実装しないようにしてください。すぐに使用できる実装があるため、これは PITA であり時間の無駄です。
たとえば、これにはアスタリスクを使用できます。スクリプト機能により、非常に柔軟です。優れたコミュニティがあり、十分に文書化されています。Web で多くの例を見つけることができます。
Asterisk に匹敵する他のソリューションはYateとFreeSwitchです。
アスタリスクでは、基本的に次のことを行います。
- スプール ディレクトリに呼び出しファイルを配置して、呼び出しを開始します。
- その新しい発信呼び出しを特別な「拡張機能」 (基本的にはスクリプト ブロック) に接続します。
ダイヤルプラン スクリプトの例:
[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