

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS End User Messaging Social의 메시지 및 이벤트 대상
<a name="managing-event-destinations"></a>

이벤트 대상은 WhatsApp 이벤트가 전송되는 Amazon SNS 주제 또는 Amazon Connect 인스턴스입니다. 이벤트 게시를 켜면 모든 전송 및 수신 이벤트가 메시지 및 이벤트 대상으로 전송됩니다. 이벤트를 사용하여 아웃바운드 메시지와 들어오는 고객 커뮤니케이션의 상태를 모니터링, 추적, 분석할 수 있습니다.

각 WhatsApp Business Account(WABA)에는 하나의 이벤트 대상이 있을 수 있습니다. WABA와 연결된 모든 리소스의 모든 이벤트는 해당 이벤트 대상에 로깅됩니다. 예를 들어 세 개의 전화번호가 연결된 WABA가 있을 수 있으며 해당 전화번호의 모든 이벤트는 하나의 이벤트 대상에 기록됩니다.

**Topics**
+ [AWS End User Messaging Social에 메시지 및 이벤트 대상 추가](managing-event-destinations-add.md)
+ [AWS End User Messaging Social의 메시지 및 이벤트 형식](managing-event-destination-dlrs.md)
+ [WhatsApp 메시지 상태](managing-event-destinations-status.md)

# AWS End User Messaging Social에 메시지 및 이벤트 대상 추가
<a name="managing-event-destinations-add"></a>

메시지 및 이벤트 게시를 켜면 WhatsApp Business Account(WABA)에서 생성된 모든 이벤트가 Amazon SNS 주제로 전송됩니다. 여기에는 WABA와 연결된 각 전화번호에 대한 이벤트가 포함됩니다. WABA에는 연결된 Amazon SNS 주제가 하나 있을 수 있습니다.

## 사전 조건
<a name="managing-event-destinations-add_prerequisite"></a>

시작하기 전에 Amazon SNS 주제 또는 Amazon Connect 인스턴스를 메시지 및 이벤트 대상으로 사용하려면 다음 사전 조건을 충족해야 합니다.

**Amazon SNS 주제**
+ Amazon SNS 주제가 [생성](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)되고 [권한이](#managing-event-destinations-sns-policies) 추가되었습니다.
**참고**  
Amazon SNS FIFO 주제는 지원되지 않습니다.
+ **(선택 사항)** AWS KMS 키를 사용하여 암호화된 Amazon SNS 주제를 사용하려면 [기존 키 정책에](#managing-event-destinations-topic-policies) AWS End User Messaging Social 권한을 부여해야 합니다.

**Amazon Connect 인스턴스**
+ Amazon Connect 인스턴스가 [생성](https://docs.aws.amazon.com/connect/latest/adminguide/tutorial1-set-up-your-instance.html)되고 [권한이](#managing-event-destinations-amazon-connect-policies) 추가되었습니다.

## 메시지 및 이벤트 대상 추가
<a name="managing-event-destinations-add_steps"></a>

1. [https://console.aws.amazon.com/social-messaging/](https://console.aws.amazon.com/social-messaging/) AWS End User Messaging 소셜 콘솔을 엽니다.

1. **비즈니스 계정을** 선택한 다음 WABA를 선택합니다.

1. **이벤트 대상** 탭에서 **대상 편집**을 선택합니다.

1. 이벤트 대상을 켜려면 **활성화**를 선택합니다.

1. **대상 유형**에서 Amazon SNS 또는 Amazon Connect를 선택합니다.

   1. Amazon SNS 대상으로 이벤트를 보내려면 주제 ARN에 기존 **주제 ARN**을 입력합니다. IAM 정책에 대한 예시는 [Amazon SNS 주제에 대한 IAM 정책](#managing-event-destinations-sns-policies) 섹션을 참조하세요.

   1. Amazon Connect의 경우

      1. **인스턴스 연결**의 경우 드롭다운에서 인스턴스를 선택합니다.

      1. **양방향 채널 역할**에서 다음 중 하나를 선택합니다.

         1. **기존 IAM 역할 선택** - 기존 IAM 역할 드롭다운에서 **기존 IAM** 정책을 선택합니다. IAM 정책에 대한 예시는 [Amazon Connect에 대한 IAM 정책](#managing-event-destinations-amazon-connect-policies) 섹션을 참조하세요.

         1. **IAM 역할 ARN 입력** - 기존 IAM **역할 Arn 사용에 IAM** 정책의 ARN을 입력합니다. IAM 정책에 대한 예시는 [Amazon Connect에 대한 IAM 정책](#managing-event-destinations-amazon-connect-policies) 섹션을 참조하세요.

1. **변경 사항 저장**을 선택합니다.

## 암호화된 Amazon SNS 주제 정책
<a name="managing-event-destinations-topic-policies"></a>

보안 수준을 높이기 위해 AWS KMS 키를 사용하여 암호화된 Amazon SNS 주제를 사용할 수 있습니다. 애플리케이션에서 비공개 또는 민감한 데이터를 처리하는 경우 이 추가된 보안이 유용할 수 있습니다. AWS KMS 키를 사용한 Amazon SNS 주제 암호화에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [AWS 서비스의 이벤트 소스와 암호화된 주제 간의 호환성 활성화](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)를 참조하세요.

**참고**  
Amazon SNS FIFO 주제는 지원되지 않습니다.

예제 문은 선택적이지만 권장되는 `SourceAccount` 및 `SourceArn` 조건을 사용하여 혼동된 대리자 문제를 방지하고 AWS End User Messaging 소셜 소유자 계정만 액세스할 수 있습니다. 혼동된 대리자 문제에 관한 자세한 내용은 *[IAM 사용 설명서](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)*의 [혼동된 대리자 문제](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html)를 참조하세요.

사용하는 키는 *대칭*이어야 합니다. 암호화된 Amazon SNS 주제는 비대칭 AWS KMS 키를 지원하지 않습니다.

 AWS 최종 사용자 메시징 소셜이 키를 사용할 수 있도록 키 정책을 수정해야 합니다. *AWS Key Management Service 개발자 안내서*의 [키 정책 변경](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)의 지침에 따라 기존 키 정책에 다음 권한을 추가합니다.

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "social-messaging.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{ACCOUNT_ID}"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:{PARTITION}:social-messaging:{REGION}:{ACCOUNT_ID}:*"
        }
     }
}
```

## Amazon SNS 주제에 대한 IAM 정책
<a name="managing-event-destinations-sns-policies"></a>

기존 IAM 역할을 사용하거나 새 역할을 생성하려면 AWS End User Messaging Social에서 수임할 수 있도록 해당 역할에 다음 정책을 연결합니다. 역할의 신뢰 관계를 수정하는 방법에 대한 자세한 내용은 [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)의 [역할 수정](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html)을 참조하세요.

다음은 IAM 역할에 대한 **권한 정책**입니다. 권한 정책은가 Amazon SNS 주제에 게시할 수 있도록 허용합니다.

다음 IAM 권한 정책에서 다음과 같이 변경합니다.
+ *\$1PARTITION\$1*을 AWS End User Messaging Social을 사용하는 AWS 파티션으로 바꿉니다.
+ *\$1REGION\$1*을 AWS End User Messaging Social AWS 리전 을 사용하는 로 바꿉니다.
+ *\$1ACCOUNT\$1*를의 고유 ID로 바꿉니다 AWS 계정.
+ *\$1TOPIC\$1NAME\$1*을 메시지를 수신할 Amazon SNS 주제로 바꿉니다.

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": [
          "social-messaging.amazonaws.com"
        ]
       },
    "Action": "sns:Publish",
    "Resource": "arn:{PARTITION}:sns:{REGION}:{ACCOUNT}:{TOPIC_NAME}"
}
```

## Amazon Connect에 대한 IAM 정책
<a name="managing-event-destinations-amazon-connect-policies"></a>

 AWS End User Messaging Social에서 기존 IAM 역할을 사용하도록 하거나 새 역할을 생성하는 경우 AWS End User Messaging Social에서 수임할 수 있도록 해당 역할에 다음 정책을 연결합니다. 역할의 신뢰 관계를 수정하는 방법에 대한 자세한 내용은 [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)의 [역할 수정](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html)을 참조하세요. 이 역할은 이벤트를 보내고 AWS End User Messaging Social에서 Amazon Connect로 전화번호를 가져오는 데 사용됩니다.

새 IAM 정책을 생성하려면 다음을 수행합니다.

1. IAM 사용 설명서의 [JSON 편집기를 사용하여 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)의 지침에 따라 새로운 **권한 정책**을 생성합니다.

   1. 5단계에서는 Amazon Connect에 게시할 수 있도록 IAM 역할에 대한 **권한 정책을** 사용합니다.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "AllowOperationsForEventDelivery",
                 "Effect": "Allow",
                 "Action": [
                     "connect:SendIntegrationEvent"
                 ],
                 "Resource": "*"
             },
             {
                 "Sid": "AllowOperationsForPhoneNumberImport",
                 "Effect": "Allow",
                 "Action": [
                     "connect:ImportPhoneNumber",
                     "social-messaging:GetLinkedWhatsAppBusinessAccountPhoneNumber",
                     "social-messaging:TagResource"
                 ],
                 "Resource": "*"
             }
         ]
     }
     ```

------

1. IAM 사용 설명서의 [사용자 지정 신뢰 정책을 사용하여 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)의 지침에 따라 새로운 **신뢰 정책**을 생성합니다.

   1. 4단계에서는 IAM 역할에 대한 **신뢰 정책을** 사용합니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "social-messaging.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 10단계에서는 이전 단계에서 생성한 **권한 정책을** 추가합니다.

## 다음 단계
<a name="managing-event-destinations_next_steps"></a>

Amazon SNS 주제를 설정한 후에는 엔드포인트에서 주제를 구독해야 합니다. 엔드포인트는 연결된 주제에 게시된 메시지를 수신하기 시작합니다. 주제 구독에 대한 자세한 내용은 [ Amazon SNS 개발자 안내서의 Amazon SNS 주제 구독](https://docs.aws.amazon.com//sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)을 참조하세요. *Amazon SNS *

# AWS End User Messaging Social의 메시지 및 이벤트 형식
<a name="managing-event-destination-dlrs"></a>

이벤트에 대한 JSON 객체에는 AWS 이벤트 헤더와 WhatsApp JSON 페이로드가 포함됩니다. JSON WhatsApp 알림 페이로드 및 값 목록은 WhatsApp Business Platform Cloud API 참조의 [Webhooks 알림 페이로드](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) 참조 및 [메시지 상태를](https://developers.facebook.com/docs/whatsapp/conversation-types#message-status) 참조하세요. *WhatsApp *

## AWS End User Messaging 소셜 이벤트 헤더
<a name="managing-event-destination-dlrs_body"></a>

이벤트에 대한 JSON 객체에는 AWS 이벤트 헤더와 WhatsApp JSON이 포함됩니다. 헤더에는 WhatsApp Business Account(WABA)의 AWS 식별자와 ARNs 및 전화번호가 포함되어 있습니다.

```
{
  "context": {
    "MetaWabaIds": [
      {
        "wabaId": "1234567890abcde",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:waba/fb2594b8a7974770b128a409e2example"
      }
    ],
    "MetaPhoneNumberIds": [
      {
        "metaPhoneNumberId": "abcde1234567890",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:phone-number-id/976c72a700aac43eaf573ae050example"
      }
    ]
  },
  "whatsAppWebhookEntry": "{\"...JSON STRING....",
  "aws_account_id": "123456789012",
  "message_timestamp": "2025-01-08T23:30:43.271279391Z",
  "messageId": "6d69f07a-c317-4278-9d5c-6a84078419ec"
}
//Decoding the contents of whatsAppWebhookEntry
{
//WhatsApp notification payload
}
```

앞의 예제 이벤트에서:
+ *1234567890abcde*는 Meta의 WABA ID입니다.
+ *abcde1234567890*는 Meta의 전화번호 ID입니다.
+ *fb2594b8a7974770b128a409e2example*은 WhatsApp 비즈니스 계정(WABA)의 ID입니다.
+ *976c72a700aac43eaf573ae050example*은 전화번호의 ID입니다.

## 메시지 수신을 위한 WhatsApp JSON 예제
<a name="managing-event-destination-dlrs-example-receive-text"></a>

다음은 WhatsApp에서 수신되는 메시지의 이벤트 레코드를 보여줍니다. 의 WhatsApp에서 수신한 JSON`whatsAppWebhookEntry`은 JSON 문자열로 수신되며 JSON으로 변환할 수 있습니다. 필드 목록과 그 의미는 WhatsApp Business Platform Cloud API 참조[의 Webhooks 알림 페이로드](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) 참조를 참조하세요. *WhatsApp *

```
{
  "context": {
    "MetaWabaIds": [
      {
        "wabaId": "1234567890abcde",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:waba/fb2594b8a7974770b128a409e2example"
      }
    ],
    "MetaPhoneNumberIds": [
      {
        "metaPhoneNumberId": "abcde1234567890",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:phone-number-id/976c72a700aac43eaf573ae050example"
      }
    ]
  },
  "whatsAppWebhookEntry": "{\"...JSON STRING....",
  "aws_account_id": "123456789012",
  "message_timestamp": "2025-01-08T23:30:43.271279391Z",
  "messageId": "6d69f07a-c317-4278-9d5c-6a84078419ec"
}
```

[jq](https://jqlang.org/)와 같은 도구를 사용하여 JSON 문자열을 JSON으로 변환할 수 있습니다. 다음은 JSON 형식의 입니다`whatsAppWebhookEntry`.

```
{
  "id": "503131219501234",
  "changes": [
    {
      "value": {
        "messaging_product": "whatsapp",
        "metadata": {
          "display_phone_number": "14255550123",
          "phone_number_id": "46271669example"
        },
        "statuses": [
          {
            "id": "wamid.HBgLMTkxNzM5OTI3MzkVAgARGBJBMTM4NDdGRENEREI5Rexample",
            "status": "sent",
            "timestamp": "1736379042",
            "recipient_id": "01234567890",
            "conversation": {
              "id": "62374592e84cb58e52bdaed31example",
              "expiration_timestamp": "1736461020",
              "origin": {
                "type": "utility"
              }
            },
            "pricing": {
              "billable": true,
              "pricing_model": "CBP",
              "category": "utility"
            }
          }
        ]
      },
      "field": "messages"
    }
  ]
}
```

## 미디어 메시지 수신을 위한 WhatsApp JSON 예제
<a name="managing-event-destination-dlrs-example-receive-media"></a>

다음은 수신 미디어 메시지의 이벤트 레코드를 보여줍니다. 미디어 파일을 검색하려면 GetWhatsAppMessageMedia API 명령을 사용합니다. 필드 목록과 그 의미는 [Webhooks 알림 페이로드](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) 참조를 참조하세요.

```
{
//AWS End User Messaging Social header
}
//Decoding the contents of whatsAppWebhookEntry
{
  "id": "365731266123456",
  "changes": [
    {
      "value": {
        "messaging_product": "whatsapp",
        "metadata": {
          "display_phone_number": "12065550100",
          "phone_number_id": "321010217760100"
        },
        "contacts": [
          {
            "profile": {
              "name": "Diego"
            },
            "wa_id": "12065550102"
          }
        ],
        "messages": [
          {
            "from": "14255550150",
            "id": "wamid.HBgLMTQyNTY5ODgzMDIVAgASGCBDNzBDRjM5MDU2ODEwMDkwREY4ODBDRDE0RjVGRkexample",
            "timestamp": "1723506230",
            "type": "image",
            "image": {
              "mime_type": "image/jpeg",
              "sha256": "BTD0xlqSZ7l02o+/upusiNStlEZhA/urkvKf143Uqjk=",
              "id": "530339869524171"
            }
          }
        ]
      },
      "field": "messages"
    }
  ]
}
```

# WhatsApp 메시지 상태
<a name="managing-event-destinations-status"></a>

메시지를 보내면 메시지에 대한 상태 업데이트가 수신됩니다. 이러한 알림을 받으려면 이벤트 로깅을 활성화해야 합니다. 섹션을 참조하세요[AWS End User Messaging Social의 메시지 및 이벤트 대상메시지 및 이벤트 대상](managing-event-destinations.md).

## 메시지 상태
<a name="managing-event-destinations-status_body"></a>

다음 표에는 가능한 메시지 상태가 나와 있습니다.


****  

| 상태 이름 | 설명 | 
| --- | --- | 
| 수락됨 | WhatsApp에서 처리를 위해 메시지를 수락했습니다. | 
| 삭제됨 | 고객이 메시지를 삭제했으며 서버에 다운로드한 경우에도 메시지를 삭제해야 합니다. | 
| 전송됨 | 메시지가 고객에게 성공적으로 전달되었습니다. | 
| failed | 메시지가 전송되지 않았습니다. | 
| 메시지 재시도가 소진되어 메시지가 삭제되었습니다. | 180분 재시도 기간 내에 WhatsApp에 메시지를 전달할 수 없어 삭제되었습니다. | 
| 읽기 | 고객이 메시지를 읽었습니다. 이 상태는 고객이 읽기 영수증을 켠 경우에만 전송됩니다. | 
| 전송됨 | 메시지가 전송되었지만 아직 전송 중입니다. | 
| warning | 메시지에 사용할 수 없거나 존재하지 않는 항목이 포함되어 있습니다. | 

## 추가 리소스
<a name="managing-event-destinations-status_additional_resources"></a>

자세한 내용은 WhatsApp Business Platform Cloud API 참조의 [메시지 상태를](https://developers.facebook.com/docs/whatsapp/conversation-types#message-status) 참조하세요. *WhatsApp *