Twilioブログ

Twilio Functionから別のFunctionを呼び出す方法

こんにちは、Twilioマーケチームのkatsu.tです。

Twilio Functionsを利用している中で、「複数のFunction間で同じ処理を行いたい」と思うときはありませんか?
しかし、各Functionに同じ処理を書くのは冗長的になり、その分メンテナンス性も低下してしまいます。

重複した処理は一つのFunctionにまとめて、別Functionから利用することで、すっきりとしたコーディングを実現できます。

本記事では上記のようなケースで、Functionから別Functionを呼び出す方法についてご紹介いたします。

Twilio Functionsについて

まずTwilio Functionsについて簡単にご紹介いたします。

Twilio FunctionsはNodeのランタイムを兼ね備えているサーバーレス環境です。Functions概要図Twilio Functionsでは以下を提供しています。

  • 安全性
    • Twilioの署名検証機能を標準で要しており、Twilioからのリクエストのみを受け付ける設定を簡単に行うことができます。
  • サーバーレス
    • 運用上の負担であるサーバー管理はTwilioが実施いたします。
  • 自動スケーリング
    • アプリケーションの要求を満たすために、サーバーを自動でスケーリングします。
  • Twilioとの親和性
  • 使い慣れた言語
    • Node 12のランタイムを提供しています。

Twilio Functionから別のFunctionを呼び出す方法

Functionから別のFunctionを読み込む際には、Nodeで一般的に利用されている”require”を利用します。他Functionのパスを取得し、requireを使ってモジュールを読み込むことで、別のモジュールのメソッドを利用できます。

// Runtime.getFunctions()['Path名'].pathを利用することで、別Functionのパスを取得することが可能です。
let path = Runtime.getFunctions()['util'].path; let util = require(path);

利用例

ここでは”/util”というPathのFunctionを作成し、今の時刻を取得する、”getNowDate()”メソッドを別のFunctionから呼び出す例をご紹介します。

※Functionへのアクセス権限は、Private、Protected、Publicどれでも大丈夫です。

アクセス権限 概要
Private 外部からのアクセスを許可しません。
Protected Twilioの署名がされているリクエストのみアクセスを許可します。
Public どんなリクエストでもアクセスを許可します。

/util

function getNowDate(){
  var date = new Date();
  var str = date.getFullYear()
      + '/' + ('0' + (date.getMonth() + 1)).slice(-2)
      + '/' + ('0' + date.getDate()).slice(-2)
      + ' ' + ('0' + date.getHours()).slice(-2)
      + ':' + ('0' + date.getMinutes()).slice(-2)
      + ':' + ('0' + date.getSeconds()).slice(-2)
      + '(UTC)';
  return str;
}
module.exports ={
    nowDate: getNowDate,
};

呼び出し元Function

exports.handler = function(context, event, callback) {
  let path = Runtime.getFunctions()['util'].path;
  let util = require(path);
  return callback(null, util.nowDate());
};

まとめ

Twilio FunctionsはTwiMLを返すサーバーとしてだけでなく、Studioと連携させることで、より高度な会話フローを構築できるサービスです。

Twilio Functionsを利用することで、よりパワフルにTwilioを利用することができます。ぜひTwilio Functionsをご利用ください!

アプリケーションエンジニア 葛 智紀
アプリケーションエンジニア 葛 智紀

前職でiOS、Androidのネイティブアプリケーション開発、AngularやLaravelを用いたウェブアプリケーション開発に従事。KDDIウェブコミュニケーションズではTwilioの最新情報の発信やTwilioを用いた地域課題解決を担当。 個人では、Google Developer Group Tokyoのオーガナイザーを務める。

お問い合わせはこちら

Share!!

  • お役立ち情報
  • イベント情報
  • 相談会申込
  • 導入事例