스타키보청기 종로센터

상담신청 알림
Gmail + 텔레그램
초간단 세팅 가이드

목표는 딱 하나입니다.

고객이 사이트에서 상담신청을 남기면
1. 관리자 페이지에 저장되고
2. Gmail로 메일이 오고
3. 텔레그램으로 휴대폰 알림까지 옵니다.

작성일: 2026-06-27

이 문서는 돈 드는 문자/SMS 방식은 쓰지 않습니다.

0. 먼저 준비할 것

알림 받을 Gmail: stepano0116@gmail.com
휴대폰 2대에 Gmail 앱 설치
휴대폰 2대에 텔레그램 앱 설치
PC 또는 노트북에서 구글 계정 로그인
중요: 이 작업은 밤에 천천히 해도 됩니다. 중간에 막히면 저장해 둔 값만 잃어버리지 않으면 됩니다. 특히 텔레그램의 봇 토큰, 채팅방 ID, Google Apps Script의 웹 앱 URL 이 3개가 중요합니다.

1. Gmail 알림부터 켜기

1-1. 휴대폰 Gmail 앱 알림 켜기

  1. 휴대폰에서 Gmail 앱을 엽니다.
  2. stepano0116@gmail.com 계정으로 로그인합니다.
  3. Gmail 앱 왼쪽 위 메뉴를 누릅니다.
  4. 설정으로 들어갑니다.
  5. stepano0116@gmail.com 계정을 선택합니다.
  6. 알림전체 또는 모든 새 메일로 바꿉니다.
  7. 휴대폰 자체 설정에서도 Gmail 앱 알림이 꺼져 있지 않은지 확인합니다.
여기까지 하면 Gmail로 메일이 오는 순간 휴대폰에도 알림이 뜹니다. 단, 휴대폰이 무음 모드이거나 Gmail 알림이 꺼져 있으면 소리가 안 날 수 있습니다.

2. 텔레그램 알림방 만들기

2-1. 두 휴대폰에서 텔레그램 준비

  1. 두 휴대폰에 Telegram 앱을 설치합니다.
  2. 각 휴대폰 번호로 로그인합니다.
  3. 한 사람이 새 그룹을 만듭니다.
  4. 그룹 이름은 예를 들어 스타키 상담알림으로 만듭니다.
  5. 나머지 휴대폰 계정도 그 그룹에 초대합니다.

2-2. 텔레그램 봇 만들기

  1. 텔레그램 검색창에서 BotFather를 검색합니다.
  2. 파란 인증 표시가 있는 BotFather를 엽니다.
  3. /newbot 이라고 보냅니다.
  4. 봇 이름을 입력합니다. 예: 스타키 상담 알림
  5. 봇 사용자 이름을 입력합니다. 반드시 bot으로 끝나야 합니다. 예: starkey_jongno_alert_bot
  6. BotFather가 긴 토큰을 줍니다. 이 토큰을 메모장에 저장합니다.
봇 토큰 예시는 이런 모양입니다.
1234567890:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxx
이 값은 비밀번호처럼 다뤄야 합니다. 다른 사람에게 공개하지 마세요.

2-3. 봇을 알림방에 초대하기

  1. 방금 만든 스타키 상담알림 그룹을 엽니다.
  2. 그룹에 방금 만든 봇을 초대합니다.
  3. 그룹에 아무 말이나 보냅니다. 예: 테스트

2-4. 채팅방 ID 찾기

  1. 아래 주소에서 봇토큰 부분을 실제 토큰으로 바꿉니다.
https://api.telegram.org/bot봇토큰/getUpdates
  1. 브라우저 주소창에 넣고 Enter를 누릅니다.
  2. 나오는 글자 중 "chat":{"id": 뒤 숫자를 찾습니다.
  3. 그 숫자가 채팅방 ID입니다. 그룹이면 보통 -100으로 시작합니다.

3. Gmail + 텔레그램을 한 번에 보내는 코드

이 코드는 Google Apps Script에 붙여넣는 코드입니다. Gmail 알림과 텔레그램 알림을 둘 다 처리합니다.

아래에서 TG_TOKENTG_CHATID만 본인 값으로 바꾸면 됩니다.

var NOTIFY_TO = "stepano0116@gmail.com";
var TG_TOKEN = "여기에_텔레그램_봇토큰";
var TG_CHATID = "여기에_텔레그램_채팅방ID";

var CENTER_NAME = "스타키보청기 종로센터";
var CENTER_TEL = "02-733-7713";
var ADMIN_URL = "https://starkey.fit/admin.php";

function doPost(e) {
  try {
    var d = {};
    if (e && e.postData && e.postData.contents) {
      d = JSON.parse(e.postData.contents);
    }

    var name = (d.name || "").toString();
    var phone = (d.phone || "").toString();
    var email = (d.email || "").toString();
    var time = (d.time || d.timeLabel || "").toString();
    var score = (d.score != null ? d.score : "-");
    var risk = (d.risk || "-").toString();
    var ts = (d.ts || "").toString();

    var subject = "[상담신청] " + (name || "이름미상") + " / " + (phone || "-");
    var body =
      "새 상담신청이 접수되었습니다.\n\n" +
      "이름: " + name + "\n" +
      "연락처: " + phone + "\n" +
      "이메일: " + (email || "-") + "\n" +
      "희망 상담시간: " + (time || "-") + "\n" +
      "청력검사 점수: " + score + " (" + risk + ")\n" +
      "접수시각: " + (ts || "-") + "\n\n" +
      "관리자 페이지: " + ADMIN_URL;

    MailApp.sendEmail({
      to: NOTIFY_TO,
      subject: subject,
      body: body
    });

    if (TG_TOKEN && TG_CHATID) {
      var msg =
        "[새 상담신청]\n" +
        "이름: " + name + "\n" +
        "연락처: " + phone + "\n" +
        "희망시간: " + (time || "-") + "\n" +
        "점수: " + score + " (" + risk + ")\n" +
        "관리자: " + ADMIN_URL;

      UrlFetchApp.fetch("https://api.telegram.org/bot" + TG_TOKEN + "/sendMessage", {
        method: "post",
        payload: {
          chat_id: TG_CHATID,
          text: msg
        },
        muteHttpExceptions: true
      });
    }

    if (email && /\S+@\S+\.\S+/.test(email)) {
      MailApp.sendEmail({
        to: email,
        subject: "[" + CENTER_NAME + "] 상담신청이 접수되었습니다",
        body:
          (name ? name + " 님, " : "") + "안녕하세요. " + CENTER_NAME + "입니다.\n\n" +
          "상담신청이 정상적으로 접수되었습니다. 확인 후 연락드리겠습니다.\n\n" +
          "문의 전화: " + CENTER_TEL + "\n\n" +
          "감사합니다.\n" + CENTER_NAME
      });
    }

    return ContentService
      .createTextOutput(JSON.stringify({ ok: true }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    return ContentService
      .createTextOutput(JSON.stringify({ ok: false, error: String(err) }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

function doGet() {
  return ContentService.createTextOutput("OK - starkey notifier");
}

4. Google Apps Script에 붙여넣기

  1. PC에서 아래 주소로 들어갑니다.
https://script.google.com
  1. 새 프로젝트를 누릅니다.
  2. 처음 들어있는 코드는 전부 지웁니다.
  3. 이 문서의 3번 코드를 전부 붙여넣습니다.
  4. TG_TOKEN에 텔레그램 봇 토큰을 넣습니다.
  5. TG_CHATID에 텔레그램 채팅방 ID를 넣습니다.
  6. 저장 버튼을 누릅니다.

5. 웹 앱으로 배포하기

  1. 오른쪽 위 배포를 누릅니다.
  2. 새 배포를 누릅니다.
  3. 유형 선택에서 웹 앱을 고릅니다.
  4. 다음 사용자로 실행: 나
  5. 액세스 권한: 모든 사용자
  6. 배포를 누릅니다.
  7. 권한 검토 화면이 나오면 허용합니다.
  8. 마지막에 나오는 웹 앱 URL을 복사합니다.
웹 앱 URL은 이런 모양입니다.
https://script.google.com/macros/s/긴문자열/exec
이 URL을 사이트의 save-lead.php에 넣어야 최종 연결됩니다.

6. 사이트에 웹 앱 URL 넣기

서버 파일 위치는 아래입니다.

/var/www/hearing-aid/save-lead.php

이 줄을 찾습니다.

$NOTIFY_URL = '';

복사한 웹 앱 URL을 이렇게 넣습니다.

$NOTIFY_URL = 'https://script.google.com/macros/s/긴문자열/exec';
이 부분은 서버 파일 수정이 필요합니다. 직접 하기 불편하면 웹 앱 URL만 복사해서 작업자에게 전달하면 됩니다.

7. 테스트 방법

  1. 사이트에서 상담신청을 하나 테스트로 남깁니다.
  2. 관리자 페이지에 새 신청이 보이는지 확인합니다.
  3. stepano0116@gmail.com으로 메일이 왔는지 확인합니다.
  4. 텔레그램 스타키 상담알림 방에 메시지가 왔는지 확인합니다.
  5. 두 휴대폰에서 알림 소리가 나는지 확인합니다.

8. 안 될 때 보는 곳

메일은 오는데 텔레그램이 안 옴:
봇 토큰이나 채팅방 ID가 틀렸을 가능성이 큽니다. 채팅방 ID 앞의 마이너스 기호도 꼭 포함해야 합니다.
텔레그램은 오는데 Gmail 알림 소리가 안 남:
Gmail 앱 알림 또는 휴대폰 자체 앱 알림이 꺼져 있을 가능성이 큽니다.
둘 다 안 옴:
Google Apps Script의 웹 앱 URL이 save-lead.php에 아직 안 들어갔거나, 배포 권한이 모든 사용자가 아닐 가능성이 큽니다.