MySQLデータベースを使用したアスタリスクでのブラックリストの実装

FreePBXなどの既成のAsteriskディストリビューションを使用せず、Web GUIを使用していない場合、ブラックリストに番号を追加するタスクはAstDBを使用することになります。 これにより、原則として、すべてがシンプルになります。 ただし、ブラックリストアスタリスクデータベースは一般的であり、サブスクライバーによってブロックされた番号のリストを区別する必要がある場合は、この場合は外部データベースを使用することをお勧めします。



そのため、次が必要です。



始めましょう。 次のアクションプランがあります。

  1. 数値とテーブルのベースを作成する
  2. ダイヤルプランアスタリスクでマクロを作成する
  3. ダイヤルプランでのマクロ操作の検証


phpmyadminを使用して、フィールドを含むデータベースとテストテーブルを作成します



画像



ここで、ブラックリストにある番号のダイヤルに関してチェックするマクロを作成します。 これを行うには、一般セクションで、データベースに接続するために必要なすべての変数を宣言するグローバルブロックを追加します。

マクロ自体で、GoSub()の更新されたより安定したバージョンを使用して、データベースに接続するコマンドを記述し(Asterisk MySQLオペレーターを使用します)、目的のCALLERID値をテーブルで検索します。

データベースから取得した後、見つかった値を呼び出し元のCALLERIDで確認し、一致する場合は呼び出しを終了します。



[general] [globals] DBCurrentHost=localhost DBuser=myuser DBpass=mysomepassword DBname=asterisk [SubMysqlblacklist] exten => s,1,NoOp(--- MACRO --- BLACKLIST ---) same => n,MySql(connect connid ${DBCurrentHost} ${DBuser} ${DBpass} ${DBname}) same => n,MySql(query resultid ${connid} select callerid from own_blacklist where callerid=${CALLERID(num)} and blockenabled = 1) same => n,MySql(Fetch fetchid ${resultid} blacklistid) same => n,NoOp(FetchID: ${fetchid} Var1: ${blacklistid} ConnID: ${connid} ResultID: ${resultid}) same => n,GotoIf($["${CALLERID(num)}" = "${blacklistid}"]?blacklisted) same => n,MySql(clear ${resultid}) same => n,MySql(disconnect ${connid}) same => n,Goto(end) same => n(blacklisted),NoOp(Cannot dial - ${CALLERID(num)} is blacklisted !) same => n,MYSQL(clear ${resultid}) same => n,MYSQL(disconnect ${connid}) same => n,Hangup() same => n(end),NoOp(-- Clear --) same => n,Return()
      
      





次に、セットの観点からマクロを呼び出し、コンソールでリブートした後(ダイヤルプランのリロード)、操作性を確認します。



 exten => 4445566,1,NoOp(-- to ${EXTEN} -- <from> -- ${CALLERID(num)} --) same => n,GoSub(SubMysqlblacklist,s,1()) same => n,Dial(SIP/to_user1/555,40) same => n,Hangup()
      
      





その結果、次の機能が得られました。





すべては、オープンソースの資料に基づいて準備されています。



All Articles