
最後に着電があったらTwilioから呼び出されるincoming.phpのコードサンプルを載せておきます。
呼び出された際に、曜日ごとにダイヤルする電話番号と音声メッセージをXMLで返すプログラムです。
<?
header('Content-Type: application/xml');
//購入した050番号、転送先番号
$myNumber = "+8150XXXXXXXX";
//月曜日の転送先電話番号(複数呼び出したければ配列の形で追記可能)
$outGoingNumber_mon = array(
"+8170XXXXXXXX",
);
//火曜
$outGoingNumber_tue = array(
"+8190XXXXXXXX",
);
//水曜
$outGoingNumber_wed = array(
"+8190XXXXXXXX",
);
//木曜
$outGoingNumber_thu = array(
"+8190XXXXXXXX",
);
//金曜
$outGoingNumber_fri = array(
"+8190XXXXXXXX",
);
//タイムゾーンを設定
date_default_timezone_set('Asia/Tokyo');
$numberFormatted_mon="";
$numberFormatted_tue="";
$numberFormatted_wed="";
$numberFormatted_thu="";
$numberFormatted_fri="";
for($i=0;$i<count($outGoingNumber_mon);$i++){
$numberFormatted_mon .= "<Number>{$outGoingNumber_mon[$i]}</Number>";
}
for($i=0;$i<count($outGoingNumber_tue);$i++){
$numberFormatted_tue .= "<Number>{$outGoingNumber_tue[$i]}</Number>";
}
for($i=0;$i<count($outGoingNumber_wed);$i++){
$numberFormatted_wed .= "<Number>{$outGoingNumber_wed[$i]}</Number>";
}
for($i=0;$i<count($outGoingNumber_thu);$i++){
$numberFormatted_thu .= "<Number>{$outGoingNumber_thu[$i]}</Number>";
}
for($i=0;$i<count($outGoingNumber_fri);$i++){
$numberFormatted_fri .= "<Number>{$outGoingNumber_fri[$i]}</Number>";
}
//時刻と曜日(0-6)を取得
$currentHour = (int)date('H');
$currentDay = date('w');
$date = date("Y-n-j");
//日本の代表的な祝祭日を登録
$holidays = array(
"2020-3-20",
"2020-4-29",
"2020-5-3",
"2020-5-4",
"2020-5-5",
"2020-5-6",
"2020-7-23",
"2020-7-24",
"2020-8-10",
"2020-9-21",
"2020-9-22",
"2020-11-3",
"2020-11-23",
);
$is_holiday = false;
foreach($holidays as $holiday){
if($date == $holiday){
$is_holiday = true;
}
}
$resp = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>";
//土日-営業時間外判定
if($currentHour >= 18 || $currentHour < 10 || $currentDay == 0 || $currentDay == 6 || $is_holiday == true){
$resp .= '<Say voice="alice" language="ja-JP">ジェイジーブランディングです。お電話の受付は平日10時から18時です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>';
}elseif($currentDay == 1){
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_mon}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}elseif($currentDay == 2){
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_tue}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}elseif($currentDay == 3){
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_wed}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}elseif($currentDay == 4){
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_thu}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}elseif($currentDay == 5){
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_fri}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}else{
$resp .= <<<EOM
<Dial callerId="${myNumber}">
${numberFormatted_mon}
</Dial>
<Say voice="alice" language="ja-JP">ただいま別のお電話の対応中です。恐れ入りますが再度お電話いただくか、ホームページのお問い合わせフォームをご利用ください。</Say>
<Hangup></Hangup>
EOM;
}
$resp .= "</Response>";
echo($resp);
?>
これで、曜日ごとに設定された電話番号に電話が転送され、電話使用中か営業時間外の場合には音声メッセージが流れるようになります。
なお、音声メッセージは別途費用がかかりますのでご注意ください。
$0.0008/100 characters & $0.0032/100 neural characters
この仕組みの総額という点では、だいたい月3,000円程度の費用になるかと思います。
(内訳:電話番号利用、電話着電、電話発電(転送)、音声メッセージ)
これからますます疑似コールセンターのようなもののニーズが高まってきます。
Twilioのようなサービスを利用して効率的に高品質のコールセンターを運営していきましょう。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!