Amazon SNS를 통한 SMS 메시지 전송 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

Amazon SNS를 통한 SMS 메시지 전송

JavaScript code example that applies to Node.js execution

이 Node.js 코드 예제는 다음을 보여 줍니다.

  • Amazon SNS에 대한 SMS 메시징 기본 설정을 가져오고 설정하는 방법

  • 전화번호를 점검하여 SMS 메시지 수신을 옵트아웃했는지 여부를 확인하는 방법.

  • SMS 메시지 수신을 옵트아웃한 전화번호의 목록을 가져오는 방법.

  • SMS 메시지를 전송하는 방법.

시나리오

사용자는 Amazon SNS를 사용하여 SMS 수신 가능한 디바이스에 문자 메시지 또는 SMS 메시지를 전송할 수 있습니다. 전화번호로 메시지를 직접 전송할 수 있으며, 전화번호에서 주제를 구독하고 메시지를 주제로 전송하여 메시지를 여러 전화번호로 한 번에 전송할 수 있습니다.

이 예에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS의 SMS 문자 메시지를 SMS 지원 디바이스에 게시합니다. 이 Node.js 모듈은 SDK for JavaScript에서 AWS.SNS 클라이언트 클래스의 다음 메서드를 사용하여 SMS 메시지를 게시합니다.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

SMS 속성 가져오기

Amazon SNS를 사용하여 전송을 최적화하는 방법(비용 또는 안정성 있는 전송), 월 지출 한도, 메시지 전송을 로깅하는 방법, 일일 SMS 사용 보고서를 구독하는지 여부 등 SMS 메시징에 대한 기본 설정을 지정합니다. 이러한 기본 설정을 검색하여 Amazon SNS의 SMS 속성으로 설정합니다.

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS에서 현재 SMS 속성을 가져옵니다. 파일 이름이 sns_getsmstype.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 가져올 개별 속성의 이름을 포함하여 SMS 속성을 가져오기 위한 파라미터를 포함하는 객체를 생성합니다. 사용 가능한 SMS 속성에 대한 자세한 내용은 Amazon Simple Notification Service API 참조의 SetSMSAttributes를 참조하세요.

이 예제에서는 SMS 메시지를 최저 비용이 발생하도록 메시지 전송을 최적화하는 Promotional로 전송할지 또는 최고 안정성을 달성하도록 메시지 전송을 최적화하는 Transactional로 전송할지를 제어하는 DefaultSMSType 속성을 가져옵니다. AWS.SNS 클라이언트 클래스의 setTopicAttributes 메서드에 파라미터를 전달합니다. getSMSAttributes 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 response를 처리합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create SMS Attribute parameter you want to get var params = { attributes: [ "DefaultSMSType", "ATTRIBUTE_NAME", /* more items */ ], }; // Create promise and SNS service object var getSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .getSMSAttributes(params) .promise(); // Handle promise's fulfilled/rejected states getSMSTypePromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sns_getsmstype.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

SMS 속성 설정

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS에서 현재 SMS 속성을 가져옵니다. 파일 이름이 sns_setsmstype.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 설정할 개별 속성의 이름과 각 속성에 설정할 값을 포함하여 SMS 속성을 설정하기 위한 파라미터를 포함하는 객체를 생성합니다. 사용 가능한 SMS 속성에 대한 자세한 내용은 Amazon Simple Notification Service API 참조의 SetSMSAttributes를 참조하세요.

다음 예제에서는 DefaultSMSType 속성을 Transactional로 설정하여 최고의 안정성을 달성하도록 메시지 전송을 최적화합니다. AWS.SNS 클라이언트 클래스의 setTopicAttributes 메서드에 파라미터를 전달합니다. getSMSAttributes 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 response를 처리합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create SMS Attribute parameters var params = { attributes: { /* required */ DefaultSMSType: "Transactional" /* highest reliability */, //'DefaultSMSType': 'Promotional' /* lowest cost */ }, }; // Create promise and SNS service object var setSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .setSMSAttributes(params) .promise(); // Handle promise's fulfilled/rejected states setSMSTypePromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sns_setsmstype.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

전화번호가 옵트아웃되었는지 여부 확인

이 예제에서는 Node.js 모듈을 사용하여 전화 번호가 SMS 메시지 수신에서 옵트아웃되었는지 여부를 확인합니다. 파일 이름이 sns_checkphoneoptout.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 파라미터로 확인할 전화번호를 포함하는 객체를 생성합니다.

이 예제에서는 확인할 전화번호를 지정하는 PhoneNumber 파라미터를 설정합니다. AWS.SNS 클라이언트 클래스의 checkIfPhoneNumberIsOptedOut 메서드에 객체를 전달합니다. checkIfPhoneNumberIsOptedOut 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 response를 처리합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create promise and SNS service object var phonenumPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .checkIfPhoneNumberIsOptedOut({ phoneNumber: "PHONE_NUMBER" }) .promise(); // Handle promise's fulfilled/rejected states phonenumPromise .then(function (data) { console.log("Phone Opt Out is " + data.isOptedOut); }) .catch(function (err) { console.error(err, err.stack); });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sns_checkphoneoptout.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

옵트아웃된 전화번호 나열

이 예제에서는 Node.js 모듈을 사용하여 SMS 메시지 수신에서 옵트아웃한 전화번호의 목록을 가져옵니다. 파일 이름이 sns_listnumbersoptedout.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 비어 있는 객체를 파라미터로 생성합니다.

AWS.SNS 클라이언트 클래스의 listPhoneNumbersOptedOut 메서드에 객체를 전달합니다. listPhoneNumbersOptedOut 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 response를 처리합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create promise and SNS service object var phonelistPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .listPhoneNumbersOptedOut({}) .promise(); // Handle promise's fulfilled/rejected states phonelistPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sns_listnumbersoptedout.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

SMS 메시지 게시

이 예제에서는 Node.js 모듈을 사용하여 SMS 메시지를 전화번호에 전송합니다. 파일 이름이 sns_publishsms.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. MessagePhoneNumber 파라미터를 포함하는 객체를 생성합니다.

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

이 예제에서는 메시지를 전송할 전화번호를 지정하는 PhoneNumber 파라미터를 설정합니다. AWS.SNS 클라이언트 클래스의 publish 메서드에 객체를 전달합니다. publish 메서드를 직접 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 간접 호출하기 위한 promise를 생성합니다. 그런 다음 promise 콜백에서 response를 처리합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create publish parameters var params = { Message: "TEXT_MESSAGE" /* required */, PhoneNumber: "E.164_PHONE_NUMBER", }; // Create promise and SNS service object var publishTextPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .publish(params) .promise(); // Handle promise's fulfilled/rejected states publishTextPromise .then(function (data) { console.log("MessageID is " + data.MessageId); }) .catch(function (err) { console.error(err, err.stack); });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node sns_publishsms.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.