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 function からの HTTPリクエスト
Request が非推奨となたことをうけ、Twilio の Developers ブログでガイドが出ているのでこれがよさそう。
Node.jsでAysnc/Awaitを使ってHTTPリクエストを行う5つの方法 by Sam Agnew
以下についてサンプルコードを添えて言及されている。
- HTTP -標準ライブラリ
- Got
- Axios
- SuperAgent
- node-fetch
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 を使ってサーバレスでアプリケーション開発ができるサービス。
機能
- ローカル開発環境の提供:デバッグ、ローカルテスト
- デプロイ
- プロジェクトテンプレート
https://www.twilio.com/en-us/serverless/functions