こんにちは、チャールです。このブログでTwilio Gatherを使用して、Twilio番号に着信する音声通話を録音し、テキストに転写します。
前提条件:
紹介:
最初に、Twilioアカウントを作成して番号を取得してください。
お気に入りのコードエディタを使ってください。
Pythonをインストールした後、pipを使用してFlaskとTwilioのPython SDKをインストールしてください。
pip install Flask twilio
ngrokのウェブサイトからngrokをダウンロードしてください。
やりましょう!
ディレクトリを作成し、必要なパッケージをインストールして、以下のコードを書いてください。
from flask import Flask
from requests.api import request
from twilio.twiml.voice_response import Gather,VoiceResponse
app = Flask(__name__)
@app.route("/voice", methods=['GET', 'POST'])
def voice():
response = VoiceResponse()
gather = Gather(
action='/results',
method='GET',
language='ja-JP',
input='speech',
speech_model='phone_call',
speech_timeout='5',
enhanced='true')
gather.say("メセージを残してください!", voice='Polly.Mizuki')
response.append(gather)
print(response)
return(str(response))
@app.route("/results",methods=['GET'])
def results():
response = VoiceResponse()
response.say("ありがとうございます", voice='Polly.Mizuki')
print(request)
return(str(response))
if __name__ == "__main__":
app.run(debug=True)
コードを理解しましょう。
- /voice ルートは、着信を処理するために定義されます。Twilioがあなたの番号に電話を受けると、このエンドポイントにリクエストを送り、その後 voice() 関数が実行されます。
- VoiceResponseオブジェクトが作成されます。このオブジェクトは、メッセージを再生するか入力を収集するかなど、Twilioが通話で何をするかを指示します。
- Gatherオブジェクトが使います。Gatherはいくつかのパラメータで設定されます:
- action='/results' は、収集した入力をTwilioがどこに送るかを指示します。入力を収集した後、Twilioは/resultsエンドポイントへリクエストを行います。
- method='GET' は、アクションURLへのリクエストを行う際のTwilioのHTTPメソッドを指定します。
- language='ja-JP' は、音声認識の言語を日本語に設定します。
- input='speech' は、IVRがDTMFトーン(キーパッド入力)ではなく音声入力を聞くように指示します。
- speech_model='phone_call' は、通話音声の音声認識を最適化します。
- speech_timeout='5' は、Twilioが音声入力を処理する前の最大無音時間を設定します。
- enhanced='true' は、より高い精度のために強化された音声認識を有効にします。
- Gatherは、.say() メソッドを使用して、発信者にメッセージを日本語で残すように促します。これは、テキストから音声への変換にAmazon PollyのMizuki声を使用します。
- Gatherを設定した後、それをVoiceResponseに追加します。レスポンスは文字列に変換され(str(response))、返されます。これをTwilioは通話の対話をガイドするために使用します。
/voiceルート
- 発信者が応答した後、TwilioはGatherアクションによって指定された/resultsエンドポイントに入力を送ります。results() 関数は次にこの入力を処理します:
- 新しいVoiceResponseオブジェクトが作成され、発信者に対するレスポンスを生成します。
- .say() メソッドが再び使用され、日本語で発信者に感謝します。
/results ルート
コードを実行する
python3
を実行してください。これにより、フラスクサーバーが実行されます。ngrok http 5000
を実行してください。これにより、公開URLが生成されます。まとめ:
Python Flaskを使用してTwilio Voice Callのセットアップに成功しました。このセットアップでは、ユーザーがボタンを押さずに5秒間沈黙している場合、自動的に通話が拒否されます。異なるGatherコンポーネントも試してください。
ありがとうございます!