

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

# RCS 메시지 전송
<a name="rcs-send-message"></a>

AWS End User Messaging은 RCS 및 SMS 전송 모두에 동일한 `SendTextMessage` API를 사용합니다. 서비스가 메시지를 라우팅하는 방법은 요청에서 지정한 발신 자격 증명에 따라 달라집니다. 전화 풀(권장), 계정 수준에서 또는 AWS RCS 에이전트 ARN을 통해 직접 메시지를 보낼 수 있습니다.

이 섹션에서는 세 가지 전송 패턴, 전송 영수증을 해석하는 방법을 설명하고 코드 예제를 제공합니다. 고정 전송, 발신 자격 증명 우선 순위 및 자동 SMS 폴백에 대한 자세한 내용은 섹션을 참조하세요[전화 풀을 사용한 RCS에서 SMS로의 대체](rcs-sms-fallback.md). AWS RCS 에이전트 관리에 대한 자세한 내용은 섹션을 참조하세요[RCS 에이전트 관리](rcs-agents.md).

**Topics**
+ [전송 패턴](#rcs-send-message-patterns)
+ [고정 전송, 우선 순위 및 SMS 대체](#rcs-send-message-fallback-summary)
+ [코드 예제](#rcs-send-message-examples)
+ [RCS 메시지 전송을 위한 AI 에이전트 프롬프트](#rcs-send-message-ai-prompt)
+ [전송 수신 처리](#rcs-send-message-delivery-receipts)

## 전송 패턴
<a name="rcs-send-message-patterns"></a>

AWS End User Messaging은 RCS 메시지 전송을 위한 세 가지 패턴을 지원합니다. 각 패턴은 서비스가 발신 자격 증명을 선택하는 방법과 자동 SMS 대체를 사용할 수 있는지 여부를 결정합니다.


**RCS 전송 패턴**  

| 패턴 | 작동 방식 | SMS 대체 | 사용해야 하는 경우 | 
| --- | --- | --- | --- | 
| 풀 기반(권장) | 풀 ID를 발신 자격 증명으로 지정합니다. 이 서비스는 풀에서 최상의 자격 증명을 선택합니다. | 예 | 모든 사용 사례. 규정 준수 안전 라우팅을 통해 자동 채널 선택 및 SMS 폴백을 제공합니다. | 
| 계정 수준 | 발신 자격 증명을 생략합니다. 서비스는 계정에서 사용 가능한 모든 자격 증명 중에서 선택합니다. | 예 | 단일 사용 사례를 사용한 간단한 설정. 사용 사례가 여러 개인 계정에는 권장되지 않습니다. | 
| 직접 전송 | AWS RCS 에이전트 ARN을 발신 자격 증명으로 지정합니다. 메시지는 RCS를 통해서만 전송됩니다. | 아니요 | RCS-or-nothing 사용 사례 또는 AWS 최종 사용자 메시징 외부에서 SMS 대체를 관리하는 경우. | 

### 풀 기반 전송(권장)
<a name="rcs-send-message-pool-based"></a>

풀 기반 전송은 모든 RCS 사용 사례에 권장되는 접근 방식입니다. 풀 ID를 `SendTextMessage` 요청의 발신 자격 증명으로 지정하면 AWS End User Messaging은 대상, 채널 가용성 및 고정 전송 기록을 기반으로 풀에서 최상의 발신 자격 증명을 선택합니다.

풀에 AWS RCS 에이전트와 SMS 전화번호가 모두 포함된 경우 서비스는 먼저 RCS 전송을 시도합니다. RCS 전송에 실패하면 서비스는 동일한 풀의 전화번호를 사용하여 자동으로 SMS로 돌아갑니다. 풀의 모든 자격 증명이 동일한 사용 사례에 등록되므로 대체 메시지는 항상 적절한 번호에서 전송됩니다.

AWS RCS 에이전트를 사용하여 풀을 생성하고 구성하는 방법에 대한 자세한 내용은 섹션을 참조하세요[전화 풀을 사용한 RCS에서 SMS로의 대체](rcs-sms-fallback.md).

### 계정 수준 전송
<a name="rcs-send-message-account-level"></a>

`SendTextMessage` 요청에서 발신 자격 증명을 생략하면 AWS End User Messaging은 계정에서 사용 가능한 모든 자격 증명에서 발신 자격 증명을 선택합니다. 서비스는 발신 자격 증명 우선 순위를 사용하여 사용할 자격 증명을 결정합니다. 자세한 내용은 [폴백 로직 및 우선 순위](rcs-sms-fallback.md#rcs-sms-fallback-logic)을 참조하세요.

**중요**  
계정에 다른 사용 사례에 등록된 전화번호가 포함된 경우 계정 수준 전송은 규정 준수 위험을 초래합니다. RCS 전송이 실패하고 서비스가 SMS로 돌아가면 메시지 내용과 일치하지 않는 전화번호를 선택할 수 있습니다. 예를 들어 OTP 메시지는 예약 알림에 등록된 수신자 부담 전화번호로 돌아가 해당 전화번호의 등록 조건을 위반할 수 있습니다. 이러한 위험을 방지하려면 사용 사례당 하나의 풀과 함께 풀 기반 전송을 사용합니다. 자세한 내용은 [계정 수준 전송과 관련된 규정 준수 위험](rcs-sms-fallback.md#rcs-sms-fallback-compliance-risk)을 참조하세요.

### 직접 전송(RCS만 해당)
<a name="rcs-send-message-direct"></a>

AWS RCS 에이전트 ARN을 `SendTextMessage` 요청의 발신 자격 증명으로 지정하면 AWS End User Messaging은 RCS를 통해서만 메시지를 전송합니다. 자동 SMS 대체는 없습니다. RCS 전송이 실패하면 메시지가 다른 채널에서 재시도되지 않습니다.

다음과 같은 경우 직접 전송을 사용합니다.
+ RCS-or-nothing 전송을 원합니다. 메시지는 RCS를 통해서만 전송되어야 하며 SMS 전송을 통한 전송을 선호하지 않습니다.
+  AWS 최종 사용자 메시징 외부에서 SMS 대체를 관리합니다. 애플리케이션은 RCS 전송 실패를 감지하고 다른 시스템 또는 공급자를 통해 별도의 SMS를 보내는 등 폴백 로직을 독립적으로 처리합니다.

**참고**  
직접 전송은 모든 SMS 폴백 로직을 우회합니다. 수신자의 디바이스 또는 통신사가 RCS를 지원하지 않는 경우 메시지가 전송되지 않습니다. 대부분의 사용 사례에서는 추가 비용 없이 자동 SMS 폴백을 제공하므로 풀 기반 전송이 권장됩니다.

## 고정 전송, 우선 순위 및 SMS 대체
<a name="rcs-send-message-fallback-summary"></a>

풀을 통해 또는 계정 수준에서 메시지를 전송할 때 AWS End User Messaging은 고정 전송(25시간 라우팅 최적화), 발신 자격 증명 우선 순위 및 자동 SMS 폴백을 사용하여 각 메시지에 가장 적합한 채널과 자격 증명을 선택합니다. 자동 폴백, 폴백 중 배송 영수증, 결제 영향 등 이러한 메커니즘의 작동 방식에 대한 전체 세부 정보는 섹션을 참조하세요[전화 풀을 사용한 RCS에서 SMS로의 대체](rcs-sms-fallback.md).

## 코드 예제
<a name="rcs-send-message-examples"></a>

다음 Python 예제에서는 세 가지 전송 패턴 각각을 사용하여 RCS 메시지를 전송하는 방법을 보여줍니다. 모든 예제에서는 boto3 `pinpoint-sms-voice-v2` 클라이언트와 `SendTextMessage` API를 사용합니다.

### 풀 기반 전송 예제
<a name="rcs-send-message-example-pool"></a>

다음 예제에서는 전화 풀을 통해 메시지를 보냅니다. 서비스는 풀에서 최상의 발신 자격 증명을 선택하고 RCS 전송이 불가능한 경우 자동으로 SMS로 돌아갑니다.

```
import boto3

client = boto3.client('pinpoint-sms-voice-v2')

response = client.send_text_message(
    DestinationPhoneNumber='+12065550100',
    OriginationIdentity='pool-a1b2c3d4e5f6g7h8i',
    MessageBody='Your appointment is confirmed for tomorrow at 2:00 PM.',
    MessageType='TRANSACTIONAL'
)

print(f"Message ID: {response['MessageId']}")
```

### 계정 수준 전송 예제
<a name="rcs-send-message-example-account"></a>

다음 예시에서는 발신 자격 증명을 생략하여 계정 수준에서 메시지를 보냅니다. 서비스는 우선 순위에 따라 계정에서 사용 가능한 모든 자격 증명에서 자격 증명을 선택합니다.

```
import boto3

client = boto3.client('pinpoint-sms-voice-v2')

response = client.send_text_message(
    DestinationPhoneNumber='+12065550100',
    MessageBody='Your verification code is 123456.',
    MessageType='TRANSACTIONAL'
)

print(f"Message ID: {response['MessageId']}")
```

**중요**  
계정에 다른 사용 사례에 등록된 전화번호가 포함된 경우 계정 수준 전송은 메시지 콘텐츠와 일치하지 않는 번호를 통해 SMS 대체를 라우팅할 수 있습니다. 규정 준수 위험을 방지하려면 사용 사례당 하나의 풀과 함께 풀 기반 전송을 사용합니다.

### 직접 전송 예제
<a name="rcs-send-message-example-direct"></a>

다음 예제에서는 AWS RCS 에이전트 ARN을 통해 직접 메시지를 보냅니다. 메시지는 SMS 대체 없이 RCS를 통해서만 전달됩니다.

```
import boto3

client = boto3.client('pinpoint-sms-voice-v2')

response = client.send_text_message(
    DestinationPhoneNumber='+12065550100',
    OriginationIdentity='arn:aws:sms-voice:us-east-1:123456789012:rcs-agent/rcs-a1b2c3d4',
    MessageBody='Welcome to our RCS channel! Reply HELP for assistance.'
)

print(f"Message ID: {response['MessageId']}")
```

**참고**  
수신자의 디바이스 또는 통신사가 RCS를 지원하지 않는 경우 메시지가 전송되지 않습니다. SMS 대체는 시도되지 않습니다. RCS-or-nothing 전송을 원하거나 AWS 최종 사용자 메시징 외부에서 SMS 폴백을 관리하는 경우에만이 패턴을 사용합니다.

## RCS 메시지 전송을 위한 AI 에이전트 프롬프트
<a name="rcs-send-message-ai-prompt"></a>

생성형 AI 코딩 어시스턴트 또는 AI 에이전트를 사용하는 경우 다음 프롬프트를 사용하여 AWS CLI 또는 SDK를 사용하여 RCS 메시지를 보내는 데 도움을 받을 수 있습니다.

**참고**  
다음 프롬프트를 복사하여 AI 에이전트 또는 코딩 어시스턴트에 붙여 넣습니다.  

```
## RCS Messaging Assistant Prompt

Help me send RCS messages using AWS End User Messaging SMS with the
`pinpoint-sms-voice-v2` service. Show me exact CLI commands and Python/boto3
examples. Ask me for my details before generating any commands.

**Important rules for generating commands:**
- The API is `send-text-message` — the same command used for SMS. There is
  NO separate RCS send API.
- There is NO `describe-messages` API. Do not generate it.
- The boto3 method is `send_text_message` on the
  `pinpoint-sms-voice-v2` client.
- Use the term "testing" — NOT "sandbox".

**Prerequisites:** I have an existing RCS agent (created via the setup process)
and a verified test device.

### Pattern 1: Direct RCS sending (simplest, good for testing)

Send directly through my RCS Agent ARN. RCS-only delivery, no SMS fallback.
If the recipient's device doesn't support RCS, the message is not delivered.

CLI: `send-text-message --destination-phone-number <E.164>
--origination-identity <agent-arn> --message-body "<text>"
--message-type <TRANSACTIONAL|PROMOTIONAL>`

Returns `MessageId`.

### Pattern 2: Pool-based sending (recommended for production)

Send through a phone pool containing my RCS agent (and optionally SMS phone
numbers for fallback). The service tries RCS first, then falls back to SMS
asynchronously if no RCS signal within 25 seconds. This is NOT synchronous
fallback — the SMS is sent as a separate attempt after the timeout.

To set up a pool:
- `create-pool --origination-identity <rcs-agent-id> --message-type TRANSACTIONAL` → returns `PoolId`
- Optionally add SMS numbers: `associate-origination-identity --pool-id <id>
  --origination-identity <phone-number-id>`

CLI: `send-text-message --destination-phone-number <E.164>
--origination-identity <pool-id> --message-body "<text>"
--message-type <TRANSACTIONAL|PROMOTIONAL>`

### Pattern 3: Account-level sending

Send without specifying `--origination-identity`. The service auto-selects
the best identity from the account.

CLI: `send-text-message --destination-phone-number <E.164>
--message-body "<text>" --message-type <TRANSACTIONAL|PROMOTIONAL>`

**Compliance warning:** If the account has multiple RCS agents, SMS numbers,
or different use cases, the service picks an identity automatically — which
may not be the intended one. Use pool-based or direct sending for explicit
control over which identity is used.

### Delivery verification

- For testing: check the test device directly — the message appears from
  the branded RCS agent.
- For production: configure event destinations BEFORE sending using
  `create-event-destination` (SNS, CloudWatch Logs, or Firehose). Event
  destinations do not retroactively capture events for already-sent messages.
- CloudWatch metrics in `AWS/SMSVoice` namespace provide aggregate delivery
  statistics.

### Behavioral notes

- Sticky sending: the service remembers the last successful identity per
  destination number for 25 hours.
- Pool-based sending is recommended for production because it provides
  automatic SMS fallback.
- All three patterns use the same `send-text-message` API — the only
  difference is what you pass (or don't pass) as `--origination-identity`.

---

**Before generating commands, ask me for:**
- Which sending pattern I want to use (direct, pool-based, or account-level)
- My RCS Agent ARN
- My pool ID (if using pool-based sending)
- Destination phone number in E.164 format
- Message type (TRANSACTIONAL or PROMOTIONAL)
- Message text
```

## 전송 수신 처리
<a name="rcs-send-message-delivery-receipts"></a>

AWS End User Messaging은 Amazon EventBridge 및 구성 세트 이벤트 대상을 통해 RCS 메시지에 대한 전송 수신을 제공합니다. 전송 수신은 메시지의 최종 상태와 전송에 사용된 채널을 나타냅니다. 전송 수신 및 기타 메시지 이벤트를 캡처하도록 이벤트 대상을 설정하는 방법은 섹션을 참조하세요[AWS End User Messaging SMS의 이벤트 대상](configuration-sets-event-destinations.md).

### 전송 상태 값
<a name="rcs-send-message-delivery-status"></a>

RCS 메시지에는 다음과 같은 전송 상태 값이 적용됩니다.

전송됨  
메시지가 수신자의 디바이스로 성공적으로 전송되었습니다.

PENDING  
RCS 인프라에서 메시지를 수락했지만 전송 확인을 아직 받지 못했습니다. 메시지가 계속 전달될 수 있습니다.

EXPIRED  
메시지가 허용된 기간 내에 전송되지 않았습니다. SMS 폴백이 있는 RCS 메시지의 경우이 상태는 폴백이 발생하기 전에 RCS 시도에 적용됩니다.

전송할 수 없음  
메시지를 전송할 수 없습니다. 이는 수신자의 디바이스에 영구적으로 연결할 수 없거나 전화번호가 유효하지 않을 때 발생할 수 있습니다.

REJECTED  
RCS 인프라 또는 통신 사업자가 메시지를 거부했습니다. 이는 콘텐츠 정책 위반 또는 통신 사업자 수준 필터링으로 인해 발생할 수 있습니다.

### 채널 어트리뷰션
<a name="rcs-send-message-channel-attribution"></a>

전송 수신에는 메시지가 RCS 또는 SMS를 통해 전송되었는지 여부를 나타내는 채널 속성이 포함됩니다. 이는 전송 혼합을 이해하고 결제를 위해 중요합니다.
+ 메시지가 RCS를 통해 전송되면 전송 수신은 RCS를 전송 채널로 표시하고 AWS RCS 에이전트 자격 증명을 포함합니다.
+ 메시지가 SMS로 돌아가면 전송 수신은 SMS를 전송 채널로 표시하고 전송에 사용된 SMS 전화번호 자격 증명을 포함합니다.
+ 직접 전송(AWS RCS 에이전트 ARN)이 실패하면 전송 수신에 RCS가 실패 상태의 시도된 채널로 표시됩니다. SMS 폴백 수신이 생성되지 않습니다.

RCS CloudWatch 지표 및 모니터링 전송 패턴에 대한 자세한 내용은 섹션을 참조하세요[RCS CloudWatch 지표 및 모니터링](rcs-monitoring.md). 전송 채널이 결제에 미치는 영향에 대한 자세한 내용은 섹션을 참조하세요[RCS 결제 및 요금 모델](rcs-billing.md).