Twilio Functions で HTTP Headers を取得する


はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズの Twilioエバンジェリストの高橋です。

今回は、Twilio Functions で HTTP Headers を取得する方法を解説します。従来、Functions ではヘッダー情報を取得することができず、例えばLINEのMessaging APIをセキュアに扱うことができなかったり、なにかと不便でした。
今回、ベータ版ではあるものの、ヘッダー情報が取得できるようになったとのことで早速試してみました。
https://www.twilio.com/docs/runtime/functions/headers-and-cookies

重要
本機能は現時点(2021/8/19)ではベータ版のため、サポートの対象外となります。また、今後のバージョンアップで機能が変更になることもあります。

準備

管理コンソールを利用する

Twilio Functions を管理コンソールから利用する場合は以下の手順でセットアップを行います。

  • 管理コンソールにログインします。
  • Functionsに移動します。
  • 新しいサービスを作るか、既存のサービスを選択します。
  • Settings > Dependencies を選択します。
  • MODULE 欄に「@twilio/runtime-handler」、VERSIONに「1.2.0-rc.3」と入力します。

  • Add ボタンを押します。

Serverlessを利用する

重要
Node.jsのバージョンが12.22.1以上でないとローカル実行ではエラーになります。

  • 以下のコマンドでモジュールをインストールします。

npm i -S @twilio/[email protected]

  • package.jsonに、"@twilio/runtime-handler": "^1.2.0-rc.3",ができていることを確認します。
  • このままだとデプロイ時にエラーがでるため、上記の行を以下のように編集しておきます。
  • "@twilio/runtime-handler": "1.2.0-rc.3", (バージョンの^を削除)

コーディング

ヘッダを取得するためのコードは以下のとおりです。

Functions
  // Get headers
  const testHeader = event.request.headers['test-header'] || '';
  console.log(`test-header: ${testHeader}`);

この例では、test-headerというヘッダー値を取得しています。実際のヘッダーが大文字になっていても取得できます。

管理コンソール上で作成したサンプルコードは以下のようになります。

テスト

作成したコードをデプロイして、早速テストをしてみましょう。
今回はヘッダー情報を送るために、Postmanを利用したいと思います。

  • メソッドに「POST」を選択します(GETでもOKです)。
  • デプロイした Functions のパスを指定します。
  • headersのKEYtest-headerを定義し、VALUEtestを入れておきます。
  • Sendします。

上記のように、VALUEとして指定したtestが戻ってくればテストは成功です。

まとめ

Functionsでヘッダー情報を取得したいというニーズは以前より多く寄せられていたものなので、今回それが実現したことで、よりFunctionsの使いみちが増えたと思います。
なお、この記事では触れていませんが、ヘッダー同様にCookies情報も取得できるようになっています。

現時点では、Serverless でローカル実行したときはうまく動かなかったりするのですが、とりあえずサーバー上での動作は確認できているので、ぜひ活用していきたいと思います。
(追記)1.2.0-rc.3では、Node.jsのバージョンを12.22.1以上にすることでエラーは解消されています。


Twilio(トゥイリオ)とは

https://cloudapi.kddi-web.com
Twilio は音声通話、メッセージング(SMS /チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウド API サービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

自己紹介  
高橋克己(Katsumi Takahashi) 自称「赤い芸人
グローバル・インターネット・ジャパン株式会社 代表取締役
株式会社KDDIウェブコミュニケーションズ Twilio事業部エバンジェリスト

2001年より大手通信事業者の法人サービスの教育に携わり、企業における電話のしくみや重要性を研究。2016年よりTwilio事業部にジョインし、Twilioを使ったスマートコミュニケーションの普及活動を精力的に行っている。
2015 Hall of Doers
2019 Twilio Champions