

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Connect のフローブロック: ルーティング条件の設定
<a name="set-routing-criteria"></a>

このトピックでは、任意のチャネルのコンタクトを適切なキューにルーティングするためのフローブロックを定義します。

## 説明
<a name="set-routing-criteria-description"></a>

コンタクトにルーティング条件を設定します。
+ ルーティング条件は、音声、チャット、タスク、E メールなど、任意のチャネルのコンタクトに対して設定できます。これにより、キュー内でコンタクトをどのようにルーティングするかを定義します。ルーティング条件とは、単一または複数のルーティングステップのシーケンスです。
+ ルーティングステップとは、このコンタクトをエージェントにルーティングするために満たす必要がある 1 つ以上の要件の組み合わせです。ルーティングステップごとにオプションの有効期間を設定できます。例えば、特定の有効期間中、ユーザー ID に基づいて特定のエージェントにのみこのコンタクトを提供するという要件でルーティングステップを作成できます。別の例として、**Language:English >= 4** および **Technology:AWS Kinesis >= 2** という要件で、有効期限のないルーティングステップを作成することもできます。
+ 要件とは、事前定義された属性名、その値、比較演算子、習熟度レベルを使用して作成された条件です。例えば、**Technology:AWS Kinesis >= 2** などです。
+ **[ルーティング条件の設定]** ブロックは **[キューへ転送]** ブロックと併用します。後者がコンタクトを Amazon Connect キューに転送し、コンタクトに指定されているルーティング条件を有効にするためです。
+ コンタクトに設定されたルーティング条件は、コンタクトがエージェントキューに転送された場合は有効になりません。詳細については、「[エージェントの習熟度に基づいて Amazon Connect でルーティングを設定する](proficiency-routing.md)」を参照してください。
+ 有効期限 (DurationInSeconds) の設定が短すぎると、最初のエージェントが通話を見逃したときに、Amazon Connect が次に熟練度の高いエージェントにコンタクトを適切にルーティングできなくなる可能性があります。デフォルトのキューベースのルーティングは、熟練度ベースのルーティングと競合するため、これら 2 つの方法間ではルーティング動作に一貫性がなくなる場合があります。

## サポートされるチャネル
<a name="set-routing-criteria-channels"></a>

次の表に、このブロックでの、指定されたチャネルを使用している問い合わせのルーティング先を示します。


| チャネル | サポート対象? | 
| --- | --- | 
| 音声 | はい | 
| Chat | はい | 
| タスク | はい | 
| E メール | はい | 

## フロータイプ
<a name="set-routing-criteria-types"></a>

このブロックは、次の[フロータイプ](create-contact-flow.md#contact-flow-types)で使用できます。
+ 着信フロー
+ [Customer queue flow (顧客キューフロー)]
+ エージェントへの転送フロー
+ キューへの転送フロー

## 事前定義された属性を使用してルーティング条件を設定するための前提条件
<a name="set-routing-criteria-prerequisites"></a>

コンタクトにルーティング条件を設定する前に、以下のステップを完了しておく必要があります。

1.  [コンタクトをエージェントにルーティングするための事前定義された属性を作成する](predefined-attributes.md) を作成します。

1.  以前に作成した事前定義された属性を使用した [Amazon Connect インスタンスのエージェントに習熟度を割り当てる](assign-proficiencies-to-agents.md) 

## [ルーティング条件の設定] ブロックを使用するタイミング
<a name="set-routing-criteria-when"></a>

コンタクトをエージェントに直接ルーティングする方法は 2 つあります。
+ **オプション 1: **[ルーティング条件の設定]** ブロックを使用して、エージェントを優先するルーティング条件を指定します**。このオプションは、以下の場合に適しています。
  + 複数のエージェントを同時にターゲットにしたい場合。例えば、主に顧客をサポートしている 4 人体制のサポートチームなどです。
  + 優先エージェントが対応できないときに、キュー内のより広範なエージェントのプールにフォールバックするオプションが必要な場合。
  + 標準キューのメトリクス内でコンタクトをレポートしたい場合。

  このオプションを選択する利点は、エージェントの userID (janedoe など) を使用するため、ARN を使用するオプション 2 よりも設定が簡単であることです。

  ルーティング条件の主な欠点は、キューメトリクス (SLA、キュー時間など) に影響を及ぼすことです。QueueA のコンタクトが Agent12 を特に待っている場合、他のエージェントが対応可能でも、コンタクトは対応されません。これは、定義された SLA に違反する可能性があります。この状況は、リアルタイムメトリクスレポートで確認できます。「[ワンクリックドリルダウンの使用](one-click-drill-downs.md)」を参照してください。
**注記**  
ルーティングを設定し、タイムアウト設定を指定するときは、これらの影響に対応するために以上のシナリオに留意してください。
+ **オプション 2: エージェントのキューを使用します**。このオプションは通常、以下の場合に適しています。
  + コンタクトが、特定のエージェント**のみ**を対象としており、他は対象外である場合。
  + コンタクトを標準キューにレポートしたくない場合。標準キューとエージェントキューの詳細については、「[キュー: 標準およびエージェント](concepts-queues-standard-and-agent.md)」を参照してください。

  これをセットアップする手順については、「[問い合わせをエージェントキューに転送する](transfer-to-agent.md)」を参照してください。

## ルーティング条件の仕組み
<a name="set-routing-criteria-how-it-works"></a>

コンタクトを標準キューに転送すると、Amazon Connect は、コンタクトのルーティング条件で指定された最初のステップを有効にします。

1. エージェントは、コンタクトのアクティブなルーティングステップで指定された要件を満たしている場合にのみ、コンタクトに参加します。

1. ステップの有効期限が切れるまで該当するエージェントが見つからない場合、Amazon Connect はルーティング条件のいずれかが満たされるまで、ルーティング条件で指定された次のステップに進みます。

1.  すべてのステップの有効期限が切れると、コンタクトは、ルーティングプロファイルにキューを持つ、最も長く対応可能なエージェントを提示されます。

**注記**  
ルーティングステップで有効期限が指定されていない場合、ルーティングステップは期限切れになりません。

**ルーティング条件に使用できる項目:**
+ 以下から選択します。
  + ユーザー ID またはユーザー名に基づく 1 人以上の優先エージェント。
  + `AND` 条件を使用した最大 8 個の属性。
  + ルーティングステップでの最大 3 つの OR 条件。OR で区切られた要件ごとに、最大 8 つの属性を含めることができます。
    + 属性を動的に設定する場合にのみ OR を使用できます。詳細については、「[ルーティング条件を設定する方法](#set-routing-criteria-using-the-flow-block)」を参照してください。
  + NOT 演算子により、選択したレベルで熟練度を除外します。属性を動的に設定する場合にのみ NOT を使用できます。詳細については、「[ルーティング条件を設定する方法](#set-routing-criteria-using-the-flow-block)」を参照してください。

**注記**  
ネストされた式はサポートされていますが、OR 式は最上位レベルに配置する必要があります。AND は OR 内に配置できますが、その逆はできません。

また、属性とルーティング条件では、次のことが前提となります。
+ 各属性に習熟度が割り当てられている必要があります。
+  各熟練度レベルでは、「>=」比較演算子を使用するか、1～5 の範囲の熟練度レベルを使用する必要があります。
+ 条件の各ステップには、時間指定の期限タイマーが必要です。
+ 条件の最終ステップには、時間指定の期限タイマー、または無期限の期限タイマーを設定できます。

## ルーティング条件を設定する方法
<a name="set-routing-criteria-using-the-flow-block"></a>

必要なルーティング条件は、フローブロックの UI で手動で設定することも、[[AWS Lambda 関数](invoke-lambda-function-block.md)] ブロックの出力に基づいて動的に設定することもできます。

![[ルーティング条件の設定] のプロパティページ。](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/set-routing-criteria-using-the-flow-block.png)


### ルーティング条件の手動設定
<a name="set-routing-criteria-set-manually"></a>

このオプションを使用して、**[ルーティング条件の設定]** ブロックで指定したコンタクトのルーティング条件を手動で設定できます。ドロップダウンリストから属性と値を選択して、事前定義された属性をルーティングステップに手動で追加している次のフローの例を参照してください。

![ルーティング条件フローブロックを手動で設定します。](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/set-routing-criteria-set-manually.png)


 このオプションでも、必要に応じて JSONPath 参照を使用して事前定義された属性を動的に設定できます。例えば、すべてのコンタクトの ``Technology`` 要件に基づいて `AWS DynamoDB` 値をハードコーディングする代わりに、``$.External.language`` JSONPath 参照を指定できます。JSONPath 参照の詳細については、「[Amazon Connect で使用可能なコンタクト属性とその JSONPath 参照のリスト](connect-attrib-list.md)」を参照してください。

### ルーティング条件を動的に設定する
<a name="set-routing-criteria-set-dynamically"></a>

**[AWS Lambda 関数を呼び出す]** ブロックからの出力に基づいて、コンタクトのルーティング条件を動的に設定できます。
+ [[AWS Lambda 関数](invoke-lambda-function-block.md)] ブロックで、ルーティング条件を JSON 形式で返し、レスポンスの検証を JSON として設定するように Lambda 関数を構成します。**[AWS Lambda 関数を呼び出す]** の使用方法の詳細については、「[AWS Lambda 関数へのアクセスを Amazon Connect に許可する](connect-lambda-functions.md)」ドキュメントを参照してください。
+  [`Set routing criteria`] ブロックで、**[動的に設定]** オプションを選択し、上記の Lambda 属性 (**[名前空間]** として `External`、**[キー]** として上記の Lambda の応答で指定したもの) を使用します。このキーは例えば、`MyRoutingCriteria` となります。これは、次のセクションの Lambda 応答のサンプルにあるルーティング条件を指しているためです。

### ルーティング条件を設定するサンプル Lambda 関数
<a name="set-routing-criteria-sample-lambda-function"></a>

 次の Lambda の例では、`AndExpression` を使用してルーティング条件を返しています。

```
export const handler = async(event) => {
  return {
   "MyRoutingCriteria": {
    "Steps": [
      {
        "Expression": {
          "AndExpression": [
            {
              "AttributeCondition": {
                "Name": "Language",
                "Value": "English",
                "ProficiencyLevel": 4,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            },
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            }
          ]
        },
        "Expiry": {
          "DurationInSeconds": 30
        }
      },
      {
        "Expression": {
          "AttributeCondition": {
            "Name": "Language",
            "Value": "English",
            "ProficiencyLevel": 1,
            "ComparisonOperator": "NumberGreaterOrEqualTo"
          }
        }
      }
    ]
  }
}
};
```

次の Lambda の例では、`OrExpression` を使用してルーティング条件を返しています。

```
export const handler = async(event) => {
  return {
   "MyRoutingCriteria": {
    "Steps": [
      {
        "Expression": {
          "OrExpression": [
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis Firehose",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            },
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            }
          ]
        },
        "Expiry": {
          "DurationInSeconds": 30
        }
      }
    ]
  }
}
};
```

次の Lambda の例では、`NOTAttributeCondidtion` と熟練度レベルの範囲を使用してルーティング条件を返します。

```
export const handler = async(event) => {
  const response = {
    "MyRoutingCriteria": {
        "Steps": [
            {
                "Expression": {
                    "NotAttributeCondition": {
                        "Name" : "Language",
                        "Value" : "English",
                        "ComparisonOperator": "Range",
                        "Range" : {
                            "MinProficiencyLevel": 4.0,
                            "MaxProficiencyLevel": 5.0
                        }
                    }
                },
                "Expiry" : {
                    "DurationInSeconds": 30
                }
            }
        ]
    }
}    
    return response;
};
```

## ルーティングステップの各ステータスと必要である理由
<a name="set-routing-criteria-why-status-routing-step"></a>

1.  **非アクティブ:** ルーティング条件が有効になると、最初のステップは直ちに非アクティブとなります。ルーティングエンジンは、有効期限タイマーに従って条件を一度に 1 ステップずつ実行します。

   1.  前のステップが期限切れになるまで、すべてのステップは*非アクティブ*として開始されます。

1.  **アクティブ:** 一致に対してステップがアクティブに実行されている場合、ステータスは [アクティブ] に設定されます。

1.  **期限切れ:** Amazon Connect がステップの実行中にエージェントを検出せず、タイマーの期限が切れると、ルーティングエンジンは次のステップに進みます。前のステップは*期限切れ*とみなされます。

1.  **参加しました:** 特定のステップでエージェントがコンタクトと一致すると、ステップのステータスは *[参加しました]* に設定されます。

1.  **中断:** コンタクトが長時間待機している場合、またはオペレーションリーダーがフローを中断してルーティング条件を変更することを決定する可能性がある場合です。これは、例えば、タスクが 24 時間待機していて、マネージャーが条件を変更する場合など、特定のステップがアクティブな場合です。この場合、ステップのステータスは*中断*に設定されます。

1.  **非アクティブ化:** 顧客が電話を切ったり、接続が切断されたりすると、ルーティングは停止します。

## ルーティング条件を使用して特定の優先エージェントをターゲットにする
<a name="set-routing-criteria-specific-preferred-agent"></a>

 ルーティング条件を使用して、事前定義された属性ではなくユーザー ID に基づいて、キュー内のコンタクトを 1 人の特定の優先エージェントまたは優先エージェントのセットに制限することもできます。

例えば、特定の顧客が最近コンタクトセンターに同じトピックについて問い合わせたことを確認した場合は、問題に最後に対応した同じエージェントに、この顧客をルーティングすることができます。これを行うには、ルーティングステップの有効期限が切れるまでの一定期間、その特定のエージェントをターゲットにするようにルーティングステップを設定することができます。

この機能の仕組みに関するよくある質問は、以下のとおりです。

 **この機能を Customer Profiles の前回のエージェント識別子と組み合わせて使用して、問題に最後に対応したエージェントに顧客をルーティングすることはできますか?**

Amazon Connect Customer Profiles には、顧客が最後に接続したエージェントを識別する最後のエージェント識別子属性など、コンタクトレコードに基づいた 7 つの事前定義済みのデフォルト属性が用意されています。このデータを使用して、特定の顧客からの新しいコンタクトを、以前コンタクトに対応した同じエージェントにルーティングできます。これを行うには、まず Customer Profiles フローブロックを使用して、`Phone = $.CustomerEndpoint.Address` などの少なくとも 1 つの検索識別子を使用して顧客プロファイルを取得します。詳細については、「[プロパティ: プロファイルを取得](customer-profiles-block.md#customer-profiles-block-properties-get-profile)」を参照してください。

次に、**[ルーティング条件の設定]** ブロックの **[手動で設定]** オプションを使用して、特定のユーザー ID をハードコーディングする代わりに、各コンタクトを [`$.Customer.CalculatedAttributes._last_agent_id`] (JSONPath リファレンス) にルーティングするように指定し、最後のエージェントに各コンタクトをルーティングする期間を制限する有効期限タイマーを設定できます。JSONPath 参照の詳細については、「[Amazon Connect で使用可能なコンタクト属性とその JSONPath 参照のリスト](connect-attrib-list.md)」を参照してください。Amazon Connect Customer Profiles で利用可能なデフォルト属性の詳細については、「[Amazon Connect Customer Profiles のデフォルトの計算属性](customerprofiles-default-calculated-attributes.md)」を参照してください。

 **優先エージェントが対応可能ではない場合、どうなりますか?**

 特定の優先エージェントをターゲットにするルーティングステップが設定されている場合、ルーティングステップの有効期限が切れるまで、コンタクトはそのエージェントに制限されます。これは、以下とは関係ありません。

1.  エージェントがオンラインかどうか

1.  エージェントはオンラインだが、他のコンタクトに対応中で、現在追加のコンタクトをルーティングできない 

1.  エージェントはオンラインだが、カスタムの非稼働ステータスにある  

1.  エージェントはインスタンスから削除されている (userID は引き続き有効とみなされる）  

 例えば、特定のコンタクトをターゲットエージェントである Jane Doe に制限し、有効期限は 30 秒に設定されていて、Jane Doe が現在オフラインであるとします。その場合でも、コンタクトは 30 秒間 Jane Doe に制限され、その後、ルーティングステップの期限が切れると、キュー内の別の対応可能なエージェントにコンタクトをルーティングできます。  

 **1 つの優先エージェントステップ内でターゲットにできるエージェントの最大数を教えてください。**

 最大 10 人のエージェントをターゲットにできます。  

 **優先エージェントに基づくルーティングステップと、事前定義された属性に基づくルーティングステップの両方を含むルーティング条件を作成できますか?**

 はい。例えば、ステップ 1 で、特定の有効期限を持つカスタムのマッチング学習モデルによって最適なエージェントとして予測されたエージェントに基づいて、ユーザー ID で特定の優先エージェントにコンタクトをターゲットにし、ステップ 2 で、スペイン語の最低習熟度を要件とするなど、事前定義された属性に基づいてコンタクトをターゲットにする、2 ステップのルーティング条件を作成できます。

## シナリオ
<a name="set-routing-criteria-scenarios"></a>

 このブロックを使用するシナリオについては、次のトピックを参照してください。
+  [Amazon Connect で問い合わせ属性を参照する方法](how-to-reference-attributes.md) 