戻る

gt-cli@2.9.0

Ernest McCarter avatarErnest McCarter
gt-cliv2.9.0twiliocontent-templatesi18nwhatsappsms

概要

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": "こんにちは、{{1}}。サポートにお問い合わせいただきありがとうございます。どのようなご用件でしょうか?",
      "actions": [
        { "title": "注文状況を確認する", "id": "order_status" },
        { "title": "商品を返品する", "id": "return_item" },
        { "title": "担当者に話す", "id": "speak_agent" }
      ]
    },
    "twilio/text": {
      "body": "こんにちは、{{1}}。サポートにお問い合わせいただきありがとうございます。どのようなご用件でしょうか?"
    }
  }
}

actions 内の body フィールドと title の値は、いずれも翻訳可能な文字列です。{{1}} の変数プレースホルダー、id フィールド、および構造上のキーは翻訳対象ではありません。

ステップ 1: 設定

gt.config.jsontwilioContentJson を追加します:

{
  "defaultLocale": "en",
  "locales": ["en", "es", "fr", "ja"],
  "files": {
    "twilioContentJson": {
      "include": ["twilio/[locale]/**/*.json"]
    }
  }
}

include パス内の [locale] プレースホルダーは、CLI (コマンドラインインターフェース) にソースファイルの検索場所と翻訳ファイルの保存先を指定します。ソースファイルは twilio/en/ から読み込まれ、翻訳済みファイルは twilio/es/twilio/fr/ などに保存されます。

ステップ2:翻訳

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 に直接アップロードできます。

リンク