gt-cli@2.9.0
概要
gt CLI が、Twilio Content JSON をファイル形式としてサポートするようになりました。Twilio の Content Template Builder を使って WhatsApp、SMS、RCS で構造化メッセージを送信している場合、アプリですでに使っているのと同じ gt translate ワークフローで、それらのテンプレートも翻訳できるようになりました。
なぜ重要なのか
Twilio Content Templates は、構造化されたメッセージ (変数を含むテキスト、クイック返信ボタン、メディアやアクション付きのカード) を定義する JSON ファイルです。これらのテンプレートには、ボタンラベル、本文テキスト、カードタイトルなど、ユーザー向けの文字列が含まれています。複数の言語でメッセージを送信する場合、こうした文字列を翻訳する必要があります。
現在は、Twilio Console または API を使って、言語ごとに個別のコンテンツテンプレートを手動で作成する必要があります。各テンプレートにはそれぞれ独自の SID、独自の承認プロセス、独自の運用負担があります。言語をまたいでメッセージの内容を一元管理できる信頼できる情報源はありません。
この CLI アップデートにより、テンプレートをデフォルト言語で一度作成すれば、あとは gt translate が残りを処理します。
手順
Twilio を使って WhatsApp 上で顧客サポートフローを構築しているとします。ユーザーへのあいさつと 3 つの選択肢を含むクイック返信テンプレートがあるとしましょう。
{
"friendly_name": "support_greeting",
"language": "en",
"variables": { "1": "Customer" },
"types": {
"twilio/quick-reply": {
"body": "Hi, {{1}}. Thanks for contacting support. How can we help?",
"actions": [
{ "title": "Check order status", "id": "order_status" },
{ "title": "Return an item", "id": "return_item" },
{ "title": "Speak with an agent", "id": "speak_agent" }
]
},
"twilio/text": {
"body": "Hi, {{1}}. Thanks for contacting support. How can we help?"
}
}
}actions 内の body フィールドと title の値は、いずれも翻訳可能な文字列です。{{1}} の変数プレースホルダー、id フィールド、および構造を表すキーは翻訳されません。
ステップ 1: 設定
gt.config.json の設定に twilioContentJson を追加します。
{
"defaultLocale": "en",
"locales": ["en", "es", "fr", "ja"],
"files": {
"twilioContentJson": {
"include": ["twilio/[locale]/**/*.json"]
}
}
}include パス内の [locale] プレースホルダーは、CLI にソースファイルの場所と翻訳ファイルの保存先を指示します。ソースファイルは twilio/en/ から読み込まれ、翻訳されたファイルは twilio/es/、twilio/fr/ などに保存されます。
ステップ2: translate
npx gt@latest translate翻訳は、設定された各ロケールごとに生成されます。出力では Twilio JSON の構造はそのまま保持され、変わるのは文字列の値だけです。
スペイン語での出力は次のようになります。
{
"friendly_name": "support_greeting",
"language": "es",
"variables": { "1": "Customer" },
"types": {
"twilio/quick-reply": {
"body": "Hola, {{1}}. Gracias por contactar con soporte. ¿En qué podemos ayudarte?",
"actions": [
{ "title": "Ver estado del pedido", "id": "order_status" },
{ "title": "Devolver un artículo", "id": "return_item" },
{ "title": "Hablar con un agente", "id": "speak_agent" }
]
},
"twilio/text": {
"body": "Hola, {{1}}. Gracias por contactar con soporte. ¿En qué podemos ayudarte?"
}
}
}各翻訳済みファイルは、有効な Twilio Content JSON テンプレートであり、ロケールごとの新しいテンプレートとして Twilio Content API に直接アップロードできます。