はじめに
備忘録2本目です。
今回はTwilioで購入した050番号宛に発信して、話した内容をGoogle chatのスペースに書き起こす処理を作っていきます。
Google chatのスペース作成
Google Chat側の準備をしていきます。まずはスペースを作成していきます。
次にスペースのWebhookを作成します。アプリと統合から適当な名前を付けて2個作成してください。
作成したら、縦三点リーダーをクリックして各WebhookのURLをコピーします。
Twilio側の処理作成
スペースの準備が終わったらTwilio側の準備をしていきます。
最初にFunctionを使って処理を書いていきます。
baseURLには、先ほどコピーしたWebhookのURLを使用します。
exports.handler = async function(context, event, callback) {
const axiosA = require('axios');
const axiosB = require('axios');
const instanceA = axiosA.create({
baseURL:'Webhook1のURL',
headers:{}
});
const instanceB = axiosB.create({
baseURL:'Webhook2のURL',
headers:{}
});
if(event.Track === 'outbound_track')
{
await instanceA.post('',{text:JSON.parse(event.TranscriptionData).transcript})
}else{
await instanceB.post('',{text:JSON.parse(event.TranscriptionData).transcript})
}
return callback(null);
};
Functionを作成し終わったら縦三点リーダーからFunctionのURLをコピーします。
次にTwimlを作成していきます。statusCallbackUrlにはFunctionのURLを使用します。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Start>
<Transcription statusCallbackUrl="FunctionのURL" track="both_tracks" name="test" languageCode="ja-JP"/>
</Start>
<Say voice="Google.ja-JP-Wavenet-C">始まります。</Say>
<Pause length="60"/>
<Say voice="Google.ja-JP-Wavenet-C">残り2分。</Say>
<Pause length="60"/>
<Say voice="Google.ja-JP-Wavenet-C">残り1分。</Say>
<Pause length="60"/>
<Say voice="Google.ja-JP-Wavenet-C">終了。</Say>
</Response>
Google CloudのText-to-Speechを利用して、Sayで囲まれた文字を音声化しています。ほかにも様々な種類の音声があるので、好きなものを選んでください。
https://cloud.google.com/text-to-speech/docs/voices?hl=ja
最後に処理を電話番号に紐づけます。
A call comes inはTwiml Binを選択し、作成したTwiml名を選んでセーブします。
以上で準備完了です。