github 주소 : https://github.com/jst0951/naver-sens
안녕하세요. naver-sens의 개발자, codedbyjst입니다.
본 가이드에서는 naver-sens 패키지를 활용하는 방법 및 유의사항에 대해 알려드리겠습니다.
naver-sens는 Naver Cloud Platform의 API 서비스를 기반으로 동작하므로,
필요한 키값을 가져오기 위해 사이트/콘솔에서의 일부 작업이 필요합니다.
아직 회원이 아니시라면 회원가입을 진행하신 후, 아래의 과정을 따라와주세요.
1. 준비작업
1-1. access_key, secret_key 발급
Naver Cloud Platform의 API 서비스를 활용하기 위해선 API 인증키가 필요합니다.
해당 API 인증키는 다음 링크에서 발급 가능합니다.
https://www.ncloud.com/mypage/manage/authkey
위 페이지에서, 신규 API 인증키 생성을 클릭하시면 새로운 API 키가 발급되게 됩니다.
위의 이미지에서
'Access Key ID' : SensClient의 access_key
'Secret Key' : SensClient의 secret_key
가 됩니다. 두 키값 모두 필요하므로 메모해주세요.
1-2. service_id 발급
SENS(Simple & Easy Notification Service) 서비스는 Project를 기반으로 동작하므로,
작동을 위해 Project가 생성되고 지정되어야 합니다.
다음 링크로 접속하여 SENS 콘솔에 접근해주세요.
https://console.ncloud.com/sens/project
위 페이지에서 '프로젝트 생성하기' 버튼을 눌러주세요.
서비스 Type에서 SMS를 선택하시고, 원하시는 이름으로 설정해주시고 생성하기를 눌러주세요.
정상적으로 생성이 완료되면, 서비스 ID에 열쇠 모양 아이콘이 표시됩니다.
해당 아이콘을 클릭해주세요.
위에 이미지에서
ID : SensClient의 service_id
를 의미합니다. 해당 값을 메모해주세요.
1-3. 발신번호 등록
발신번호 사전등록제로 인해, 인터넷 서비스를 통해 SMS를 발신하고자 하는 이는 발신번호를 등록해야 합니다.
https://guide.ncloud-docs.com/docs/sens-callingno
자세한 가이드는(특히 법인이신 경우) 위 가이드를 따라주시면 되고,
아래의 가이드는 개인 핸드폰 번호를 발신번호로 등록하는 과정을 따라갑니다.
우선, 아래 링크의 SENS의 발신번호 등록 페이지에 접근해주세요.
https://console.ncloud.com/sens/sms-calling-number
우선 위의 프로젝트명이 방금 등록했던 프로젝트(위의 경우 testproject)인지 확인해주시고,
'발신번호 등록' 탭을 눌러주세요.
주의사항들을 확인해주시고 스크롤을 아래로 내려주시면, 핸드폰 인증을 하는 부분이 있습니다.
'본인인증(SMS)'를 눌러주세요.
이어서 나오는 창에서 SMS 인증을 진행해주시면 됩니다.
정상적으로 처리된 경우, 위와 같이 등록된 내역이 나오게 됩니다.
앞으로 발신 번호를 지정하실때 위처럼 등록된 번호만 사용 가능하다는 것을 꼭 기억해주세요.
2. API 활용
이로 인해 필요한 준비는 모두 갖추어졌습니다!
이제 직접 naver-sens 패키지를 활용해보도록 하겠습니다.
2-1. naver-sens 패키지 설치
naver-sens 패키지는 pypi에 등록되어 있으므로(https://pypi.org/project/naver-sens/)
pip를 통해 바로 설치할 수 있습니다.
pip install naver-sens
사용하시는 파이썬 환경에서 위 명령어를 실행해주세요.
위와 같이 필요한 모든 패키지를 다운로드받고 준비해주게 됩니다.
2-2. 문자 보내기
naver-sens를 통해 문자를 보내는 예시는 아래와 같습니다.
from naver_sens import SensClient
sens_client = SensClient(
service_id="ncp:sms:kr:298829194091:testproject",
access_key="mEFm77AiXuBFUfM0g9EI",
secret_key="JKo84GDVewLYYO8ALZqSc7j73kTziDEqy2NRSf6p")
resp = sens_client.send_message(
from_num="01012345678",
to_num="01087654321",
content="안녕하세요, naver-sens 테스트입니다!"
)
print(resp.content)
1. SensClient를 import합니다.
2. SensClient 객체를 생성합니다. 이때, 3가지의 파라미터가 주어져야 합니다.
service_id : SENS project의 project ID. [본 글의 1-2. 참조]
access_key : Naver Cloud Platform의 API Access Key ID [본 글의 1-1. 참조]
secret_key : Naver Cloud Platform의 API Access Key ID [본 글의 1-1. 참조]
3. 생성된 객체의 send_message함수를 이용해 문자를 전송합니다.
이때, 필수적으로 필요한 파라미터들은 아래와 같습니다.
from_num : 발신번호 [단, 사전에 등록되어야 합니다. 자세한 내용은 본 글의 1-3. 참조]
to_num : 수신번호
content : 메세지 내용
정상적으로 처리된 경우, requests의 Response 객체를 반환하게 됩니다.
아래의 내용은 파라미터 관련 안내사항입니다.
1. set_from_num
sens_client.set_from_num("01012345678")
resp = sens_client.send_message(
to_num="01087654321",
content="안녕하세요, naver-sens 테스트입니다!"
)
print(resp.content)
from_num은 send_message 함수 이전에 set_from_num 함수를 이용해서 사전에 설정하였다면 필요하지 않습니다.
2. 예약 시간 지정
resp = sens_client.send_message(
from_num="01012345678",
to_num="01087654321",
content="안녕하세요, naver-sens 시간 예약 테스트입니다!",
reserveTime="2023-04-14 16:20"
)
print(resp.content)
예약 시간을 지정하여 보낼 수도 있습니다.
다만 reserveTime을 지정할때 "yyyy-MM-dd HH:mm" 형태를 지켜야 함에 유의하세요.
SENS의 제한으로 인해, 초 단위 지정은 지원되지 않습니다.
또한, 기본적으로 reserveTime은 KST(UTC+9)를 기준으로 합니다.
그 외의 파라미터들은 SENS에서 지원하는 기능들을 이식한 것으로, 최대한 원래의 규약 그대로 이식되었습니다.
https://api.ncloud-docs.com/docs/ai-application-service-sens-smsv2
따라서 추가적인 기능이 필요하시다면 위의 문서를 참조해주세요.
2-3. 문자 보내기(MMS 이미지)
naver-sens는 이미지를 포함하여 문자를 보내는 기능 또한 지원합니다.
다만, 제한 사항들이 존재합니다.
1. 이미지의 확장자(포맷)는 반드시 .jpg나 .jpeg이여야 합니다.
2. 이미지의 최대 해상도는 1500*1440입니다.
사용 방법은 아래와 같습니다.
resp = sens_client.send_message_with_image(
from_num="01012345678",
to_num="01087654321",
content="이미지와 같이 보내진 메세지입니다!",
img_dir="./image.jpg")
print(resp.content)
이미지를 같이 전송하려면, send_message_with_image 함수를 사용하면 됩니다.
기존의 파라미터와 같이, 이미지가 저장된 경로인 img_dir을 설정해주면 됩니다.
위처럼 이미지와 메세지가 같이 전송되는 것을 볼 수 있습니다.
Conclusion.
naver-sens 패키지는 아직 SMS관련된 기능만을 지원하는 상황입니다만, 추후에 기타 기능들도 개발될 예정입니다.
여러분들이 많이 사용해주실수록, 더욱 힘내서 개발해보도록 하겠습니다.