Open8

Twilio CLI と Serverless Toolkit のメモ

おとべおとべ

Functions を Protected や Private でデプロイする

templete で作成したまま

twilio serverless:deploy

すると、Function や Asset が全て Public でデプロイされる。

公開設定を変更したい場合は、ファイル名を変更してデプロイする。

  • Public
    • example.js
  • Protected
    • example.protected.js
  • Private
    • example.private.js
おとべおとべ

デプロイする

開発環境へデプロイする

twilio serverless:deploy

URLに dev が入る

存在する Service に上書きデプロイする場合

twilio serverless:deploy --override-existing-project

本番環境へデプロイする

twilio serverless:deploy --production
おとべおとべ

Serverless Toolkit からデプロイすると、Twilio コンソールでは Read-Only

Read-Only. Services created via the API or CLI are not editable in the UI by default.

UI からも変更したい場合は、プロパティで ui-editable を true にせよ、とのこと (未検証)

Set the ui-editable property of the Service to true to make a Service's functions editable via the UI.

ui-editable を設定する

Twillio Docs > Serverless API > Resources > Service > Update a Service resource

https://www.twilio.com/docs/serverless/api/resource/service#update-a-service-resource

twilio-cli での設定

twilio api:serverless:v1:services:update --sid XXXXXXXXXXXXX  --ui-editable

実行後、Twilio コンソールを読み込みなおすと、編集可能になっている(この変更に Deploy は不用)。

  • Functions and Assets > Services のサービス一覧で「Delete」コントロールが有効になっている
  • Functions、 Assets、 Environment Variables など全て UI から変更可能

ドキュメントにある通り、双方から編集するとソース管理の不整合が生じて問題となるケースもあるので、事情が無い限り ui-editable は非推奨。

おとべおとべ

テスト時に便利なマジックナンバー(電話番号)

Twilioサービス内で使われる、テスト用の番号が用意されている。

Twilio Help Center テスト時に便利なマジックナンバー(電話番号)

テストはTwilioサービス内で行われ、通信事業者との接続は行われないため、テスト費用はかからず、レスポンスも早くなるため、これらのツールは時間とコストの削減につながります。

3種類のマジックナンバーがある

  • この番号は利用可能ではありません
  • この番号は無効です
  • この番号有効で、利用可能です(エラーなし)
おとべおとべ

twilio Console で require

 const rp = require('request-promise');

みたいなことをしようとすると

 "Cannot find module 'request-promise'\nRequire stack:\n- /var/task/handlers/ZN4XXXXXXXXXXXXXXXXXXXX.js\n- /var/task/node_modules/runtime-handler/index.js\n- /var/task/runtime-handler.js\n- /var/runtime/index.mjs"

とおこられる。
こちらによると、以下が必要とのこと。

事前に、Twilio管理コンソールの Function > 設定 > Dependencies でrequest-promiseを読み込む

なお、参照した request-promise は2024年12月の現時点で完全に非推奨である。

おとべおとべ

Twilio で Got を使う場合の追加とバージョン

結論

Twilio Functions の Node.js のバージョンが v18 なので、Got はv11系(例えば v11.8.5)。

Twilio の Node.js のバージョン

2025/3/29現在、 Node.js の最新バージョンは v23.10.0 です。
Twilio で動作する Node.js のバージョンは v18 です(コンソール)。
2024年に立ち上げたプロジェクトで、2025/3/29現在 console.log(process.version); したら v18.20.6 でした。

Node.js v18 のサポートは 2025年4月末までのスケジュールです。Twilio の Node.js も今後バージョンが変わるかもしれません。
・・・あと1か月?

Twlio へのモジュールの追加方法(コンソール)

Settings & More メニューから Dependencies を選択。
Node Version が選択できるコンボボックスがありますが、現時点で選択の余地はなく、 v18のみ。

  • Import npm modules into your application. の下の Module 、 Version に入力して Add ボタンで追加する
  • Deploy All でデプロイする

Got のバージョン

Got を最新バージョンで追加しようとして、デプロイするとエラーが出て失敗した。
Node.js のバージョンが v18 なので、Got はv11系(例えば v11.8.5)になる。

おとべおとべ

Twilio CLI と Serverless Toolkit

そもそも、Twilio CLI と Serverless Toolkit って何なんだ。どう違うんだ。なんで両方いるんだ。

Twilio CLI

Twilio サービス全般を管理するための操作全般を行う、コマンドラインインターフェース。

機能

  • Twilio アカウント管理
  • 電話番号の購入・設定
  • 課金情報の確認
  • サービス全般の設定変更・管理

Serverless Toolkit

Twilio Functions 用の開発ツールキット。
Serverless Toolkit は Twilio CLI のプラグインである。
Twilio Functions は、Funstions と Assets を使ってサーバレスでアプリケーション開発ができるサービス。

機能