View a markdown version of this page

인바운드 RCS 메시지 수신 - AWS 최종 사용자 메시징 SMS

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

인바운드 RCS 메시지 수신

AWS End User Messaging은 양방향 RCS 메시징을 지원하므로 고객으로부터 문자 메시지를 받을 수 있습니다. 인바운드 RCS 메시지는 SMS 양방향 메시징과 동일한 패턴을 따릅니다. 수신 메시지는 구성한 Amazon SNS 주제로 전송되며 Lambda 함수 또는 다른 SNS 구독자를 사용하여 처리합니다.

중요

인바운드 RCS 메시지를 사용하려면 AWS RCS 에이전트에서 양방향 메시징 SNS 주제를 설정해야 합니다. 양방향 메시징은 에이전트를 생성할 때 기본적으로 비활성화됩니다. 활성화하고 SNS 주제를 구성하면 인바운드 메시지가 해당 주제로 전달됩니다. 고객에게는 모든 인바운드 RCS 메시지에 대해 표준 요금이 부과됩니다.

이 섹션에서는 양방향 RCS 메시징의 작동 방식, AWS RCS 에이전트에 대해 이를 활성화하는 방법, 인바운드 메시지 페이로드 형식, 키워드 관리 방법을 설명합니다. AWS RCS 에이전트 관리에 대한 자세한 내용은 섹션을 참조하세요RCS 에이전트 관리. RCS 메시지 전송에 대한 자세한 내용은 섹션을 참조하세요RCS 메시지 전송.

양방향 RCS 메시징 작동 방식

고객이 AWS RCS 에이전트에 문자 메시지를 보내면 AWS End User Messaging은 메시지를 수신하여 사용자가 지정한 Amazon SNS 주제에 게시합니다. 여기에서 Lambda 함수, Amazon SQS 대기열 또는 HTTP/HTTPS 엔드포인트와 같은 SNS 구독자를 사용하여 메시지를 처리할 수 있습니다.

양방향 RCS 메시징 흐름은 다음과 같이 작동합니다.

  1. 고객이 RCS 지원 디바이스에서 AWS RCS 에이전트로 문자 메시지를 보냅니다.

  2. AWS End User Messaging은 인바운드 메시지를 수신하고 구성된 키워드를 기준으로 평가합니다. 메시지가 키워드와 일치하면 서비스는 구성된 자동 응답(있는 경우)을 전송합니다.

  3. AWS End User Messaging은 AWS RCS 에이전트에서 양방향 메시징을 위해 구성한 Amazon SNS 주제에 메시지 페이로드를 JSON 객체로 게시합니다.

  4. SNS 구독자(예: Lambda 함수)는 메시지 페이로드를 수신하고 애플리케이션 로직에 따라 처리합니다.

AWS End User Messaging의 RCS는 현재 인바운드 문자 메시지를 지원합니다. 고객이 AWS RCS 에이전트에 미디어 메시지(예: 이미지 또는 비디오)를 보내면 메시지가 IGNORED 상태로 로깅됩니다. 애플리케이션이 SNS 주제를 통해 미디어 메시지를 수신하지 않습니다.

양방향 메시징 대상 구성

애플리케이션에서 인바운드 RCS 메시지를 수신하고 처리하려면 양방향 메시징을 활성화하고 AWS RCS 에이전트에서 대상을 구성해야 합니다. 양방향 메시징은 기본적으로 비활성화되어 있습니다. 활성화할 때 AWS End User Messaging이 인바운드 메시지를 전송하는 Amazon SNS 주제를 지정합니다. AWS End User Messaging 콘솔 또는 API를 사용하여 대상을 구성할 수 있습니다.

Console
콘솔을 사용하여 양방향 메시징 대상을 구성하려면
  1. AWS End User Messaging 콘솔을 엽니다.

  2. 탐색 창에서 RCS 에이전트를 선택합니다.

  3. 구성하려는 AWS RCS 에이전트를 선택합니다.

  4. 양방향 메시징 탭을 선택합니다.

  5. 설정 편집을 선택합니다.

  6. 전환 양방향 메시징을 켜도록 설정합니다.

  7. SNS 주제에서 기존 Amazon SNS 주제를 선택하거나 새 주제를 생성합니다. 인바운드 메시지가 게시되는 주제입니다.

  8. 저장을 선택합니다.

AWS CLI

API를 사용하여 양방향 메시징 대상을 구성하려면 다음 파라미터를 사용하여 UpdateRcsAgent API를 호출합니다.

  • two-way-enabled - 양방향 메시징을 활성화true하려면 로 설정합니다.

  • two-way-channel-arn - 인바운드 메시지가 게시되는 Amazon SNS 주제의 ARN입니다.

  • two-way-channel-role - SNS 주제에 메시지를 게시할 수 있는 AWS End User Messaging 권한을 부여하는 IAM 역할의 ARN입니다.

다음 예제에서는 AWS CLI를 사용하여 양방향 메시징 대상을 구성합니다.

aws pinpoint-sms-voice-v2 update-rcs-agent \ --rcs-agent-id rcs-a1b2c3d4 \ --two-way-enabled \ --two-way-channel-arn arn:aws:sns:us-east-1:123456789012:MyRCSInboundTopic \ --two-way-channel-role arn:aws:iam::123456789012:role/SMSVoiceSNSPublishRole

SNS 주제 권한

양방향 RCS 메시징에 대해 구성하는 Amazon SNS 주제는 AWS End User Messaging이 메시지를 게시하도록 허용해야 합니다. 액세스 권한을 부여할 수 있는 두 가지 옵션이 있습니다.

옵션 1: IAM 역할 사용

AWS End User Messaging이 SNS 주제에 메시지를 게시하기 위해 맡을 수 있는 IAM 역할을 생성합니다. 역할에는 신뢰 정책과 권한 정책이 모두 필요합니다.

다음은 IAM 역할에 대한 신뢰 정책입니다. accountId를 해당 AWS 계정의 고유한 ID로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoice", "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

다음은 IAM 역할에 대한 권한 정책입니다. SMSVoiceAllowSNSPublish Sid를 사용하면 Amazon SNS 주제에 게시할 수 있으며 암호화된 Amazon SNS 주제의 경우 SMSVoiceAllowEncryptedSNSTopics Sid는 선택 사항입니다. 다음과 같이 변경합니다.

  • 파티션을 AWS End User Messaging을 AWS 사용하는 파티션으로 바꿉니다.

  • 리전을 AWS End User Messaging AWS 리전 을 사용하는 로 바꿉니다.

  • accountId를 해당 AWS 계정의 고유한 ID로 바꿉니다.

  • snsTopicName을 인바운드 메시지를 수신하는 Amazon SNS 주제의 이름으로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoiceAllowSNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:partition:sns:region:accountId:snsTopicName", "Condition": { "StringEquals": { "aws:ResourceAccount": "accountId" } } }, { "Sid": "SMSVoiceAllowEncryptedSNSTopics", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:partition:sns:region:accountId:snsTopicName", "aws:CalledViaLast": "sns.amazonaws.com" } } } ] }

옵션 2: SNS 주제 정책 사용

또는 AWS End User Messaging이 메시지를 게시할 수 있도록 허용하는 정책 설명을 SNS 주제에 직접 추가합니다. snsTopicArn을 SNS 주제의 ARN으로 바꿉니다.

{ "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sns:Publish", "Resource": "snsTopicArn" }

인바운드 메시지 페이로드 형식

AWS RCS 에이전트가 인바운드 문자 메시지를 받으면 AWS End User Messaging은 구성된 Amazon SNS 주제에 JSON 페이로드를 게시합니다. RCS 인바운드 메시지 페이로드는 SMS 양방향 메시징과 동일한 형식을 사용합니다.

{ "originationNumber": "+14255550182", "destinationNumber": "+12125550101", "messageKeyword": "JOIN", "messageBody": "EXAMPLE", "inboundMessageId": "cae173d2-66b9-564c-8309-21f858e9fb84", "previousPublishedMessageId": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" }

인바운드 메시지 페이로드에는 다음 필드가 포함됩니다.

인바운드 RCS 메시지 페이로드 필드
필드 설명

originationNumber

인바운드 메시지를 보낸 전화번호(고객의 전화번호).

destinationNumber

메시지를 수신한 AWS RCS 에이전트의 식별자입니다.

messageKeyword

인바운드 메시지와 일치하는 등록된 키워드가 있는 경우 키워드는 메시지 본문의 시작 부분에 대해 평가됩니다.

messageBody

인바운드 메시지의 텍스트 콘텐츠입니다.

inboundMessageId

인바운드 메시지의 고유 식별자입니다.

previousPublishedMessageId

인바운드 메시지가 이전 아웃바운드 메시지에 대한 응답인 경우 고객이 응답하는 아웃바운드 메시지의 고유 식별자입니다.

지원되는 메시지 유형

AWS End User Messaging의 RCS는 현재 인바운드 문자 메시지 수신을 지원합니다. 고객이 AWS RCS 에이전트에 문자 메시지를 보내면 해당 메시지가 구성된 Amazon SNS 주제로 전송되어 처리됩니다.

고객이 AWS RCS 에이전트에 미디어 메시지(예: 이미지, 비디오 또는 파일)를 보내는 경우 AWS End User Messaging은 메시지를 IGNORED 상태로 기록합니다. 미디어 메시지는 SNS 주제로 전송되지 않으며 애플리케이션에서 처리되지 않습니다. 발신자에게 오류가 반환되지 않습니다.

RCS에 대한 키워드 관리

키워드를 사용하면 고객이 AWS RCS 에이전트에 특정 단어나 문구를 보낼 때 자동 응답을 구성할 수 있습니다. 인바운드 메시지가 구성된 키워드와 일치하면 AWS End User Messaging은 연결된 자동 응답 메시지를 고객에게 다시 보냅니다.

RCS의 경우 키워드는 AWS RCS 에이전트에서 구성되며 연결된 모든 RCS for Business IDs(테스트 에이전트 및 국가 시작 에이전트)에 적용됩니다. AWS RCS 에이전트당 최대 30개의 키워드를 구성할 수 있습니다.

AWS RCS 에이전트의 키워드를 관리하려면 AWS End User Messaging 콘솔 또는 API를 사용합니다. 키워드 관리에 대한 일반적인 내용은 섹션을 참조하세요AWS 최종 사용자 메시징 SMS의 키워드.

참고

AWS RCS 에이전트에 구성된 키워드는 모든 관련 등록에 적용됩니다. 테스트 에이전트와 국가 시작 에이전트에 대해 서로 다른 키워드를 독립적으로 설정할 수 없습니다.

Lambda를 사용하여 인바운드 메시지 처리

인바운드 RCS 메시지를 처리하는 일반적인 패턴은 양방향 메시징을 위해 구성된 Amazon SNS 주제에 Lambda 함수를 구독하는 것입니다. Lambda 함수는 인바운드 메시지 페이로드를 수신하고 고객 문의 응답, 명령 처리 또는 다른 시스템으로 메시지 라우팅과 같은 애플리케이션 로직을 구현할 수 있습니다.

다음 Python 예제는 인바운드 RCS 메시지를 처리하고 SendTextMessage API를 사용하여 응답을 전송하는 Lambda 함수를 보여줍니다.

import json import boto3 sms_client = boto3.client('pinpoint-sms-voice-v2') def lambda_handler(event, context): # Parse the SNS message for record in event['Records']: sns_message = json.loads(record['Sns']['Message']) origination_number = sns_message['originationNumber'] message_body = sns_message['messageBody'] keyword = sns_message.get('messageKeyword', '') print(f"Received message from {origination_number}: {message_body}") # Process the message and determine a response if keyword.upper() == 'HELP': response_text = 'Available commands: HELP, STATUS, STOP' elif keyword.upper() == 'STATUS': response_text = 'Your account is active. No action needed.' else: response_text = ( f'Thanks for your message. ' f'Reply HELP for available commands.' ) # Send a response back to the customer try: response = sms_client.send_text_message( DestinationPhoneNumber=origination_number, OriginationIdentity='pool-a1b2c3d4e5f6g7h8i', MessageBody=response_text, MessageType='TRANSACTIONAL' ) print(f"Response sent. Message ID: {response['MessageId']}") except Exception as e: print(f"Failed to send response: {str(e)}") return {'statusCode': 200}

이 예제에서 Lambda 함수는 다음과 같습니다.

  1. SNS 이벤트의 인바운드 메시지 페이로드를 구문 분석합니다.

  2. messageKeyword 필드를 확인하여 고객의 의도를 결정합니다.

  3. SendTextMessage API를 통해 풀 기반 전송(권장)을 사용하여 응답을 전송합니다. 풀은 채널 선택을 자동으로 처리합니다.

참고

인바운드 메시지에 대한 응답을 전송할 때 고객의 디바이스가 더 이상 RCS를 지원하지 않는 경우 풀 기반 전송을 사용하여 자동 SMS 폴백을 보장합니다. 전송 패턴에 대한 자세한 내용은 섹션을 참조하세요RCS 메시지 전송.

인바운드 RCS 메시징 모범 사례

양방향 RCS 메시징을 구현할 때는 다음 모범 사례를 따르세요.

  • 오류 처리 구현 - Lambda 함수 또는 SNS 구독자가 오류를 정상적으로 처리해야 합니다. 함수가 메시지를 처리하지 못하면 SNS 구독에서 DLQ(Dead Letter Queue)를 구성하여 나중에 다시 시도할 수 있도록 처리되지 않은 메시지를 캡처합니다.

  • 폴백 응답 전송 - 애플리케이션에서 처리할 수 없는 메시지를 수신하면 응답 없이 고객을 떠나지 말고 유용한 폴백 응답을 전송합니다. 예를 들어 사용 가능한 명령으로 응답하거나 고객을 대체 지원 채널로 안내합니다.

  • 응답에 풀 기반 전송 사용 - 인바운드 메시지에 응답을 전송할 때 풀 기반 전송을 사용하여 자동 SMS 폴백을 보장합니다. 이렇게 하면 디바이스가 더 이상 RCS를 지원하지 않더라도 응답이 고객에게 전달됩니다.

  • 메시지 처리 모니터링 - Amazon CloudWatch 지표를 사용하여 인바운드 메시지 볼륨 및 처리 성공률을 모니터링합니다. 인바운드 메시지의 갑작스러운 증가 또는 높은 처리 실패율과 같은 비정상적인 패턴에 대한 경보를 설정합니다. RCS 지표에 대한 자세한 내용은 섹션을 참조하세요RCS CloudWatch 지표 및 모니터링.

  • 키워드 응답을 일관되게 처리 - 키워드 자동 응답과 애플리케이션의 프로그래밍 방식 응답이 충돌하지 않도록 합니다. 특정 키워드에 대한 키워드 자동 응답을 구성해도 Lambda 함수는 여전히 메시지를 수신합니다. 이미 자동 응답이 구성된 키워드에 대해 중복 응답을 보내지 않도록 함수를 설계합니다.