概要
今回紹介するのは、AIによる電話での自動対応を、Twilioの新機能「Conversational Intelligence」を使って通話の自動文字起こしとデータ保存、文字起こしデータ内容を数秒後にメール送信するデモを作りました。
営業やサポートなど、通話後にすぐ内容を確認したい場面で役立つソリューションとなります。
Twilio Conversational Intelligenceとは?
Twilio Conversational Intelligence(会話インテリジェンス)は、Twilioの音声通話機能に対して高度な音声認識・解析機能を追加できる新しいサービスです。具体的には、以下のような機能を提供しています:
- 発話者の識別(スピーカータグ)
- 通話の内容をセンテンス単位で構造化
- 通話データをTwilio側で保存・取得可能
- 会話に対するインサイトの抽出(例:感情・トピック分析など)※将来的に拡張予定
従来のTwilio Programmable Voiceでは、通話音声を録音した後に音声ファイルを別の音声認識エンジン(Google Cloud Speech-to-Textなど)で処理する必要がありました。一方、Conversational IntelligenceはTwilioの中で完結できるため、構成がシンプルかつリアルタイム性の高い実装が可能です。
特に大きな特徴は、ConversationRelayと組み合わせて利用できる点です。これにより、音声通話中にTwilioから直接WebSocket経由で音声を送信しながら、同時に会話の文字起こしデータをConversational Intelligenceサービスに保存できます。
ただし、今日時点(2025年5月22日時点)で、日本語での利用は限定的です。
現時点ではIntelligence Serviceの言語設定が日本語を設定できません。
そのため、今回の利用方法では、Conversational Intelligenceをリアルタイム文字起こしのデータの保管場所としてのみ利用しています。
サポート状況(2025年5月22日時点)
現時点では英語などの10言語では完全な機能を利用できますが、日本語では一部の機能のみ利用となります。
チャネル | 機能 | 日本語可否 | 説明 |
---|---|---|---|
Voice | Twilio Recordings | NG | 録音ファイルから日本語の文字起こしができない。 |
Voice | 外部 Recordings | NG | 録音ファイルから日本語の文字起こしができない。 |
Voice | Call | OK | 文字起こし・要約・感情分析はできるが、文字起こし以外は全て英語で表示される |
Voice | ConversationRelay | OK | 文字起こしのみ対応可能 |
ConversationRelay × Conversational Intelligence のメリット
従来の方法 | Conversational Intelligence |
---|---|
音声録音後に外部処理が必要 | 通話中にTwilio内で文字起こし・保存 |
構成が複雑になりがち | Functions & ConversationRelayで簡潔に実装 |
外部APIへの接続が必須 | Twilio内で完結可能 |
スピーカータグは自前で構築 | 発話者識別が自動で付与される |
デモの作成
構成図
[User]
↓ 通話
[Twilio Voice]
↓
[ConversationRelay]
↓ transcribe & store
[Conversational Intelligence]
↓
[通話終了イベント (StatusCallback)]
↓
[Twilio Function]
↓
[メール送信 (SendGrid)]
事前準備
- Twilioのアカウント
- SendGridアカウント
- AIボットと電話を繋ぐ - Twilio Voice - ConversationRelay が完了していること
ステップ 1:Conversational IntelligenceのService作成
まずTwilio Consoleから Intelligence Service
を作成します。
このServiceが、通話中の発話を解析・保存してくれる基盤になります。
作成手順
-
ConsoleでConversationa Intelligenceにアクセス
-
Intelligence Servicesにアクセスし"Create new Service"ボタンを押す
-
任意の名前をつけ、言語選択を行う
-
Language Operatorsで任意のOperatorを選択します
今回のデモコードを動かすためには選択する必要はないですが、Conversation SummaryやSentiment Analysisなどは、Callの機能での利用であれば限定的に利用可能です。
ステップ 2:ConversationRelayにパラメーター追加
次にTwiMLで ConversationRelay
を使って通話を接続する際、以下のように intelligenceService
パラメータを追加します。
<ConversationRelay
url="wss://halapolo.jp.ngrok.io"
intelligenceService="GAxxxxxxxxxxx"
language="ja-JP"
welcomeGreeting="もしもし。こちらは。保険アシスタントです。ご要件をお話ください。"
ttsProvider="Google"
voice="ja-JP-Chirp3-HD-Aoede" />
ステップ 3:通話終了イベントをトリガーに処理を開始
通話終了時に自動的に処理を走らせるには StatusCallback
を活用します。
今回は、電話番号の設定で指定できる、Call Status Changeを利用してステップ4で作成するFunctionsのURLにデータを送信することにしました。
このイベントを受けたTwilio Functionでは、以下のような処理を実行します:
- 該当するTranscriptを検索
- 数秒待機(Transcriptの生成を待つため)
- 発話データ(Sentences)を取得
- フォーマットしてメール送信(SendGrid利用)
ステップ 4:Functionのコード例
const sgMail = require('@sendgrid/mail');
exports.handler = async function(context, event, callback) {
const twilioClient = require('twilio')(context.ACCOUNT_SID, context.AUTH_TOKEN);
const callSid = event.CallSid;
if (!callSid) return callback(null, "No CallSid provided.");
sgMail.setApiKey(context.SENDGRID_API_KEY);
try {
const transcripts = await twilioClient.intelligence.v2.transcripts.list({ limit: 20 });
const matched = transcripts.find(t => t.channel?.media_properties?.reference_sids?.call_sid === callSid);
if (!matched) return callback(null, 'Transcript not found.');
await new Promise(resolve => setTimeout(resolve, 2000)); // 2秒待機
const sentences = await twilioClient.intelligence.v2
.transcripts(matched.sid)
.sentences
.list({ limit: 100 });
const sentenceText = sentences
.filter(s => s.transcript)
.map(s => `[${s.mediaChannel === 1 ? 'Agent' : 'Customer'}] ${s.transcript}`)
.join('\n');
const msg = {
to: context.TO_EMAIL,
from: context.FROM_EMAIL,
subject: `Transcript for CallSid: ${callSid}`,
text: sentenceText,
};
await sgMail.send(msg);
return callback(null, "ok");
} catch (err) {
console.error(err);
return callback(null, "error");
}
};
実行結果
電話をかけてAIと会話し通話を切ると指定したメールアドレスに下記のような結果が送られてきます。
応用例・今後の展開
この仕組みを応用すれば、下記のようなユースケースにも対応できます:
- 通話内容の自動要約(OpenAI APIなどと連携)
- CRMとの自動連携
- 会話のトピックや感情分析
- 通話品質の評価
まとめ
Twilio Conversational Intelligenceは、単なる録音ではなく**「構造化された会話データ」**として活用できる点が大きな魅力です。
今回のように、リアルタイムに通話内容を取得・分析・活用できる環境を簡単に構築できるのは、Twilioならではの強みです。