asteriskで第1週日曜日などをマッチさせる方法。

Ξ 7月 11th, 2012 | → 0 Comments | ∇ コンピュータ, ソフトウェア, ネットワーク |

asteriskで、特定曜日・特定時間内で、マッチさせる場合は、GotoIftimeを使うけれど、
どうも、第2週の日曜とか第1週の土曜とか、特定の第?週の設定ができなかったので、AGIでスクリプトを書いてみた。
下記スクリプトのgetweek.phpは、

第1土曜  18:00~
第2日曜  終日

第3土曜  18:00~
第4日曜  終日

にマッチするようにしてます。マッチしたら1を環境変数RETUにセット。
マッチしなかったら0をセット。

あとは、extensions.confでGotoIfで特定条件に飛ばせばOK。
意外と使えると思う。

●extensions.conf
------------------------------------------------------------------------
exten => s,n,AGI(getweek.php)
exten => s,n,NoOp(${RETU})
exten => s,n,GotoIf($[${RETU} = 1]?holiday)    ;; week2/4 holiday
------------------------------------------------------------------------



●getweek.php
------------------------------------------------------------------------
#!/usr/bin/php -q
< ?php


require('phpagi.php');


/* 0:sun 1:mon 2:tue 3:wed 4:thu 5:fri 6:sat */

$year  = date("y");
$month = date("m");
$day   = date("d");

$hour  = date("G");
$min   = date("i");


/* debug */
/*
$year  = 2012;
$month = 7;
$day   = 8;
$hour  = 1;
$min   = 0;
*/




$wday   = date("w", mktime(0, 0, 0, $month, $day, $year)  );
$time   = mktime(0, 0, 0, $month, 1, $year);
$w1day  = date("w", $time);
$weekno = (int)(($day + $w1day - 1) / 7);

/*
echo $time."\n";
echo $weekno." weeks.\n";
*/
/*
echo $day." day.\n";
echo $wday." wday.\n";
echo $hour." hour.\n";
echo $min." min.\n";
*/




/*******************************************/
/* 2nd & 4th week **************************/
/*******************************************/
/* 1st sat */
if( ($weekno==0) && ($wday==6) && ($hour>=18) )
{
        $agi = new AGI();
        $r = $agi->set_variable("RETU","1");
        if ($r["result"] == 0) { exit(1); }
        exit(0);
}

/* 2nd sun */
elseif( ($weekno==1) && ($wday==0) )
{
        $agi = new AGI();
        $r = $agi->set_variable("RETU","1");
        if ($r["result"] == 0) { exit(1); }
        exit(0);
}

/* 3rd sat */
elseif( ($weekno==2) && ($wday==6) && ($hour>=18) )
{
        $agi = new AGI();
        $r = $agi->set_variable("RETU","1");
        if ($r["result"] == 0) { exit(1); }
        exit(0);
}

/* 4th sun */
elseif( ($weekno==3) && ($wday==0) )
{
        $agi = new AGI();
        $r = $agi->set_variable("RETU","1");
        if ($r["result"] == 0) { exit(1); }
        exit(0);
}

/* no match */
else
{
        $agi = new AGI();
        $r = $agi->set_variable("RETU","0");
        if ($r["result"] == 0) { exit(1); }
        exit(0);
}


?>
------------------------------------------------------------------------

 

Leave a reply


*

About

    Place for about text

    The Munch theme is built with PS, brushes and patterns by milo IIIIVII.

    Open right sidebar.php in the theme folder to edit this message.
    Check my other themes too.

     

FlickR

    Solitude
    Solitude
    Solitude
    Solitude