私たちの会社でアスタリスクの音声メニューを編成したので、短いメモを書くことにしました。 このトピックは、IPテレフォニーの初心者に最も関連しています。 だから、同志、ハブラビテス、多くを負けないで、私は新参者を助けることを恐れていました。
これに必要なもの:4つのウェルカムメッセージを事前に書き留めます。
1.こんにちは、Horn and Hoofの会社に電話しました。 従業員と接続するには、内線番号をダイヤルするか、回線にとどまります。
2.秘書はあなたに答えることはできませんが、興味のある部門に連絡することができます。 プレス1-TS部門、2-1Cプログラミングなど
3.残念ながら、従業員はあなたに答えることができません。 電話が彼の携帯電話に転送されます。
4.残念ながら、部門のスタッフはあなたに答えることができません。 部門の長に音声メッセージを残すことができます。
スキームは次のとおりです[アート部分については事前に謝罪します:)

この例では、100をダイヤルすると音声メニューがトリガーされます。
php-agiスクリプト自体:
#!/usr/bin/php -q
<?php
require('phpagi.php');
function auth($agii)
{
$phones = array(
"79521111111" => "101", // 1
"79112222222" => "102", // 2
"79213333333" => "901" // 901
);
$buffer='';
$dtmfwait=3000; //
$result=$agii->fastpass_get_data($buffer,"1",$dtmfwait,3);
$digits=$result['result'];
// 3
if(strlen($digits)==3)
{
if (($a=$agii->exec('Dial',"SIP/$digits,20,t"))!=0)
{
$status = $agii->get_variable("DIALSTATUS");
$agii->exec('NoOp',':::::::::::'.$status['data']);
//
if ( ($status['data'] == "NOANSWER") or ($status['data'] == "CHANUNAVAIL"))
{
$agii->stream_file("3");
foreach ($phones as $phone_1 => $phone_2) {
if($phone_2==$digits)
{
$agii->exec('Set',"_NUMBER=$phone_1");
$agii->exec('Dial','H323/9999999@prov,,M(bubble),m');
}
}
}
}
return;
}
//
// 0,
if((strlen($digits)==0) or ($digits=='0') or (strlen($digits)!=3)){
//
$path='/home/shares/asterisk/in/'.date("dmyHi").'.wav';
$agii->exec('MixMonitor',$path.',b');
// 15
if ($agii->exec('Dial',"SIP/000,15,t")!=0)
{
// ,
$result=$agii->fastpass_get_data($buffer,"2",$dtmfwait,3);
$digits=$result['result'];
switch ($digits) {
case 1:
$agii->exec('Dial',"SIP/101&SIP/102&SIP/103&SIP/104&SIP/105,,tT");
break;
case 2:
// 2 . 201.
if($agii->exec('Dial',"SIP/201&SIP/202&SIP/203,,tT")!=0)
{
$agii->exec('Voicemail','201');
}
break;
case 3:
$agii->exec('Dial',"SIP/301&SIP/302&SIP/303&SIP/304&SIP/305&SIP/306&SIP/307&SIP/308&SIP/309,,tT");
break;
case 4:
$agii->exec('Dial',"SIP/401&SIP/402&SIP/403&SIP/405&SIP/407&SIP/408,,tT");
$agii->break;
case 5:
$agii->exec('Dial',"SIP/005&SIP/006,,tT");
break;
case 6:
$agii->exec('Dial',"SIP/404,,tT");
break;
case 7:
$agii->exec('Dial',"SIP/009,,tT");
break;
default:
$agii->exec('Dial',"SIP/000,,tT");
}
}
}
// $agii->stream_file("2");
$agii->exec('Hangup');
return 0;
}
//
$agi = new AGI();
$agi->answer();
$agi->exec('NoOp','Starting main module AGI script');
//
auth($agi);
?>
携帯電話への転送を恐れないでください。
$agii->exec('Set',"_NUMBER=$phone_1");
$agii->exec('Dial','H323/9999999@prov,,M(bubble),m');
VoIPプロバイダーが他の方法で「都市」へのアクセスを提供できないということだけです。 マンゴーオフィス(当社のVoIPプロバイダー)のセットアップに関する記事はこちら
PS <"コード">を美しくデザインする方法が見つかりませんでした。
PS2正直なところ、別のブログではネットに十分なカルマがありませんでした。