Twilio Functionsで電話をかけるたびに声が変わる仕組みを作ってみた
こんにちは、昴です。
今回はTwilio Functionsを使って、電話をかけるたびに「担当者の声」がランダムに変わる仕組みを作ってみました。
はじめに
Twilioは電話やSMS、チャットなどのコミュニケーション機能を組み込むためのクラウドベースのAPIプラットフォームです。TwilioのAPIを利用することで通信ソリューションを自由にカスタマイズして構築することができます。
電話窓口に自動音声応答(IVR)を導入している中で、毎回同じ機械音声だと冷たい印象を与えてしまうといった課題はないでしょうか。
静的な設定(TwiML Binsなど)では毎回固定の同じ声しか出せませんが、サーバーレス環境であるTwilio Functionsを使用することで、数行のコードを追加するだけで電話がかかってくるたびに声をランダムに変更することが可能になります。これにより、システムでありながら少しだけ人間味を持たせることができます。
今回はこの仕組みを実際に構築してみます。
前提・検証環境
本記事の手順を進めるにあたり、以下の環境および権限が必要です。
- Twilioアカウントが開設済みであること
- 通話機能を持つTwilio電話番号を購入済みであること
実践
Function作成
まずTwilio Functionsから作成していきます。
Functionsのサービスを作成する
Twilioコンソールのサイドバーから Functions and Assets > Services へ移動し、「Create Service」ボタンをクリックします。
サービス名(Service Name)には、分かりやすく random-voice-service などと入力し「Next」をクリックします。

Function(コード)を作成する
エディタ画面が開いたら、左上の「Add +」ボタンから「Add Function」を選択します。
パス(Path)を聞かれるので、/random-voice など任意のエンドポイント名を入力します。

作成されたファイルを開き、最初から書かれているコードをすべて消して、以下のJavaScriptコードをコピー&ペーストしてください。
exports.handler = function(context, event, callback) {
// 1. 利用する声のリストを用意(日本語のPollyとGoogleの音声)
const voices = [
'Polly.Mizuki', // 女性(落ち着いた声)
'Polly.Takumi', // 男性(ハキハキした声)
'Polly.Kazuha', // 女性(少し高めの声)
'Google.ja-JP-Wavenet-A', // 女性
'Google.ja-JP-Wavenet-C' // 男性
];
// 2. リストの中からランダムに1つの声を選ぶ
const randomVoice = voices[Math.floor(Math.random() * voices.length)];
// 3. 選んだ声を使ってTwiML(応答文)を生成する
const twiml = new Twilio.twiml.VoiceResponse();
twiml.say({
voice: randomVoice,
language: 'ja-JP'
}, 'お電話ありがとうございます。この音声は、電話をかけるたびに担当者の声がランダムで変わる仕組みになっています。');
// 4. 応答をTwilioに返す
return callback(null, twiml);
};
コードを貼り付けたら、エディタ下部の「Save」をクリックし、最後に画面左下の「Deploy All」ボタンを押して変更を反映させます。

電話番号接続
最後に、取得しているTwilio電話番号にこのプログラムを紐付けます。コンソール画面の Phone Numbers > Manage > Active numbers へ移動し、接続したい電話番号を選択します。Voice Configurationの「A call comes in」の項目を以下のように設定します。A call comes in: FunctionService: 先ほど作成した random-voice-serviceEnvironment: uiFunction Path: /random-voice最後にSave Configurationで保存し設定は完了となります。

確認
それでは実際に電話をかけて動作を確認します。今回の場合は下記の順番で確認ができました。
- 1回目の発信: 「お電話ありがとうございます...(男性の声:Takumi)」
- 2回目の発信: 「お電話ありがとうございます...(女性の声:Mizuki)」
電話をかけるたびに、先ほどコード内で設定したリストの中からランダムに声が選ばれて再生されれば成功です。
まとめ
今回はTwilio Functionsを使って、着信時の声をランダムに変更する仕組みを作ってみました。 この方法はボット感を減らすだけでなく、「どの声を使えばお客様が途中で電話を切らずに最後まで聞いてくれるか?」といった音声のA/Bテストなどにも応用できます。 本ブログが少しでも参考になれば幸いです。
告知
Twilio/SendGridセミナーを毎月開催しています
クラスメソッドでは毎月Twilio/SendGridのセミナーを実施しています。
クラスメソッドではTwilio/SendGridのセミナーを毎月開催しております。いずれもTwilio及びSendGridを良く知らない方向けに基本的な部分から解説する内容となっておりますので、今後Twilio/SendGridの導入を検討している方や、既に導入済で改めて基本的な部分を勉強したいと考える方は、是非お気軽にご参加いただければと思います。






