티스토리 뷰
네이버 SMS API 연동하기
https://www.ncloud.com/product/applicationService/sens
NAVER CLOUD PLATFORM
cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification
www.ncloud.com
Simple & Easy Notification Service 이용 신청하기 > "+ 프로젝트 생성하기"
프로젝트 이름은 생성되면 수정할 수 없고 나머지는 변경할 수 있다.
아래와 같이 생성이 되고 서비스 ID 버튼을 눌러 소스코드에 넣을 "serviceid" 복사하여 개발할 소스에 붙여넣자
그리고 Access Key ID, Secret Key도 복사하여 소스에 붙여넣자
마이페이지 > 인증키 관리에서 확인할 수 있다.
이번에는 Calling Number 페이지로 이동하여 발신번호를 등록해야합니다.
빠른 테스트를 위해 유선번호는 사용하지 않고 핸드폰번호로 인증 받고 진행하였습니다.
인증키와 발신번호가 준비되었으니 이제 코드를 작성하자
https://api.ncloud-docs.com/docs/ko/ai-application-service-sens-smsv2
SMS API - SENS
api.ncloud-docs.com
가이드를 보고 작성하면 된다.
참고로 가이드에 나와있는 중괄호는 당연히 빼야한다.
한참을 고생한 것 같다.;;
POST https://sens.apigw.ntruss.com/sms/v2/services/{serviceId}/messages
아래와 같이 Javascript 함수를 만들었다.
var sms_auth = {
// 콘솔 > Simple & Easy Notification Service > Project > 서비스 ID
serviceid : "serviceId",
// 마이페이지 > 인증키 관리 > API 인증키 관리 > Access Key ID
access_key : "Access Key ID",
// 마이페이지 > 인증키 관리 > API 인증키 관리 > Secret Key
secret_key : "Secret Key",
}
var body = {
// 발신번호 사전 등록된 발신번호만 사용 가능
from : "발신번호",
// 수신번호 -를 제외한 숫자만 입력 가능
to: "수신번호",
subject : "테스트제목",
content : "테스트내용",
message : "테스트메시지"
}
function req_sms(sms_auth, body) {
var headers = {
method: "POST",
// 콘솔 > Simple & Easy Notification Service > Project > 서비스 ID
uri: "/sms/v2/services/"+`${sms_auth.serviceid}`+"/messages",
// API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주
timestamp: new Date().getTime(),
// 마이페이지 > 인증키 관리 > API 인증키 관리 > Access Key ID
access_key: `${sms_auth.access_key}`,
}
// Signature 생성하기
// 개행문자는 \n을 사용합니다.
// 요청에 맞게 StringToSign을 생성하고 SecretKey로 HmacSHA256 알고리즘으로 암호화한 후 Base64로 인코딩합니다.
// 이 값을 x-ncp-apigw-signature-v2로 사용합니다.
// 주의
// 요청 헤더의 x-ncp-apigw-timestamp 값과 StringToSign의 timestamp는 반드시 같은 값이여야 합니다.
var signaturebuild = headers.method + " " + headers.uri + "\n" + headers.timestamp + "\n" + headers.access_key
signaturebuild = Buffer.from(signaturebuild, 'utf8')
// 마이페이지 > 인증키 관리 > API 인증키 관리 > Secret Key
var hmac = crypto.createHmac('sha256', `${sms_auth.secret_key}`);
hmac.write(signaturebuild);
hmac.end();
var signature = hmac.read().toString('base64')
const options = {
uri:'https://sens.apigw.ntruss.com'+`${headers.uri}`,
method: `${headers.method}`,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'x-ncp-apigw-timestamp': `${headers.timestamp}`,
'x-ncp-iam-access-key': `${headers.access_key}`,
'x-ncp-apigw-signature-v2': `${signature}`
},
json:true,
body: {
"type":"MMS",
"contentType":"COMM",
"countryCode":"82",
"from":`${body.from}`,
"subject":`${body.subject}`,
"content":`${body.content}`,
"messages":[
{
"to":`${body.to}`,
"subject":`${body.subject}`,
"content":`${body.message}`
}
]
}
}
request.post(options, function(error, response, body){
if( error != null ) {
console.log('err:', error)
}
console.log('body:', body)
})
}
'개발 > API' 카테고리의 다른 글
네이버 Short URL API (0) | 2022.04.08 |
---|
- Total
- Today
- Yesterday
- raspberrypi serial
- whose view is not in the window hierarchy
- 다트 플러터
- USB Mass Storage
- artik710
- 루미니
- SHORT URL
- action bar
- 롯데캐슬
- AlertDialog
- setTimeout
- sms
- 어바니엘
- viewDidAppear()
- viewDidLoad()
- wsl lsblk
- wsl usb mount
- ProgressBar
- clearTimeout
- Shell Script
- Android Bar Color
- Window Status Bar
- Nginx #NodeJS #웹서버 #포트포워딩 #웹호스팅 #백엔드개발 #웹개발 #웹프로젝트 #서버관리 #웹애플리케이션
- Dart Flutter
- usbipd attach
- sms api
- Bad mode in Synchronous Abort handler detected
- Naver Cloud Platform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |