자신의 휴대폰 번호로 프로그래밍 방식 SMS를 보내고 싶으신가요? 비싼 통신사 API 비용을 지불하는 대신 Android 휴대폰을 SMS 게이트웨이로 사용할 수 있습니다. 그 방법을 알려드립니다.

개념

기존 SMS API(Twilio, MessageBird)는 통신사를 통해 메시지를 라우팅합니다. 전화번호를 임대하고 메시지당 비용과 월별 요금을 지불합니다.

휴대폰 기반 SMS 게이트웨이는 이 개념을 뒤집습니다. 즉, Android 휴대폰이 발신 장치가 됩니다. 서버가 메시지를 대기열에 넣고, 휴대폰이 이를 가져와 SIM 카드를 통해 보냅니다. 자신의 번호를 유지하고 통신사의 SMS 요금을 지불합니다.

필요한 것

  • 활성 SIM 카드가 있는 Android 휴대폰(8.0 이상)
  • MySMSGate 계정 (무료 생성)
  • MySMSGate Android 앱
  • 휴대폰용 Wi-Fi 또는 모바일 데이터

1단계: 계정 생성

mysmsgate.net/auth/register로 이동하여 가입하세요. 테스트용으로 10개의 무료 SMS가 제공되며 신용카드 정보는 필요하지 않습니다.

가입 후 대시보드에서 API 키를 확인할 수 있습니다. 앱 및 API 호출에 필요하므로 복사해 두세요.

2단계: Android 앱 설치

Android 휴대폰에 MySMSGate 앱을 다운로드하여 설치하세요:

앱을 열고 게이트웨이 설정으로 이동하여 API 키를 입력하세요. 앱이 서버에 연결되면 대시보드에 "온라인"으로 표시됩니다.

3단계: API를 통해 SMS 보내기

이제 단일 API 호출로 SMS를 보낼 수 있습니다:

cURL

curl -X POST https://mysmsgate.net/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+1234567890",
    "message": "Your appointment is tomorrow at 3 PM"
  }'

Python

import requests

response = requests.post(
    "https://mysmsgate.net/api/v1/send",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "to": "+1234567890",
        "message": "Your appointment is tomorrow at 3 PM"
    }
)
print(response.json())

JavaScript (Node.js)

const response = await fetch("https://mysmsgate.net/api/v1/send", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        to: "+1234567890",
        message: "Your appointment is tomorrow at 3 PM"
    })
});
const data = await response.json();
console.log(data);

PHP

$ch = curl_init("https://mysmsgate.net/api/v1/send");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer YOUR_API_KEY",
        "Content-Type: application/json"
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "to" => "+1234567890",
        "message" => "Your appointment is tomorrow at 3 PM"
    ]),
    CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
echo $response;

4단계: 전송 상태 확인

API는 전송 상태를 확인할 수 있는 SMS ID를 반환합니다:

curl https://mysmsgate.net/api/v1/sms?id=SMS_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

상태: pendingsendingsent (또는 오류 메시지와 함께 failed).

고급: 듀얼 SIM & 다중 기기

휴대폰에 두 개의 SIM 카드가 있다면, 어느 SIM 카드를 통해 보낼지 선택할 수 있습니다:

curl -X POST https://mysmsgate.net/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+1234567890",
    "message": "Hello!",
    "sim_slot": 1
  }'

여러 대의 휴대폰을 동일한 계정에 연결하고 특정 기기로 메시지를 라우팅할 수도 있습니다:

{
  "to": "+1234567890",
  "message": "Hello!",
  "device_id": "your-device-id"
}

휴대폰이 오프라인일 때 어떻게 되나요?

메시지는 서버에 대기열에 저장됩니다. 휴대폰이 다시 연결되면 보류 중인 메시지를 자동으로 가져와 보냅니다. 서버는 또한 휴대폰이 절전 모드일 경우 푸시 알림(FCM)을 보내 휴대폰을 깨웁니다.

비용 비교

월 500건의 SMS 기준:

제공업체월별 비용
Twilio$41+ (메시지 + 번호 + 등록)
MessageBird$35+
MySMSGate$15 (500건 × $0.03, 기타 수수료 없음)

이는 연간 $300 이상 절약하는 효과이며, 자신의 전화번호를 유지할 수 있습니다.

무료로 사용해보세요 — 10건의 SMS가 포함되어 있으며, 신용카드는 필요하지 않습니다.