

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS End User Messaging SMS を使用して SMS または音声メッセージを送信する例
<a name="send-sms-voice-message"></a>

AWS End User Messaging SMS API を使用して、アプリから直接メッセージを送信できます。トランザクションメッセージは、特定の受信者に送信するメッセージです。

このセクションには、[SMS メッセージ](#sms-voice-v2-messages-sms)と[音声メッセージ](#sms-voice-v2-messages-voice)の送信の両方のコード例が記載されています。

**重要**  
共有リソースを使用するには、完全な Amazon リソースネーム (ARN) を使用する必要があります。

**Topics**
+ [AWS End User Messaging SMS を使用した SMS メッセージの送信](#sms-voice-v2-messages-sms)
+ [AWS End User Messaging SMS を使用した音声メッセージの送信](#sms-voice-v2-messages-voice)

## AWS End User Messaging SMS を使用した SMS メッセージの送信
<a name="sms-voice-v2-messages-sms"></a>

共有リソースを使用している場合は、リソースの完全な Amazon リソースネーム (ARN) を使用する必要があります。AWS SDK for Python (Boto3) で SMS メッセージを送信するには、次のコード例を使用できます。

```
import boto3
from botocore.exceptions import ClientError


def send_sms_message(sms_voice_v2_client, configuration_set, context_keys,
                     country_parameters, destination_number, dry_run, keyword,
                     max_price, message_body, message_type, origination_number,
                     ttl):
    try:
        response = sms_voice_v2_client.send_text_message(
            ConfigurationSetName=configuration_set,
            Context=context_keys,
            DestinationCountryParameters=country_parameters,
            DestinationPhoneNumber=destination_number,
            DryRun=dry_run,
            Keyword=keyword,
            MaxPrice=max_price,
            MessageBody=message_body,
            MessageType=message_type,
            OriginationIdentity=origination_number,
            TimeToLive=ttl
        )

    except ClientError as e:
        print(e.response)
    else:
        return response['MessageId']


def main():
    configuration_set = "MyConfigurationSet"
    context_keys = {"key1": "value1"}
    country_parameters = {
        "IN_TEMPLATE_ID": "TEMPLATE01234",
        "IN_ENTITY_ID": "ENTITY98765"
    }
    destination_number = "+14255550168"
    dry_run = False
    keyword = "MyKeyword"
    max_price = "2.00"
    message_body = ("This is a test message sent from AWS End User Messaging SMS "
                    "using the AWS SDK for Python (Boto3). ")
    message_type = "TRANSACTIONAL"
    origination_number = "+12065550183"
    ttl = 120

    print(
        f"Sending text message to {destination_number}.")

    message_id = send_sms_message(
        boto3.client('pinpoint-sms-voice-v2'), configuration_set, context_keys,
        country_parameters, destination_number, dry_run, keyword, max_price,
        message_body, message_type, origination_number, ttl)

    print(f"Message sent!\nMessage ID: {message_id}")


if __name__ == '__main__':
    main()
```

前述のコード例では、`main()` 関数で次の変更を加えています。
+ `configuration_set` の値を、このメッセージの送信に使用する設定セットの名前または Amazon リソースネーム (ARN) に変更します。
+ `context_keys` の値を、このメッセージの送信時に使用するキーと値に変更します。これらのキーは、このメッセージに関連付けられたイベントレコードに表示されます。
+ インドの顧客にメッセージを送信するために登録済みの送信者 ID を使用する場合は、送信者 ID の登録時に受け取った登録エンティティ ID およびテンプレート ID と一致するように `country_parameters` の値を変更します。
**重要**  
インドの顧客にメッセージを送信するために登録済み送信者 ID を使用しない場合は、このパラメータを完全に省略します。省略する場合は、`send_sms_message` 関数の対応する行も削除する必要があります。
+ `destination_number` の値を、メッセージの送信先の電話番号に変更します。
+ メッセージを送信せずに、この操作を実行する場合は、`dry_run` の値を `True` に変更します。
+ `max_price` の値を、このメッセージの各メッセージパートを送信するために使う最大金額 (USD) に変更します。1 つのメッセージパートに最大 140 バイトの情報を含めることができます。詳細については、「[SMS 文字制限](sms-limitations-character.md)」を参照してください。
+ `message_body` の値を、送信するメッセージを含むように変更します。メッセージの最大長は、メッセージに含まれる文字によって異なります。SMS の文字エンコーディングの詳細については、「[SMS 文字制限](sms-limitations-character.md)」を参照してください。
+ `message_type` の値を、適切なメッセージカテゴリを表すように変更します。有効な値は、TRANSACTIONAL (重要である、または時間的制約のあるメッセージの場合) と PROMOTIONAL (重要でない、または時間的制約のないメッセージの場合) です。
+ `origination_number` の値を、メッセージの送信に使用する電話番号に変更します。電話番号は E.164 形式である必要があります。
+ `ttl` の値を、AWS End User Messaging SMS がメッセージの配信を試みる時間 (秒数) に変更します。TTL 値は最大 259200 秒 (72 時間) に設定できます。

## AWS End User Messaging SMS を使用した音声メッセージの送信
<a name="sms-voice-v2-messages-voice"></a>

AWS SDK for Python (Boto3) で音声メッセージを送信するには、次のコード例を使用できます。

```
import boto3
from botocore.exceptions import ClientError


def send_voice_message(sms_voice_v2_client, configuration_set, context_keys,
                       destination_number, dry_run, max_price, message_body,
                       message_type, origination_number, ttl, voice_id):
    try:
        response = sms_voice_v2_client.send_voice_message(
            ConfigurationSetName=configuration_set,
            Context=context_keys,
            DestinationPhoneNumber=destination_number,
            DryRun=dry_run,
            MaxPricePerMinute=max_price,
            MessageBody=message_body,
            MessageBodyTextType=message_type,
            OriginationIdentity=origination_number,
            TimeToLive=ttl,
            VoiceId=voice_id
        )

    except ClientError as e:
        print(e.response)
    else:
        return response['MessageId']


def main():
    configuration_set = "MyConfigurationSet"
    context_keys = {"key1":"value1"}
    destination_number = "+12065550123"
    dry_run = False
    max_price = "2.00"
    message_body = (
        "<speak>"
        "This is a test message sent from <emphasis>AWS End User Messaging SMS</emphasis>"
        "using the <break strength='weak'/> AWS SDK for Python (Boto3). "
        "<amazon:effect phonation='soft'>Thank you for listening."
        "</amazon:effect>"
        "</speak>")
    message_type = "SSML"
    origination_number = "+18445550142"
    ttl = 120
    voice_id = "MATTHEW"

    print(
        f"Sending voice message with AWS End User Messaging SMS from {origination_number} to {destination_number}.")

    message_id = send_voice_message(
        boto3.client('pinpoint-sms-voice-v2'), configuration_set, context_keys,
        destination_number, dry_run, max_price, message_body, message_type,
        origination_number, ttl, voice_id)

    print(f"Message sent!\nMessage ID: {message_id}")


if __name__ == '__main__':
    main()
```

前述のコード例では、`main()` 関数で次の変更を加えています。
+ `configuration_set` の値を、このメッセージの送信に使用する設定セットの名前または Amazon リソースネーム (ARN) に変更します。
+ `context_keys` の値を、このメッセージの送信時に使用するキーと値に変更します。これらのキーは、このメッセージに関連付けられたイベントレコードに表示されます。
+ `destination_number` の値を、メッセージの送信先の電話番号に変更します。
+ `max_price` の値を、このメッセージの送信に使う 1 分あたりの最大金額に変更します。
+ `message_body` の値を、送信するメッセージを含むように変更します。メッセージの長さは最大 6,000 文字です。
+ SSML 形式のスクリプトではなくプレーンテキスト形式のスクリプトを使用する場合は、`message_type` の値を `TEXT` に変更します。
+ `origination_number` の値を、メッセージの送信に使用する電話番号に変更します。電話番号は E.164 形式である必要があります。
+ メッセージを送信せずに、この操作を実行する場合は、`dry_run` の値を `True` に変更します。
+ `ttl` の値を、AWS End User Messaging SMS がメッセージの配信を試みる時間 (秒数) に変更します。TTL 値は最大 259200 秒 (72 時間) に設定できます。
+ `MATTHEW` を、メッセージの送信に使用する Amazon Polly 音声の名前に置き換えます。サポートされている音声の完全なリストについては、「*SMS and Voice, version 2 API Reference*」の「[SendVoiceMessage](https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_SendVoiceMessage.html#pinpoint-SendVoiceMessage-request-VoiceId)」を参照してください。音声を指定しない場合、メッセージは「MATTHEW」音声を使用して送信されます。