휴대폰에 게시 - Amazon Simple Notification Service

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

휴대폰에 게시

Amazon SNS를 사용하여 전화번호에서 Amazon SNS 주제를 구독하지 않고도 휴대폰으로 SMS 메시지를 직접 전송할 수 있습니다.

참고

하나의 메시지를 여러 전화번호에 한 번에 전송하려는 경우에도 전화번호에서 주제를 구독하면 유용할 수 있습니다. 주제에 SMS 메시지 게시에 대한 자세한 내용은 주제에 게시에서 확인하세요.

메시지를 전송할 때 메시지가 비용에 맞게 최적화되는지 또는 안정적 전송을 위해 최적화되는지를 제어할 수 있습니다. 발신자 ID 또는 발신 번호를 지정할 수도 있습니다. Amazon SNS API 또는 AWS SDK를 사용하여 프로그래밍 방식으로 메시지를 전송하는 경우 메시지 전송에 대한 최고 가격을 지정할 수 있습니다.

각 SMS 메시지는 140바이트까지 포함할 수 있으며 문자 할당량은 인코딩 체계에 따라 달라집니다. 예를 들어 SMS 메시지에는 다음과 같이 포함될 수 있습니다.

  • 160 GSM 문자

  • 140 ASCII 문자

  • 70 UCS-2 문자

크기 할당량을 초과하는 메시지를 게시하면 Amazon SNS에서 해당 메시지를 각각 크기 할당량 내에 맞춘 여러 메시지로 보냅니다. 메시지는 단어 중간에 잘리지 않고 대신 전체 단어의 경계선에서 잘립니다. 단일 SMS 게시 작업에 대한 전체 크기 할당량은 1,600바이트입니다.

SMS 메시지를 보낼 때 국제 통신에 사용되는 표준 전화번호 구조인 E.164 형식을 사용하여 전화번호를 지정합니다. 이 형식을 따르는 전화번호는 최대 15자리 숫자를 사용할 수 있으며 더하기 기호(+) 및 국가 코드가 접두사로 추가됩니다. 예를 들어, E.164 형식의 미국 전화번호는 +1XXX5550100로 표시됩니다.

메시지 전송(콘솔)

  1. Amazon SNS 콘솔에 로그인합니다.

  2. 콘솔 메뉴에서 SMS 메시징을 지원하는 AWS 리전을 선택합니다.

  3. 탐색 창에서 문자 메시지(SMS)를 선택합니다.

  4. 모바일 문자 메시징(SMS) 페이지에서 문자 메시지 게시를 선택합니다.

  5. SMS 메시지 게시메시지 유형에서 다음 중 하나를 선택합니다.

    • 프로모션 – 중요하지 않은 메시지입니다(예: 마케팅 메시지).

    • 트랜잭션 – 고객 트랜잭션을 지원하는 중요한 메시지입니다(예: 멀티 팩터 인증을 위한 일회용 암호).

    참고

    이 메시지 수준 설정은 계정 수준 기본 메시지 유형을 재정의합니다. 모바일 문자 메시징(SMS) 페이지의 문자 메시징 기본 설정 섹션에서 계정 수준의 기본 메시지 유형을 설정할 수 있습니다.

    프로모션 및 트랜잭션 메시지에 대한 요금 정보는 전 세계 SMS 요금을 참조하세요.

  6. 대상 전화번호에 메시지를 전송하려는 전화번호를 입력합니다.

  7. 메시지에 전송할 메시지를 입력합니다.

  8. (선택 사항) 발신 자격 증명에서 수신자에게 귀하를 식별하는 방법을 지정합니다.

    • 발신자 ID에 공백 없이 최소 1자의 문자를 포함하여 3~11자의 영숫자로 이루어진 사용자 지정 ID를 입력합니다. 발신자 ID는 수신 디바이스에 메시지 발신자로 표시됩니다. 예를 들어, 기업 브랜드를 사용하여 메시지 소스를 더 인식하기 쉽게 만들 수 있습니다.

      발신자 ID에 대한 지원은 국가 및/또는 리전별로 다릅니다. 예를 들어, 미국 전화번호로 전달된 메시지에는 발신자 ID가 표시되지 않습니다. 발신자 ID를 지원하는 국가 및 리전을 확인하려면 지원되는 국가 및 리전에서 확인하세요.

      발신자 ID를 지정하지 않으면 다음 중 하나가 발신 자격 증명으로 표시됩니다.

      • 긴 코드를 지원하는 국가에서는 긴 코드가 표시됩니다.

      • 발신자 ID만 지원되는 국가에서는 NOTICE(알림)가 표시됩니다.

      이 메시지 수준 발신자 ID는 [Text messaging preferences] 페이지에서 설정하는 기본 발신자 ID보다 우선적으로 적용됩니다.

    • 발신 번호를 지정하려면 수신자 디바이스에 발신자의 전화번호로 표시할 5-14개의 숫자 문자열을 입력합니다. 이 문자열은 대상 국가의 AWS 계정에서 구성된 발신 번호와 일치해야 합니다. 발신번호는 10DLC 번호, 무료 전화 번호, person-to-person 긴 코드 또는 단축 코드일 수 있습니다. 자세한 설명은 SMS 메시지에 대한 발신 자격 증명 섹션을 참조하세요.

      발신 번호를 지정하지 않으면 Amazon SNS는 AWS 계정 구성에 따라 SMS 문자 메시지에 사용할 발신 번호를 선택합니다.

  9. 인도의 수신자에게 SMS 메시지를 보내는 경우 국가별 속성을 확장하고 다음 속성을 지정합니다.

    • 엔터티 ID – 인도의 수신자에게 SMS 메시지를 보내기 위한 엔터티 ID 또는 보안 주체 엔터티(PE) ID입니다. 이 ID는 인도 통신 규제 당국(TRAI)에서 TRAI에 등록한 엔터티를 식별하기 위해 제공하는 1-50자의 고유한 문자열입니다.

    • 템플릿 ID – 인도에 있는 수신자에게 SMS 메시지를 보내기 위한 템플릿 ID입니다. 이 ID는 TRAI에 등록한 템플릿을 식별하는 1–50자의 고유한 TRAI 제공 문자열입니다. 템플릿 ID는 메시지에 대해 지정한 발신자 ID와 연결되어야 합니다.

    인도의 수신자에게 SMS 메시지를 보내는 방법에 대한 자세한 정보는 인도 발신자 ID 등록 요구 사항에서 확인하세요.

  10. 메시지 게시를 선택합니다.

작은 정보

발신 번호에서 SMS 메시지를 보내려면 Amazon SNS 콘솔 탐색 패널에서 발신 번호를 선택할 수도 있습니다. 기능 열에 SMS가 포함된 발신 번호를 선택한 다음 문자 메시지 게시를 선택합니다.

메시지 전송(AWS SDK)

AWS SDK 중 하나를 사용하여 SMS 메시지를 전송하려면 Amazon SNS API의 Publish 요청에 해당하는 SDK의 API 운영을 사용합니다. 이 요청을 사용하여 SMS 메시지를 전화 번호로 직접 전송할 수 있습니다. MessageAttributes 파라미터를 사용하여 다음 속성 이름의 값을 설정할 수 있습니다.

AWS.SNS.SMS.SenderID

공백 없이 최소 1자의 문자를 포함하여 3~11자의 영숫자 또는 하이픈(-)으로 이루어진 사용자 지정 ID입니다. 발신자 ID는 수신 디바이스에 메시지 발신자로 표시됩니다. 예를 들어, 기업 브랜드를 사용하여 메시지 소스를 더 인식하기 쉽게 만들 수 있습니다.

발신자 ID에 대한 지원은 국가 또는 리전별로 다릅니다. 예를 들어, 미국 전화번호로 전달된 메시지에는 발신자 ID가 표시되지 않습니다. 발신자 ID를 지원하는 국가 또는 리전 목록을 확인하려면 지원되는 국가 및 리전에서 확인하세요.

발신자 ID를 지정하지 않으면 지원되는 국가 또는 리전에서는 긴 코드가 발신자 ID로 표시됩니다. 영문자 발신자 ID가 필요한 국가 또는 리전의 경우 NOTICE가 발신자 ID로 표시됩니다.

이 메시지 수준 속성은 SetSMSAttributes 요청을 사용하여 설정하는 계정 수준 속성인 DefaultSenderID보다 우선적으로 적용됩니다.

AWS.MM.SMS.OriginationNumber

선택적 선행 더하기 기호(+)를 포함할 수 있는 5–14개의 숫자로 구성된 사용자 지정 문자열입니다. 이 숫자 문자열은 수신 디바이스에서 발신자의 전화번호로 나타납니다. 문자열은 대상 국가의 AWS 계정에 구성된 발신 번호와 일치해야 합니다. 발신 번호는 10DLC 번호, 무료 전화 번호, (P2P) 긴 코드 또는 단축 코드일 수 있습니다. person-to-person 자세한 설명은 발신 번호 섹션을 참조하세요.

발신 번호를 지정하지 않으면 Amazon SNS는 AWS 계정 구성에 따라 발신 번호를 선택합니다.

AWS.SNS.SMS.MaxPrice

SMS 메시지를 전송하기 위해 지출할 의사가 있는 최대 금액(USD)입니다. Amazon SNS에서 메시지 전송 시 최고 가격을 초과하는 비용이 발생한다고 판단하면 메시지를 전송하지 않습니다.

month-to-date SMS 비용이 속성에 설정된 할당량을 이미 초과한 경우에는 이 속성이 적용되지 않습니다. MonthlySpendLimit SetSMSAttributes 요청을 사용하여 MonthlySpendLimit 속성을 설정할 수 있습니다.

메시지를 Amazon SNS 주제로 전송하는 경우 최고 가격은 주제를 구독하는 각 전화번호로 전송되는 각 메시지에 적용됩니다.

AWS.SNS.SMS.SMSType

전송하는 메시지 유형은 다음과 같습니다.

  • Promotional(기본값) – 마케팅 메시지와 같이 중요하지 않은 메시지입니다.

  • Transactional – 고객 트랜잭션을 지원하는 중요한 메시지입니다(예: 멀티 팩터 인증을 위한 일회용 암호).

이 메시지 수준 속성은 SetSMSAttributes 요청을 사용하여 설정하는 계정 수준 속성인 DefaultSMSType보다 우선적으로 적용됩니다.

AWS.MM.SMS.EntityId

이 속성은 인도의 수신자에게 SMS 메시지를 보낼 때만 필요합니다.

인도의 수신자에게 SMS 메시지를 보내기 위한 엔터티 ID 또는 보안 주체 엔터티(PE) ID입니다. 이 ID는 인도 통신 규제 당국(TRAI)에서 TRAI에 등록한 엔터티를 식별하기 위해 제공하는 1-50자의 고유한 문자열입니다.

AWS.MM.SMS.TemplateId

이 속성은 인도의 수신자에게 SMS 메시지를 보낼 때만 필요합니다.

인도에 있는 수신자에게 SMS 메시지를 보내기 위한 템플릿입니다. 이 ID는 TRAI에 등록한 템플릿을 식별하는 1–50자의 고유한 TRAI 제공 문자열입니다. 템플릿 ID는 메시지에 대해 지정한 발신자 ID와 연결되어야 합니다.

메시지 전송

다음 코드 예제는 Amazon SNS를 사용하여 SMS 메시지를 게시하는 방법을 보여줍니다.

.NET
AWS SDK for .NET
참고

자세한 내용은 여기에서 확인할 수 GitHub 있습니다. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

namespace SNSMessageExample { using System; using System.Threading.Tasks; using Amazon; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; public class SNSMessage { private AmazonSimpleNotificationServiceClient snsClient; /// <summary> /// Initializes a new instance of the <see cref="SNSMessage"/> class. /// Constructs a new SNSMessage object initializing the Amazon Simple /// Notification Service (Amazon SNS) client using the supplied /// Region endpoint. /// </summary> /// <param name="regionEndpoint">The Amazon Region endpoint to use in /// sending test messages with this object.</param> public SNSMessage(RegionEndpoint regionEndpoint) { snsClient = new AmazonSimpleNotificationServiceClient(regionEndpoint); } /// <summary> /// Sends the SMS message passed in the text parameter to the phone number /// in phoneNum. /// </summary> /// <param name="phoneNum">The ten-digit phone number to which the text /// message will be sent.</param> /// <param name="text">The text of the message to send.</param> /// <returns>Async task.</returns> public async Task SendTextMessageAsync(string phoneNum, string text) { if (string.IsNullOrEmpty(phoneNum) || string.IsNullOrEmpty(text)) { return; } // Now actually send the message. var request = new PublishRequest { Message = text, PhoneNumber = phoneNum, }; try { var response = await snsClient.PublishAsync(request); } catch (Exception ex) { Console.WriteLine($"Error sending message: {ex}"); } } } }
  • API 세부 정보는 AWS SDK for .NET API 참조Publish를 참조하십시오.

C++
SDK for C++
참고

더 많은 것이 있어요 GitHub. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

/** * Publish SMS: use Amazon Simple Notification Service (Amazon SNS) to send an SMS text message to a phone number. * Note: This requires additional AWS configuration prior to running example. * * NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is in the SMS sandbox and you can only * use verified destination phone numbers. See https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html. * NOTE: If destination is in the US, you also have an additional restriction that you have use a dedicated * origination ID (phone number). You can request an origination number using Amazon Pinpoint for a fee. * See https://aws.amazon.com/blogs/compute/provisioning-and-using-10dlc-origination-numbers-with-amazon-sns/ * for more information. * * <phone_number_value> input parameter uses E.164 format. * For example, in United States, this input value should be of the form: +12223334444 */ //! Send an SMS text message to a phone number. /*! \param message: The message to publish. \param phoneNumber: The phone number of the recipient in E.164 format. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::publishSms(const Aws::String &message, const Aws::String &phoneNumber, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::PublishRequest request; request.SetMessage(message); request.SetPhoneNumber(phoneNumber); const Aws::SNS::Model::PublishOutcome outcome = snsClient.Publish(request); if (outcome.IsSuccess()) { std::cout << "Message published successfully with message id, '" << outcome.GetResult().GetMessageId() << "'." << std::endl; } else { std::cerr << "Error while publishing message " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }
  • API 세부 정보는 AWS SDK for C++ API 참조Publish를 참조하십시오.

Java
SDK for Java 2.x
참고

더 많은 것이 있어요 GitHub. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class PublishTextSMS { public static void main(String[] args) { final String usage = """ Usage: <message> <phoneNumber> Where: message - The message text to send. phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String message = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); pubTextSMS(snsClient, message, phoneNumber); snsClient.close(); } public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) { try { PublishRequest request = PublishRequest.builder() .message(message) .phoneNumber(phoneNumber) .build(); PublishResponse result = snsClient.publish(request); System.out .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • API 세부 정보는 AWS SDK for Java 2.x API 참조Publish를 참조하십시오.

Kotlin
SDK for Kotlin
참고

더 많은 것이 있어요 GitHub. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

suspend fun pubTextSMS(messageVal: String?, phoneNumberVal: String?) { val request = PublishRequest { message = messageVal phoneNumber = phoneNumberVal } SnsClient { region = "us-east-1" }.use { snsClient -> val result = snsClient.publish(request) println("${result.messageId} message sent.") } }
  • API 세부 정보는 AWS SDK for Kotlin API 참조Publish를 참조하십시오.

PHP
SDK for PHP
참고

더 많은 것이 있어요 GitHub. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * Sends a text message (SMS message) directly to a phone number using Amazon SNS. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $message = 'This message is sent from a Amazon SNS code sample.'; $phone = '+1XXX5550100'; try { $result = $SnSclient->publish([ 'Message' => $message, 'PhoneNumber' => $phone, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }
Python
SDK for Python (Boto3)
참고

더 많은 것이 있어요 GitHub. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

class SnsWrapper: """Encapsulates Amazon SNS topic and subscription functions.""" def __init__(self, sns_resource): """ :param sns_resource: A Boto3 Amazon SNS resource. """ self.sns_resource = sns_resource def publish_text_message(self, phone_number, message): """ Publishes a text message directly to a phone number without need for a subscription. :param phone_number: The phone number that receives the message. This must be in E.164 format. For example, a United States phone number might be +12065550101. :param message: The message to send. :return: The ID of the message. """ try: response = self.sns_resource.meta.client.publish( PhoneNumber=phone_number, Message=message ) message_id = response["MessageId"] logger.info("Published message to %s.", phone_number) except ClientError: logger.exception("Couldn't publish message to %s.", phone_number) raise else: return message_id
  • API 세부 정보는 AWSSDK for Python (Boto3) API 참조Publish를 참조하십시오.