私はアスタリスクに不慣れなので、この質問に私が単に見落としている明白な答えがある場合は、私を許してください。
私は個人広告とボイスメールサービスを組み合わせて、各ユーザーがこのユーザーの受信トレイに届くメッセージを録音することで他のユーザーが応答できる広告を送信できるようにしたいと考えています。私の当初の考えは、これを純粋にCALLERID(num)値に基づくことでしたが、これは少し信頼性が低いことがすぐにわかりました。匿名と言う場合もあれば、ゼロの束が表示される場合もあれば、実際の電話番号が表示される場合もあります。実際にランダムな数字が表示される場合もあります。応答後、ピックアップコンテキストで最初のサウンドファイルがトリガーされる前に、待機コールがあります。私はこれにアプローチするための最良の方法は何であるか疑問に思っていますか?ユーザーに電話番号を入力してもらいますか?次に、これに基づいてコードを生成します。このコードは、コールバック時にパスワードとして機能しますか?CALLERID(num)を使用してリピーターを検出しようとしますか、それともセキュリティの観点からお勧めできませんか?
できれば、コードをまったく使用しないようにしたいのですが、電話番号をスプーフィングして他の人の受信トレイに侵入するのは比較的簡単だと言われています。IPアドレスがホワイトリストにあるPSTN/SIPプロバイダーを介してのみ、直接SIP通話を許可する予定はないことに注意してください。これにアプローチする方法に関するヒントをいただければ幸いです。基本的には、ユーザーにとってできるだけ簡単にしたいのですが、高いセキュリティを維持しています。
文字列に数字しか含まれていないかどうかをチェックする機能があるかどうかも知りたいですか?これは、この方法でCALLERID(num)を使用することにした場合、MySqlデータベースで電話番号を検索する前の健全性チェックとして役立ちます。
私の非常に基本的な未完成のダイヤルプランは次のとおりです。
[verify]
exten => blastbay,1,Answer(1000)
; A few simple sanity checks, but not very good ones.
same => n,GotoIf($["${CALLERID(num)}" != "0000000000"]?nextcheck)
; If we have only zero's, try waiting another second.
same => n,Wait(1)
same => n,GotoIf($["${CALLERID(num)}" = "0000000000"]?rejected)
same => n(nextcheck),GotoIf($["${CALLERID(num)}" = ""]?rejected)
same => n,GotoIf($["${CALLERID(num)}" = "anonymous"]?rejected)
same => n,GotoIf($["${CALLERID(num)}" = "unavailable"]?rejected)
same => n,GotoIf($["${CALLERID(num)}" = "protected"]?rejected)
same => n,GotoIf($[${LEN(${CALLERID(num)})}<5]?rejected)
same => n,Goto(welcome,welcomespeech,1)
same => n(rejected),Playback(/usr/phone/rejected)
same => n,Hangup()
[welcome]
include => mainmenu
exten => welcomespeech,1,BackGround(/usr/phone/welcome)
same => n,Goto(mainmenu,menuspeech,1)
[mainmenu]
exten => menuspeech,1,BackGround(/usr/phone/mainmenu)
same => n,WaitExten(5)
exten => 1,1,Goto(information,infospeech,1)
exten => i,1,Goto(menuspeech,1)
exten => t,1,Goto(menuspeech,1)
[information]
exten => infospeech,1,BackGround(/usr/phone/information)
same => n,Goto(mainmenu,menuspeech,1)
exten => #,1,Goto(mainmenu,menuspeech,1)
exten => i,1,Goto(mainmenu,menuspeech,1)