手順1: Twilio Functionの作成

この手順ではTwilio Functionsを用いてサーバーレス実行環境を作成します。

Twilio FunctionsはWebhook(Webアプリケーション)を利用する方法に比べて次の利点があります。

手順2-1: サービスを作成

Functionsを開くか、サイドナビゲーションからクリックしFunctionsコンソールを開きます。

Functionsコンソール

Overview画面からCreate Serviceボタンをクリックし新しいサービスを作成します。

Functions - サービスを作成

最初にサービスの名前を入力します。この名前はURLの一部として利用されるため、そちらを意識し設定してください。

Functions - サービス名

2-2: Functionを追加

新たにサービスを作成するとUIベースのエディタ画面が表示されます。画面のAdd +ボタンをクリックし、Add Functionを選択します。

Functions - Functionを追加

Functionのパス設定を求められます。ここではアクセストークンを生成するため/tokenと設定します。

Functions - パスを指定

デフォルトではここで作成したFunctionはProtectedと設定されます。この場合、Functionの実行には有効なTwilioリクエスト署名が必要となり、外部からのアクセスを抑制できます。今回のハンズオンでは実行結果を簡単に確認するため、FunctionパスをPublicと設定します。

token - public


FunctionパスのアクセスレベルをPublicと指定した場合は外部からのリクエストを全て許可することになります。作成したアクセストークンを用いてTwilioサービスを利用できるため、実開発では、Protectedとし、X-Twilio-Signature署名を確認する、あるいはトークン発行の前に別途ユーザーを認証する、トークンの生存期間を可能な限り短くする、などの対策が必要となります。


作成したFunctionにはあらかじめ下記のコードが実装されています。この例はコメントを日本語に意訳し、必要に応じて追記しています。

// これは新しいfunctionです。左のパスを変更できます。
exports.handler = function(context, event, callback) {
  // このfunctionで返すTwiMLの例です。
  let twiml = new Twilio.twiml.VoiceResponse();
  // Hello Worldと発音します。
  twiml.say('Hello World');
    
  let variable = 'welcome!';

  // コンソールにログを残すこともできます。
  console.log('error', variable);

  // callbackを返し、functionの呼び出しを終了します。
  // 正常に終了した場合は、第1引数はnullになります。
  // 必要に応じてTwiMLなど第2引数以降で返します。
  return callback(null, twiml);
};

ハンドラーの中身をクリアします。

exports.handler = function(context, event, callback) {

};

次の手順ではこのハンドラーでアクセストークンを作成します。

次の手順

手順2: アクセストークンの生成