AJOのプッシュ通知で、ペイロード配列の動的フィールドが失敗する

Adobe Journey Optimizer(AJO)では、同じデータがメールや SMS で機能する場合でも、プッシュ通知で「callerName"」などのペイロード配列からの動的フィールドをレンダリングできません。 フィールドは、空白で表示される場合や、16 進数コードとして特殊文字が表示される場合があります。 これを修正するには、式を簡素化し、可能であればペイロードを統合し、UTF-8 エンコーディングがエンドツーエンドで保持されるようにします。

説明 description

環境

商品:Adobe Journey Optimizer(AJO)
チャネル:プッシュ(iOS(APN 経由)、Android(FCM 経由)

問題/症状

プッシュ通知の配列ベースのフィールドで、動的パーソナライゼーションが失敗する。

再現手順

  1. AJOで、プッシュ通知をトリガーするジャーニーを作成します。

  2. パーソナライゼーション属性が配列の一部であるペイロードを渡します。例:

    code language-none
    {
      "attribute_list_group": [
        {
          "name": "callerName",
          "value": "Bill Robert"
        }
      ]
    }
    
  3. プッシュ通知のタイトル/本文で、パーソナライゼーション式を設定します。

    code language-none
    #each context.journey.events.[ eventId] ._tmobile.decision_detail_group.attribute_list_group as |container|
      {%#if contains(container.name, "callerName")%}
        container.value
      {%/if%}
    /each
    
  4. 通知を送信します。

監視:モバイルでは、フィールドが空白になるか、特殊文字の 16 進コードが表示されます。 同じ式がメールと SMS チャネルで正しく機能します。

原因

  • AJOのプッシュチャネルパーサーは、メールや SMS よりも厳格です。 フラットな文字列値が必要で、ループ、複雑な式、タイトルまたは本文の非文字列データ型のサポートは限られています。
  • テンプレートとヘルパーの構文(Handlebars と Nunjucks/Liquid)は、プッシュ通知フィールドでは同じようにはサポートされていません。
  • ペイロード内の特殊文字は、シリアル化中に 16 進数(例:\u2019)としてエンコードされる場合があります。 プッシュサービスや一部のデバイスアプリでは、これらのシーケンスがデコードされず、代わりにそのまま表示される場合があります。
  • APN や FCM などのプッシュサービスでは、UTF-8 エンコーディングが適用され、制御文字が拒否されます。また、不適切な形式やエスケープされたシーケンスが含まれるメッセージが誤ってレンダリング、ドロップ、拒否される場合があります。
  • AJOでは、正しく入力された文字列のみがサポートされます。 動的式がオブジェクト、不正な形式の文字列または配列に解決されると、プッシュメッセージは警告なしに失敗するか、切り捨てられる場合があります。

解決策 resolution

  • ループ式からすべての空白文字と改行を削除します。 次のようなコンパクトなバージョンを使用します。#each context.journey.events.[ eventId] ._tmobile.decision_detail_group.attribute_list_group as |container|{%#if contains(container.name, "callerName")%}container.value{%/if%}/each これにより、現在のお客様の実装におけるラテン文字の問題が解決されました。
  • 可能であれば、callerName を最上位フィールドに移動して、ペイロードをフラット化します。 次に、プッシュテンプレートで event.callerName を直接使用します。
  • 統合を使用できない場合は、正しい配列インデックスが選択されていることを確認し、AJOでパーソナライゼーションプレビューをテストしてレンダリングを確認します。
  • ソースシステムからAJO処理を経てプッシュサービスに至るまで、あらゆる段階で UTF-8 エンコーディングが確実に保持されるようにします。 ダブルエンコーディングや特殊文字のエスケープは避けます。
  • 特殊文字が引き続き 16 進数として表示される場合は、プッシュチャネルまたはデバイスレンダリングの制限がある可能性があります。 AJOは現在、デバイス上のこれらのキャラクターのデコードを強制する設定を提供していません。

関連資料

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f