

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# `AWSSupport-AssociatePhoneNumbersToConnectContactFlows`
<a name="automation-associate-phone-numbers-to-connect-contact-flows"></a>

 **Description** 

 `AWSSupport-AssociatePhoneNumbersToConnectContactFlows` 可協助您將電話號碼與 Amazon Connect 執行個體中的聯絡流程建立關聯。透過在輸入逗號分隔值 (CSV) 檔案中提供電話號碼和聯絡流程的映射， Runbook 會在 14.5 分鐘內將盡可能多的電話號碼與聯絡流程建立關聯。Runbook 會產生所有電話號碼和聯絡流程對的 CSV 檔案，其無法在時間限制內建立關聯，以便您在下次執行時輸入。

 **如何運作？** 

 Runbook `AWSSupport-AssociatePhoneNumbersToConnectContactFlows`可協助您使用存放在 Amazon Connect Simple Storage Service (Amazon S3) 儲存貯體中的映射資料的 CSV 檔案，將電話號碼與 Amazon Connect 執行個體中的聯絡流程建立關聯。輸入 CSV 檔案應符合下列格式，其`PhoneNumber`值為 [E.164 格式。](https://www.itu.int/rec/T-REC-E.164/en)

**輸入 CSV 檔案的範例**

```
PhoneNumber,ContactFlowName
+1800555xxxx,ContactFlowA
+1800555yyyy,ContactFlowB
+1800555zzzz,ContactFlowC
```

自動化 Runbook 也會在 `DestinationFileBucket`和 中指定的目的地位置建立下列檔案`DestinationFilePath`。
+ **`automation:EXECUTION_ID/ResourceIdList.csv`**：暫時檔案，其中包含 `AssociatePhoneNumberContactFlow` API 所需的 `PhoneNumberId`和 `ContactFlowId`對。
+ **`automation:EXECUTION_ID/ErrorResourceList.csv`**：檔案，其中包含因錯誤而無法處理的電話號碼和聯絡流程對，例如 `ResourceNotFoundException` 的格式`PhoneNumber,ContactFlowName,ErrorMessage`。
+ **`automation:EXECUTION_ID/NonProcessedResourceList.csv`**：包含未處理的電話號碼和聯絡流程對的檔案。Runbook 會嘗試在 14.5 分鐘內處理盡可能多的電話號碼和聯絡流程 (15 分鐘 AWS Lambda 的函數逾時 - 30 秒的緩衝）。如果因為時間限制而無法處理某些電話號碼/聯絡流程，則 Runbook 會將它們包含在 CSV 檔案中，以做為下次執行 Runbook 的輸入。

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。

```
        {
            "Statement": [
                {
                    "Action": [
                        "s3:GetBucketPublicAccessBlock",
                        "s3:GetBucketPolicyStatus",
                        "s3:GetBucketAcl",
                        "s3:GetObject",
                        "s3:GetObjectAttributes",
                        "s3:PutObject",
                        "s3:PutObjectAcl"
                    ],
                    "Resource": [
                    "arn:aws:s3:::YOUR-BUCKET/*",
                    "arn:aws:s3:::YOUR-BUCKET"
                    ],
                    "Effect": "Allow"
                },
                {
                    "Action": [
                        "cloudformation:CreateStack",
                        "cloudformation:DescribeStacks",
                        "cloudformation:DeleteStack",
                        "iam:CreateRole",
                        "iam:DeleteRole",
                        "iam:DeleteRolePolicy",
                        "iam:GetRole",
                        "iam:PutRolePolicy",
                        "lambda:CreateFunction",
                        "lambda:DeleteFunction",
                        "lambda:GetFunction",
                        "lambda:InvokeFunction",
                        "lambda:TagResource",
                        "connect:AssociatePhoneNumberContactFlow",
                        "logs:CreateLogGroup",
                        "logs:TagResource",
                        "logs:PutRetentionPolicy",
                        "logs:DeleteLogGroup",
                        "s3:GetAccountPublicAccessBlock"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Action": [
                        "connect:DescribeInstance",
                        "connect:ListPhoneNumbers",
                        "connect:ListContactFlows",
                        "ds:DescribeDirectories"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Condition": {
                        "StringLikeIfExists": {
                            "iam:PassedToService": [
                                "ssm.amazonaws.com",
                                "lambda.amazonaws.com"
                            ]
                        }
                    },
                    "Action": [
                        "iam:PassRole"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
```

如果提供 `LambdaRoleArn` 參數，角色需要下列動作，才能成功使用 Runbook。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Action": [
				"logs:CreateLogGroup"
			],
			"Resource": "arn:aws:logs:us-east-1:111122223333:*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"logs:CreateLogStream",
				"logs:PutLogEvents"
			],
			"Resource": "arn:aws:logs:us-east-1:111122223333:*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"connect:AssociatePhoneNumberContactFlow"
			],
			"Resource": "*",
			"Effect": "Allow"
		},
		{
			"Action": [
				"s3:PutObject",
				"s3:GetObject"
			],
			"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/DESTINATION_FILE_PATH*",
			"Effect": "Allow"
		}
	]
}
```

------

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description)中導覽至 。

1. 選擇 Execute automation (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）**

     (IAM) 角色的 Amazon Resource Name AWS AWS Identity and Access Management (ARN)，允許 Systems Manager Automation 代表您執行動作。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
   + **ConnectInstanceId （必要）**

     Amazon Connect 執行個體的 ID。
   + **SourceFileBucket （必要）**

     存放 CSV 檔案的 Amazon S3 儲存貯體，其中包含電話號碼和聯絡流程對。
   + **SourceFilePath （必要）**

     CSV 檔案的 Amazon S3 物件金鑰，其中包含電話號碼和聯絡流程對。例如 `path/to/input.csv`。
   + **DestinationFileBucket （必要）**

     自動化將放置中繼檔案和結果報告的 Amazon S3 儲存貯體。
   + **DestinationFilePath （選用）**

     存放`DestinationFileBucket`中繼檔案和結果報告的 Amazon S3 物件路徑。例如，如果您指定 `path/to/files/`，檔案會存放在 下`s3://[DestinationFileBucket]/path/to/files/[automation:EXECUTION_ID]/`。
   + **S3BucketOwnerAccount （選用）**

     擁有您要上傳聯絡流程日誌之 Amazon S3 儲存貯體的 AWS 帳號。如果您未指定此參數，則 Runbook 會使用自動化執行所在使用者或角色 AWS 的帳戶 ID。
   + **S3BucketOwnerRoleArn （選用）**

     IAM 角色的 ARN，具有取得 Amazon S3 儲存貯體和帳戶區塊公開存取設定、儲存貯體加密組態、儲存貯體 ACLs、儲存貯體政策狀態，以及將物件上傳至儲存貯體的許可。如果未指定此參數，則 Runbook 會使用 `AutomationAssumeRole`（如果指定） 或啟動此 Runbook 的使用者 （如果`AutomationAssumeRole`未指定）。請參閱 Runbook 說明中的必要許可區段。
   + **LambdaRoleArn （選用）**

     允許 AWS Lambda 函數存取所需 AWS 服務和資源的 IAM 角色 ARN。如果未指定角色，此自動化會在您的帳戶中為 Lambda 建立一個 IAM 角色。

1. 選取執行。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **CheckConnectInstanceExistance**

     檢查 中提供的 Amazon Connect 執行個體是否存在`ConnectInstanceId`。
   + **CheckS3BucketPublicStatus**

     檢查 中指定的 Amazon S3 儲存貯體是否`SourceFileBucket``DestinationFileBucket`允許匿名或公有讀取或寫入存取許可。
   + **CheckSourceFileExistenceAndSize**

     檢查 中指定的來源 CSV 檔案`SourceFilePath`是否存在，以及檔案大小是否超過 25 MiB 的限制。
   + **GenerateResourceIdMap**

     下載 中指定的來源 CSV 檔案`SourceFilePath`，並識別每個資源`ContactFlowId`的 `PhoneNumberId`和 。完成後，它會將包含 `PhoneNumber`、`ContactFlowName`、 `PhoneNumberId`和 的 CSV 檔案上傳至 中指定的目的地 Amazon S3 `ContactFlowId`儲存貯體`DestinationFileBucket`。如果`PhoneNumberId`無法識別特定號碼的 ，則 CSV 檔案中的 將是空的。
   + **AssociatePhoneNumbersToContactFlows**

     使用 AWS CloudFormation 堆疊在您的 帳戶中建立 AWS Lambda 函數。 AWS Lambda 函數會將每個號碼與 `SourceFileBucket`和 中指定的來源 CSV 檔案中列出的聯絡流程建立關聯，`SourceFilePath`堆疊會 AWS CloudFormation 叫用 函數。 AWS Lambda 函數會在逾時之前 (15 分鐘），盡可能將電話號碼映射到聯絡流程。因錯誤而無法處理的電話號碼和聯絡流程清單會上傳至 `[automation:EXECUTION_ID]/ErrorResourceList.csv`。因為超過單一執行中可處理的最大電話號碼數量而無法處理的電話號碼，會在 中上傳`[automation:EXECUTION_ID]/NonProcessedResourceList.csv`。如果此步驟失敗，則會前往`DescribeCloudFormationErrorFromStackEvents`步驟，以顯示堆疊 AWS CloudFormation 事件失敗的原因。
   + **WaitForPhoneNumberContactFlowAssociationCompletion**

     等待建立映射電話號碼至聯絡流程的 AWS Lambda 函數，且 AWS CloudFormation 堆疊完成其調用。
   + **GenerateReport**

     產生報告，其中包含映射到聯絡流程的電話號碼數量、由於錯誤而無法處理的電話號碼數量，以及由於在單一執行中可以處理的最大電話號碼數量而無法處理的電話號碼數量。如果適用`[automation:EXECUTION_ID]/NonProcessedResourceList.csv`，報告也會顯示 `[automation:EXECUTION_ID]/ErrorResourceList.csv`或 的位置 (Amazon S3 URI 和 Amazon S3 主控台 URL)。
   + **`DeleteCloudFormationStack`**

     刪除 AWS CloudFormation 堆疊，包括用於映射的 Lambda 函數。
   + **`DescribeCloudFormationErrorFromStackEvent`**

     描述`AssociatePhoneNumbersToContactFlows`步驟 AWS CloudFormation 堆疊的錯誤。

1. 完成後，請檢閱輸出區段以取得執行的詳細結果：
   + **GenerateReport.OutputPayload**

      電話號碼和聯絡流程關聯的輸出。此報告包含下列資訊：
     + 輸入 CSV 檔案中列出的電話號碼和聯絡流程配對數量
     + 與輸入 CSV 檔案中指定的聯絡流程相關聯的電話號碼數量
     + 由於錯誤而無法與聯絡流程建立關聯的電話號碼數量
     + 由於時間限制，與聯絡流程無關的電話號碼數量
     + CSV 檔案的位置 (Amazon S3 URI 和 Amazon S3 主控台 URL)，其中包含因錯誤而無法關聯的電話號碼和聯絡流程對
     + CSV 檔案的位置 (Amazon S3 URI 和 Amazon S3 主控台 URL)，其中包含因時間限制而未關聯的電話號碼和聯絡流程對
   + **DescribeCloudFormationErrorFromStackEvents.Events**

     如果`AssociatePhoneNumbersToContactFlows`步驟失敗，顯示 AWS CloudFormation 堆疊事件的輸出。

使用少量電話號碼和聯絡流程輸出執行

![\[Report showing 7 phone numbers processed successfully with no errors or time constraints.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/automation-associate-phone-numbers-to-connect-contact-flows_outputs_small.png)


使用大量電話號碼和聯絡流程輸出執行，以及由於錯誤或時間限制而未關聯的電話號碼

![\[Amazon Connect phone number mapping results showing processed and unprocessed contacts.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/automation-associate-phone-numbers-to-connect-contact-flows_outputs_many.png)


 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-AssociatePhoneNumbersToConnectContactFlows/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)