오늘 로그에서는 Twilio 모듈을 이용하여 서버에서 휴대폰으로 SMS를 보내는 방법에 대해 알아보았다.
Twilio는 Programmable SMS, Programmable Audio, Authy 등의 다양한 문자, 전화, 인증과 관련된 기능을 Javascript를 포함한 다양한 언어로 모듈을 제공하고 있다.
Twilio에 회원가입을 하고 Twilio 콘솔에서 나만의 전화번호를 무료로 발급받을 수 있다. 이 전화번호를 이용하여 전 세계 32개국에서 전화번호로 위에서 말씀드린 문자, 전화, 인증과 관련된 연락을 할 수 있다.
이 외에도 너무 많은 기능을 지원하고 있어 사이트에서 확인해 보는 것을 추천한다.
(참고: https://www.twilio.com)
이 중에 내가 사용하고자 하는 모듈은 Programmable SMS 기능이다. Programmable SMS는 서버에서 유저에게 문자 메시지를 보내는 것을 도와준다. 그래서 이 기능을 이용하여 BillyZip 서비스에 유저가 가입할 때 서버에서 만든 인증번호를 유저의 휴대폰으로 보내고 유저가 인증번호를 정확히 입력하면 다음 절차로 넘어갈 수 있도록 하기 위한 목적으로 사용하고 있다.
먼저 필요한 것은 Twilio에 회원가입하고 나만의 전화번호를 받는 작업이다. 회원가입은 간단하니 넘어가도록 하겠다. 그러면 회원가입을 하게되면 콘솔에 접속할 수 있는데, 여기에서 제일 먼저 자신이 사용한 전화번호를 만들게 된다.
콘솔에 접속하게 되면 아래와 같은 화면이 보이게 되는데 나는 +17014017638 이라는 번호를 발급 받았다. 이 번호가 마음에 들지 않으면 다른 번호를 받을 수도 있고 다른 나라의 전화번호로 발급 받을 수도 있다.(과금이 필요한 것도 있다.)
이제 전화번호를 발급 받았으니 간단한 Twilio에서 제공하고 있는 테스트 예제를 통해 실제로 내 한국 휴대폰으로 문자를 전송해 보도록 하겠다.
Twilio Docs에 들어가면 굉장히 자세하게 다양한 기능들에 대해서 예제 코드와 함께 안내를 해주고 있다.
(참고: https://www.twilio.com/docs/sms/quickstart/node)
그럼 아래 예제 코드를 보면 먼저 자신의 ID와 인증 토큰이 필요한다.
// Download the helper library from https://www.twilio.com/docs/node/install
// Your Account Sid and Auth Token from twilio.com/console
// DANGER! This is insecure. See http://twil.io/secure
const accountSid = process.env.TWILIO_SID;
const authToken = process.env.TWILIO_AT;
const client = require('twilio')(accountSid, authToken);
client.messages
.create({
body: 'BillyZip 테스트입니다.',
from: 'process.env.TWILIO_FROM',
to: 'process.env.TWILIO_FROM'
})
.then(message => console.log(message.sid));
그리고 자신의 Node 서버에 twilio 모듈을 설치하고 import 한다.
npm i twilio
import 한 뒤에는 client.messages.create라는 메서드를 통해 자신이 보낼 SMS의 내용을 body에 적고, 위 예제에는 환경변수로 내용을 보호하고 있지만 from에는 자신이 발급받은 전화번호, to에는 SMS를 받을 상대방의 전화번호를 적으면 된다.
그리고 해당 노드를 실행시키면 입력한 대로 SMS가 오는 것을 확인할 수 있다.
백엔드 서버에서 휴대폰으로 문자를 보낼 수 있다는 점이 굉장히 신기했다. 하지만 이것만으로는 아무런 기능도 할 수 없기 때문에 이를 이용하여 휴대폰 인증 기능을 구현해 보고자 한다. 그 내용에 대해서는 기능을 구현한 후 다시 블로깅하도록 할 생각이다.