Skip to main content

はじめに

Config (または Config ファイル) は、Connected Channel の各コネクタを定義します。新しいコネクタを追加する場合や既存のコネクタを変更する場合は、コネクタが正しく構成されるように Config ファイルをアップロードする必要があります。

サンプルファイル

以下のサンプル Config ファイルをダウンロードして使い始めることができます。

Config のセクション

Config ファイルは次のセクションに分かれています。

ファイル形式

Config ファイルのファイル形式は次のとおりです。 kkk

基本情報

このセクションでは、コネクタの名前と、コネクタが解決するユースケースを定義する必要があります。

入力変数

入力変数を使用すると、App marketplace に入力フィールドをレンダリングできます。入力変数は、MoEngage をアプリに正常に接続し、アプリを通じてキャンペーンを効果的に実行するために必要な情報の収集を容易にします。 入力変数を定義するには、input_variables セクションに次の内容を追加する必要があります。 上記の必須キーに加えて、UI とデータ処理を強化するために、すべての入力タイプで次のオプションのキーがサポートされています。

可視性スコープ

入力変数は次の場所で収集されます。
  • App Marketplace
  • キャンペーン作成フォーム (ステップ 2)

App MarketPlace

チャネルアプリへの接続は、以下に示すように App marketplace から追加されます。 App marketplace では、認証要件として機能するフィールド、またはすべてのキャンペーンに共通するフィールドを収集する必要があります。これらのフィールドは、キャンペーン情報から独立している必要があります。 たとえば、Telegram Bot ID は App marketplace で収集することをお勧めします。これにより、同じ Telegram Bot を使用して複数のキャンペーンを実行できます。一方、Telegram Chat ID はキャンペーンに依存し、エンドユーザーごとに変更する必要があるため、App marketplace で収集することはお勧めしません。
MoEngage は、デフォルトで App marketplace の各コネクタの接続名を表示します。これにより、接続を区別するための視覚的な識別子が提供されます。

キャンペーン作成フォーム (ステップ 2)

チャネルアプリへの接続は、以下に示すようにキャンペーン作成から追加されます。

サポートされている入力タイプ

すべての入力タイプは、App marketplace とキャンペーン作成フォーム (ステップ 2) で使用できます。
MoEngage は現在、次の入力タイプをサポートしています。

Text

この入力タイプでは、ユーザーは基本的なテキストまたは文字列値を入力できます。UI にはシンプルな 1 行のテキストボックスとして表示され、ユーザー名やメールアドレスなどの短い自由テキスト入力を求める場合に便利です。 Text を追加するには、次の構造に従います。

Rich-Text (HTML)

Rich-Text は個別の入力タイプではありません。メッセージコンテンツで使用されるフィールドの Text 入力タイプで利用できる書式設定モードです。HTML サポートはワークスペースレベルの機能であり、Config ファイルで切り替えることはできません。ワークスペースでこの機能を有効にするには、サポートにお問い合わせください。 有効にすると、メッセージコンテンツで使用される Text フィールドで標準の HTML タグを使用できます。<script> は許可されていませんが、それ以外のすべての HTML タグがサポートされています。 Rich-Text を使用するには、Text の構造に従います。
ネストされたタグがサポートされています。たとえば、<b><i>Text</i></b> は太字の斜体テキストとしてレンダリングされます。
サポートされていないタグは、リクエストが送信される前に値から自動的に削除され、入力時に UI でユーザーに警告通知が表示されます。
次の HTML 要素は禁止されており、ステップ 2 の検証中にブロックされます。
  • <script>
  • <iframe>
  • <style>
  • <object>
  • <applet>
  • <meta> — http-equiv="refresh" による不正なリフレッシュリダイレクトのリスクがあります。
  • <base> — 相対リンクパスを操作される脆弱性があります。
  • ネストされた <script> ブロックを含む <svg> 要素。
  • すべてのインラインイベントハンドラー (onclick、onerror、onload、onmouseover など)。<img> や <a> など、一般的に許可されている要素に付加されている場合も含みます。
  • <a href="javascript:..."> 内に実装された javascript: プロトコルリンク。
このリストに含まれていないタグは、キャンペーン作成の第 2 フェーズで UI 検証を通過します。ただし、このステータスは、フォームレベルのサニタイザーがそれらを明示的にブロックしないことを確認するだけです。ダウンストリームのクライアントアプリケーション (Telegram など) がそれらをどのように解釈、エスケープ、または表示するかについては保証されず、動的属性 (onclick や onerror など) がペイロードの送信前に削除されることも保証されません。本番環境のキャンペーンでこれらのタグを使用する前に、必ずターゲットチャネルでエンドツーエンドのレンダリング動作を検証してください。
Connected App でのユーザー入力の例:

Number

この入力タイプは数値用です。テキストボックスとして表示されますが、数値の入力のみを受け付けます。年齢、ID、数量などの数値を収集する場合に使用します。 Number を追加するには、次の構造に従います。
必要に応じて、検証を使用して数値入力の下限と上限を制限できます。

Boolean

この入力タイプはラジオボタンとして表示され、ユーザーは True または False の 2 つの選択肢から必ず 1 つを選択します。機能の有効化/無効化、同意/不同意など、二者択一をユーザーに求める場合に使用します。 Boolean を追加するには、次の構造に従います。

DateTime

この入力タイプは日付と時刻用です。DateTime ピッカーとして表示され、ユーザーは特定の日付と時刻を選択できます。投稿やリマインダーのスケジュール設定など、特定の日付や時刻に関するデータを収集する場合に使用します。 DateTime を追加するには、次の構造に従います。

Password

この入力タイプはパスワード入力用です。テキストボックスとして表示されますが、プライバシー保護のためにユーザーの入力をマスクします。ログインアドレスなど、ユーザーに機密情報を要求する場合に使用する必要があります。 Password を追加するには、次の構造に従います。

ドロップダウンリスト (単一選択および複数選択)

この入力タイプでは、複数選択モードでユーザーが複数のオプションを選択できます。あらかじめ決められたオプションのセットがあり、自由テキストの入力を許可せずに入力を制限したい場合に推奨されます。 ドロップダウンリストを追加するには、次の構造に従います。

Hash Maps

この入力タイプは、キーと値のペアの入力に使用されます。動的な UI セクションとしてレンダリングされ、ユーザーはキーと値のペアの行を追加、編集、削除できます。ボタンラベルや URL、カスタムメタデータなど、可変のユーザー定義データが必要な場合に使用します。 Config ファイルに "type": "key_value" の入力変数が複数含まれている場合、それぞれが独自の見出し、ヘルプテキスト、行のセットを持つ独立した UI セクションとしてレンダリングされます。 キーと値の入力ボックスとしてレンダリングされた Hash Maps 入力 Hash Map を追加するには、次の構造に従います。

UI の動作

シナリオの例

同じ Config ファイル内の 2 つの key_value 入力変数:
これは、Call to Action Buttons (表示、必須) と Additional Data (非表示、オプションですが、設定されたデフォルト値とともに送信されます) の 2 つの個別のセクションとしてレンダリングされます。

出力形式

フォームが送信されると、MoEngage は key_value フィールドの値を行オブジェクトの配列として渡します。
リクエストボディで key_value フィールドを参照するには、他の入力変数と同様に JINJA を使用しますが、値は単一の文字列ではなく配列に解決されることに注意してください。通常、ボディを構築する際にはこの配列を反復処理します。

入力の検証

Text や Password など、検証をサポートする入力タイプを定義する場合は、UI でユーザーが入力した値を検証するためのルールをあらかじめ設定する必要があります。入力変数内に次のキーを使用して検証を追加できます。
以下は、3 つの個別のルールを持つ Full Name フィールドの例です。
これらの各ルールは、有効な入力に導くために UI でユーザーに表示されます。

入力変数の参照

ユーザーから入力変数の値を収集した後、次のセクションでそれらを使用できます。
  • 認証
  • リクエストとレスポンス
入力変数を参照するには、JINJA コードを使用できます。この参照メカニズムは、MoEngage のパーソナライゼーションに似ています。たとえば、次の入力変数について考えてみます。
  • App marketplace から:
    Username: String
  • キャンペーン作成フォーム (ステップ 2) から:
    Mobile Number: String
これらの変数を参照するには、次の JINJA コードを使用します。
これらの入力変数はユーザーの入力を取得し、認証時に使用したり、API リクエストペイロードの一部として含めたりできます。

認証

このセクションでは、アプリに必要な認証を定義できます。MoEngage はアプリへのリクエストの送信を可能にし、Connected Channels は次の組み込み認証タイプをサポートしています。
  • No Auth
  • Basic Auth
  • API Key Auth
  • OAuth2

No Auth

アプリで認証が不要な場合、または標準の認証方法をカスタム実装している場合は、No Auth を選択できます。No Auth を選択すると、MoEngage はリクエストに対して事前認証操作を実行しません。 “No Auth” を使用する場合は、アプリタイプとして No Auth を選択します。必要に応じて、API にカスタム URL パラメータまたはヘッダーを含めることができます。
このアプリタイプでは追加情報は不要なため、auth_info キーには空のオブジェクトを渡す必要があります。

Basic Auth

アプリが Basic Auth をサポートしている場合は、App marketplace でユーザー名とパスワードを収集し、各リクエストの Basic Auth トークンの一部として渡すことができます。 Basic Auth を追加するには、次の構造に従います。
上記の例では、App Marketplace フォームでユーザーが入力した値を参照しています。MoEngage は Base64 でエンコードされた Basic Auth トークンを生成し、各リクエストの Authorization ヘッダーに含めます。 たとえば、Account ID が ABC123 で Account Key が 123XYZ の場合、各リクエストで次のヘッダーを渡す必要があります。 Authorization: Basic QUJDMTIzOjEyM1hZWg==

OAuth2

アプリが認可に OAuth2 フレームワークを使用している場合、ユーザーの同意の取得やアクセストークンとリフレッシュトークンの管理を含むフロー全体を MoEngage が処理するように構成できます。
MoEngage は次の OAuth2 グラントタイプをサポートしています。
  • Authorization Code
  • Refresh Token

特別な認証変数

MoEngage は、アプリ内で OAuth2 メカニズムをサポートするために参照できるいくつかの特別な変数を公開しています。 OAuth2 の呼び出しとコネクタリクエストを設定する際に、上記の変数を参照できます。

Redirect URI

Redirect URI は、アプリが追加されているデータセンターによって異なります。 すべてのデータセンターでアプリを公開する場合は、各 Redirect URI を承認する必要があります。

アプリの OAuth を設定する

OAuth2 を追加するには、次の構造に従います。
OAuth2 の auth モジュールには、次のキーが必要です。 MoEngage がアプリケーションから同意とトークンを取得できるようにするには、次のリクエストのパラメータを構成します。

認可リクエスト

アクセストークンリクエスト

リフレッシュトークンリクエスト

リクエストとレスポンス

このセクションでは、送信される各キャンペーンに対して MoEngage が開始する API リクエストを設定する必要があります。MoEngage からリクエストが行われた後、API リクエストのレスポンスに基づいてキャンペーン統計を計算する方法を設定できます。
現在、MoEngage は非同期またはコールバック駆動の統計をサポートしていません。

キャンペーンリクエスト

MoEngage は、キャンペーンが送信されるたびにアプリへの API リクエストの送信を試みます。
たとえば、キャンペーンが 50 人のユーザーを対象としている場合、MoEngage はそのキャンペーンに対して 50 件の API リクエストを行います。
  • フリークエンシーキャッピングまたはサイレント時間 (DND)
  • スロットリング
  • 一括 API リクエスト
  • 複数の API リクエスト (チェーン API リクエスト)
レスポンスを構成するには、Config に次の内容を追加します。

リクエスト形式

リクエスト形式は、リクエストのペイロードについて MoEngage に通知します。

レスポンスの処理

API リクエストを行った後、レスポンスの解釈方法を MoEngage に通知できます。また、成功や失敗などのすべてのレスポンスをカバーするように、リクエストに複数のレスポンスを追加することもできます。 レスポンスは 2 つの部分で構成されます。
  • レスポンス条件: API によって提供されたレスポンスに基づいて、ステータスコード、ヘッダー値、さらにはボディペイロードに条件を追加できます。これらの条件が満たされると、MoEngage でアクションを実行できます。
  • レスポンスアクション: アクションは、MoEngage によって実行される操作です。

ユースケース

レスポンス処理にはいくつかのユースケースがあります。さまざまなユースケースで使用されるトラッキングのタイプは次のとおりです。
  • 統計のトラッキング: キャンペーンの正確な成功および失敗の統計を表示します。
  • イベントのトラッキング: 特定の条件が満たされたときに発生するトリガーイベントです。ユーザー向けの他のジャーニーを作成するのに役立ちます。

レスポンスを追加する

レスポンスを追加するには、次の構造に従います。

レスポンス条件

ここでは、各レスポンスに複数の条件を含め、AND 演算子と OR 演算子の両方を組み合わせることができます。MoEngage のセグメンテーションを使用した経験がある場合は、それを活用できます。 新しい条件を追加するには、次のようにします。
各条件は、MoEngage では Filter と呼ばれます。次の条件は、セグメンテーションフィルターと同様に機能します。 以下は、API のレスポンスステータスコードが 200 であり、ペイロードで {"ok": true} が返されるかどうかをチェックする評価基準の例です。
アプリ向けにカスタマイズされた条件を作成できます。これらの条件の正確さは、MoEngage がイベントをトリガーし、統計を効果的に表示する能力に直接影響します。

レスポンスアクション

ここでは、上記の条件に基づいて MoEngage にアクションを実行させることができます。現在、MoEngage は Create Event アクションをサポートしています。

Create Event

これは、メッセージの送信、ユーザーの同期などのユースケースをトラッキングします。このアクションを使用すると、MoEngage でイベントをトリガーできます。以下は、レスポンスにイベントを追加するための構造です。
キャンペーン統計、特に送信イベントと失敗イベントを正確に計算するには、次の 2 つのイベントをアクションの一部として追加する必要があります。
  • Connected App Campaign Sent
  • Connected App Campaign Failed
MoEngage には、ユーザーのトラッキングを改善するために、次のデフォルトの標準イベント属性も含まれています。

Config ファイルのアップロード

Config ファイルの準備ができたら、こちらを参照して、App marketplace の Connected App にアップロードしてください。