

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

# 使用通知傳送訊息
<a name="notify-send-messages"></a>

通知提供兩個用於傳送訊息APIs：
+ `SendNotifyTextMessage` – 使用預先核准的範本傳送簡訊。
+ `SendNotifyVoiceMessage` – 傳送語音呼叫，以使用text-to-speech讀取範本內容。

## 傳送簡訊訊息
<a name="notify-send-text"></a>

------
#### [ Console ]

1. 在 https：//[https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) 開啟 AWS 最終使用者傳訊簡訊主控台。

1. 導覽至通知組態，然後選擇**測試**索引標籤。

1. 針對頻道，選取**文字**。

1. 從範本資料表中選取範本。

1. 以 E.164 格式輸入目的地電話號碼。

1. 填寫範本變數。

1. 選擇**傳送**。

------
#### [ AWS CLI ]

```
aws pinpoint-sms-voice-v2 send-notify-text-message \
  --notify-configuration-id nc-1234567890abcdef0 \
  --destination-phone-number +12065550100 \
  --template-id notify-code-verification-english-001 \
  --template-variables '{"code":"123456"}'
```

------
#### [ Python (boto3) ]

```
import boto3

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

response = client.send_notify_text_message(
    NotifyConfigurationId='nc-1234567890abcdef0',
    DestinationPhoneNumber='+12065550100',
    TemplateId='notify-code-verification-english-001',
    TemplateVariables={
        'code': '123456'
    }
)

print(f"Message sent. MessageId: {response['MessageId']}")
print(f"Resolved body: {response.get('ResolvedMessageBody')}")
```

------

## 傳送語音訊息
<a name="notify-send-voice"></a>

語音訊息需要在通知組態上啟用`VOICE`頻道。

**提示**  
對於語音訊息，請以句點或空格分隔數字 （例如 `"1. 2. 3. 4. 5. 6."`)，讓text-to-speech引擎個別讀取每個數字，而非單一數字。

------
#### [ Console ]

1. 在 https：//[https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) 開啟 AWS 最終使用者傳訊簡訊主控台。

1. 導覽至通知組態，然後選擇**測試**索引標籤。

1. 針對頻道，選取**語音**。

1. 從範本資料表中選取語音範本。

1. 輸入目的地電話號碼並填入範本變數。

1. 選擇**傳送**。

------
#### [ AWS CLI ]

```
aws pinpoint-sms-voice-v2 send-notify-voice-message \
  --notify-configuration-id nc-1234567890abcdef0 \
  --destination-phone-number +12065550100 \
  --template-id notify-code-verification-english-001 \
  --template-variables '{"code":"123456"}' \
  --voice-id JOANNA
```

------

## 使用 DryRun 模式
<a name="notify-send-dryrun"></a>

`DryRun` 設定為 `true` 以驗證傳送請求，而不實際傳遞訊息。DryRun 模式會檢查範本變數驗證、國家/地區限制和花費限制，但不傳送訊息或從您的花費限制中扣除。

```
aws pinpoint-sms-voice-v2 send-notify-text-message \
  --notify-configuration-id nc-1234567890abcdef0 \
  --destination-phone-number +12065550100 \
  --template-id notify-code-verification-english-001 \
  --template-variables '{"code":"123456"}' \
  --dry-run
```

## 傳送請求參數
<a name="notify-send-parameters"></a>

`SendNotifyTextMessage` 和 都`SendNotifyVoiceMessage`接受下列參數：

NotifyConfigurationId （必要）  
通知組態的 ID 或 ARN。

DestinationPhoneNumber （必要）  
收件人的 E.164 格式電話號碼。

TemplateVariables （必要）  
變數名稱與值的映射。所有值都是字串，即使是整數或布林值變數也是如此。

TemplateId  
要使用的範本。如果省略，則會使用組態的預設範本。

ConfigurationSetName  
事件路由的組態設定。

Context  
包含在事件記錄中的鍵/值對。

DryRun  
驗證請求而不傳送。

TimeToLive  
訊息的有效時間長度，以秒為單位。預設為 72 小時。

MessageFeedbackEnabled  
透過 `PutMessageFeedback` API 啟用訊息意見回饋追蹤。

VoiceId （僅限語音）  
要使用的 Amazon Polly 語音 （例如 `JOANNA`、)`MATTHEW`。

## 訊息路由的運作方式
<a name="notify-send-routing"></a>

AWS 會根據目的地國家/地區，自動為每個訊息選取最佳起始身分。如果您已將電話集區與通知組態建立關聯，則會先嘗試集區中客戶擁有的身分。如果沒有適當的客戶擁有的身分可用，則會使用 AWS受管身分做為備用身分。

## 訊息回饋
<a name="notify-send-feedback"></a>

如果您在傳送訊息`MessageFeedbackEnabled`時啟用 ，您可以報告最終使用者是否已成功接收並使用程式碼：

```
client.put_message_feedback(
    MessageId='msg-1234567890abcdef',
    MessageFeedbackStatus='RECEIVED'  # or 'FAILED'
)
```

## 交付事件
<a name="notify-send-delivery-events"></a>

通知 會將交付事件發送到您設定的事件目的地 (CloudWatch、Amazon Data Firehose 或 Amazon SNS)。如需設定事件目的地的詳細資訊，請參閱 [AWS 最終使用者傳訊簡訊中的組態設定](configuration-sets.md)。


**交付事件類型**  

| 事件 | Description | 
| --- | --- | 
| PENDING | 訊息已排入交付佇列。 | 
| DELIVERED | 訊息已交付至收件人的裝置。 | 
| FAILED | 訊息傳遞失敗。如需詳細資訊，請檢查失敗原因。 | 
| BLOCKED | 保護組態規則已封鎖訊息。 | 

## 錯誤處理
<a name="notify-send-errors"></a>

ValidationException  
範本變數遺失或無效、電話號碼格式無效，或未在組態上啟用目的地國家/地區。

ResourceNotFoundException  
找不到通知組態或範本。

ServiceQuotaExceededException  
達到每日訊息限制 （基本方案） 或每月花費限制。

ConflictException  
通知組態未處於 `ACTIVE` 狀態。

## 重要說明
<a name="notify-send-important-notes"></a>
+ **雙向傳訊** – 使用 AWS受管原始身分時不支援雙向傳訊。如果您需要雙向傳訊，請將您自己的電話集區建立關聯。請參閱 [搭配 Notify 使用專用號碼](notify-dedicated-numbers.md)。
+ **選擇退出行為** – 對於具有 AWS受管身分的 OTP 使用案例，STOP 關鍵字回應僅供參考。不會維護持續選擇退出清單，因為每個 OTP 請求都是隱含選擇加入。如果您將自己的電話集區建立關聯，則會遵守集區的選擇退出清單。

## 疑難排解
<a name="notify-send-troubleshooting"></a>

**未傳遞的訊息**  
如果您的訊息未交付，請確認下列事項：

1. 確認目的地電話號碼為 E.164 格式 （開頭為 `+`和 國碼）。

1. 檢查目的地國家/地區是否在您的`EnabledCountries`清單中。

1. 驗證您的組態狀態為 `ACTIVE`。

1. 檢查您的支出限制尚未超過。

**封鎖狀態**  
訊息已被保護組態封鎖。常見原因包括目的地國家/地區不在已啟用的國家/地區清單中，或訊息標記為潛在 AIT （人工膨脹流量）。

**驗證錯誤**  
確定`TemplateVariables`已提供所有必要項目。檢查變數值是否符合其宣告的類型 （例如，整數是有效的數字）。確認範本 ID 存在且處於作用中狀態。