アスタリスク用の音声メニュースクリプトの作成

みなさんこんにちは!

私たちの会社でアスタリスクの音声メニューを編成したので、短いメモを書くことにしました。 このトピックは、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正直なところ、別のブログではネットに十分なカルマがありませんでした。



All Articles