はじめに
お客様から「メール不可の受信相手にテキスト内容を電話(音声)で伝えたい。または相手の営業時間内にテキスト内容を電話(音声)で伝えたい。」要件を実現するため、GASからVonage APIの使い方についてお問合せ頂いた際の簡単なサンプルコードをご参考までに共有させて頂きます。
概要
Vonageの公開ドキュメントではGASサポートについて触れていませんが、REST APIにて Vonage NCCOをパラメータにしてコールすれば問題なく動作します。ここではVoice APIを使ったTTS機能の事例をご説明します。
実現手順
- Communications APIs LoginよりAPIアカウントを作成
- アカウントよりCustomer Dashboardにログインし、左側ナビゲーションメニューからApplicationをクリックし、Voice Applicationを作成
- ApplicationのPublic Keyを生成し、private.keyファイルをローカルに保存する
- Vonage Voice API 認証用 JWTを生成
- GASコードを作成
以下、詳細コマンド、またはGAS コードサンプルです:
- 上記、作成したVoice Application IDを指定し、JWTを生成スクリプトを定義し、実行します。
#!/bin/bash
PATH_TO_PRIVATE_KEY=$(pwd)/private.key
NEXMO_APPLICATION_ID=40941d20-ac86-404d-9501-b0996cf8616b
export JWT=$(nexmo jwt:generate $PATH_TO_PRIVATE_KEY application_id=$NEXMO_APPLICATION_ID)
echo $JWT
- 上記JWT、To/From番号と、GASのPayload変数を定義し、コードを実行します。
function callVonageAPI() {
var url = 'https://api.nexmo.com/v1/calls';
var TO_NUMBER = 'to_number'; // Replace with the actual phone number
var VONAGE_NUMBER = 'from_number'; // Replace with the actual Vonage number
var JWT = 'your_jwt'; // Replace with your actual JWT
var data = {
"to": [{
"type": "phone",
"number": TO_NUMBER
}],
"from": {
"type": "phone",
"number": VONAGE_NUMBER
},
"ncco": [{
"action": "talk",
"text": "もしもし、お休みの連絡です。熱がありますのでお休みします。よろしくお願いします。",
"language": "ja-JP",
"style": 2
}]
};
var options = {
'method' : 'post',
'headers': {
'Authorization': 'Bearer ' + JWT,
'Content-Type': 'application/json'
},
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
参考記事