반응형
파이썬에서 문자메시지 보내는 법에 대해서 알아보겠습니다. twilio도 사용해 보았는데 그것도 편리하긴 하지만 보낼 수 있는 사람이 한정적이고 아직까지는 한국에서 사용할 때 불편한점이 있어서 네이버 클라우드 플랫폼의 서비스를 이용해보았습니다.
1. SENS 이용 신청
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](https://www.ncloud.com/product/applicationService/sens)
- 결제수단 등록해야 사용 가능
2. 프로젝트 생성
- 이건 어렵지 않으니 패스
3. 생성 후 서비스ID의 키 모양 클릭 → service_key
4. calling number 탭에서 발신번호 등록 (SMS 인증)
- 2개의 인증방법 중 1개만 해도 가능하니 좀 더 쉬운 문자인증으로 하세요
5. API 키 생성
- 위 페이지 (마이페이지 - 계정관리 - 인증키 관리) 접근 후
access_key
,secret_key
확인 - 관련 페이지에서 API 신청을 해야 사용 가능합니다(https://console.ncloud.com/apigw/subscription)
6. 전체코드
import hmac, hashlib, base64
import time, requests, json
def make_signature(secret_key, access_key, timestamp, uri):
secret_key = bytes(secret_key, 'UTF-8')
method = "POST"
message = method + " " + uri + "\\n" + timestamp + "\\n" + access_key
message = bytes(message, 'UTF-8')
signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
return signingKey
access_key = "9gllXXXXXXXXXXXXXXXX"
secret_key = "fqAfXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service_key = "ncp:sms:kr:XXXXXXXXXXXXXX:YYYYYYYYYY"
# <https://api.ncloud-docs.com/docs/ko/ai-application-service-sens-smsv2>
url = "<https://sens.apigw.ntruss.com>"
uri = f"/sms/v2/services/{service_key}/messages"
timestamp = int(time.time() * 1000)
timestamp = str(timestamp)
# 받는 상대방
number = "01000000000"
# message 내용
contents = "test sms"
header = {
"Content-Type": "application/json; charset=utf-8",
"x-ncp-apigw-timestamp": timestamp,
"x-ncp-iam-access-key": access_key,
"x-ncp-apigw-signature-v2": make_signature(secret_key, access_key, timestamp, uri)
}
# from : SMS 인증한 사용자만 가능
data = {
"type":"SMS",
"from":"01000000000",
"content":contents,
"subject":"SENS",
"messages":[
{
"to":number,
}
]
}
res = requests.post(url+uri,headers=header,data=json.dumps(data))
datas = json.loads(res.text)
reid = datas['requestId']
print("메시지 전송 상태")
print(res.text+"\\n")
주의사항
- 23년 3월 기준, 1달 50건 까지 무료 이후 추가요금 발생할 수 있으니 맞춰서 사용하세요
- 작성할 때 아래 포스팅을 참고했어요
반응형
'programming > python' 카테고리의 다른 글
(python) 파이썬으로 우분투 명령어 실행하기 (0) | 2024.01.24 |
---|---|
(pyenv) 파이썬 가상환경 설치(with pyenv) (0) | 2023.03.02 |
(python) 주기적으로 반복 실행 프로그램 (0) | 2023.02.24 |
(datetime) 파이썬 날짜 변환 (날짜 -> 나노세컨드 -> 날짜) (0) | 2023.01.26 |
(socket) 파이썬 소켓 통신 (0) | 2023.01.25 |