Sent.dm API로 SMS 및 WhatsApp 메시지 더 빠르게 보내는 방법

Ashley Innocent

Ashley Innocent

26 March 2026

Sent.dm API로 SMS 및 WhatsApp 메시지 더 빠르게 보내는 방법

요약 / 빠른 답변

Sent.dm API는 SMS와 WhatsApp을 아우르는 비즈니스 메시징을 위한 단일 통합 지점을 제공합니다. Sent를 Apidog와 함께 사용하면, 자격 증명을 환경에 저장하고, 일회성 스크립트 작성 없이 요청을 테스트하고, 웹훅 페이로드를 검증하며, 메시징 워크플로를 한 곳에 문서화할 수 있습니다.

소개

대부분의 메시징 프로젝트는 한 곳에서 속도가 느려집니다. API 자체는 어렵지 않지만, 운영 세부 사항이 빠르게 쌓이기 때문입니다. API 키, 발신자 ID, 템플릿 ID, 웹훅 보안, 채널 규칙, 그리고 실제 메시지를 맹목적으로 보내지 않고 모든 것을 테스트할 수 있는 깔끔한 방법이 필요합니다.

이것이 바로 Sent.dm이 흥미로운 이유입니다. Sent는 SMS 및 WhatsApp과 같은 앱 기반 채널을 위한 통합 메시징 API로, 단일 개발자 대면 인터페이스 뒤에서 라우팅 및 전송 로직을 처리합니다. 2026년 3월 26일에 검토된 Sent의 공개 문서를 기반으로, 이 플랫폼은 계정 확인, 채널 설정, 템플릿 기반 발송, 연락처, 웹훅 이벤트, 그리고 테스트를 위한 대시보드 플레이그라운드를 포함합니다.

💡
이 설정을 마찰 없이 진행하고 싶다면, Apidog가 훌륭한 동반 도구입니다. Sent API 레퍼런스를 가져오고, x-api-keyx-sender-id를 위한 재사용 가능한 환경을 생성하며, 메시지 생성 및 웹훅 처리와 관련된 테스트 시나리오를 구축하고, 완성된 컬렉션을 팀과 공유할 수 있습니다. 이 튜토리얼을 따라 하려면 Apidog를 무료로 다운로드하세요.
버튼

Sent.dm API가 해결하는 문제

Sent.dm은 각 제공업체별로 별도의 통합을 유지할 필요 없이 여러 메시징 채널을 통해 사용자에게 도달하고자 하는 팀을 위해 구축되었습니다. SMS API, WhatsApp 온보딩, 채널별 페이로드 형식, 그리고 자체적인 전송 모니터링을 직접 연결하는 대신, Sent는 이러한 복잡성을 하나의 플랫폼으로 추상화합니다.

공식 문서에서, 제품 스토리는 명확합니다:

메시징 시스템은 "텍스트를 보내고 다음으로 넘어가는" 것만이 아니기 때문에 이러한 조합은 중요합니다. 다음 사항들도 필요합니다:

실제 사용에서 더 큰 과제는 다음과 같습니다:

Application -> Message API -> Channel Rules -> Delivery Events -> Retry / Status Logic

모든 부분이 다른 도구에 존재한다면 디버깅이 느려집니다. 이런 상황을 방지하는 가장 쉬운 방법 중 하나는 처음부터 Apidog와 같은 API 플랫폼에서 전체 흐름을 모델링하는 것입니다.

Sent.dm API 작동 방식

Sent의 공개 문서는 이 플랫폼을 앱과 다운스트림 메시징 채널 사이의 지능형 미들웨어 레이어로 설명합니다. 약속은 간단합니다: 앱이 하나의 요청을 보내면, Sent는 라우팅 로직, 수신자 컨텍스트, 채널 가용성에 따라 최적의 전송 경로를 선택합니다.

개발자에게 가장 중요한 부분은 설정 순서와 자격 증명 모델입니다.

1. 계정 및 규정 준수 설정

공식 시작 흐름은 계정 생성, KYC(본인 확인) 검증, 그리고 비즈니스 설정으로 시작합니다. 이것은 선택 사항이 아닙니다. 메시징 제품은 규정 준수 규칙, 발신자 평판, 지역 제한과 관련이 있으므로, Sent는 계정 확인을 온보딩 경로의 일부로 만듭니다.

2. 채널 설정

Sent의 문서는 전화번호를 선택하고 WhatsApp Business를 연결하는 과정을 안내합니다. 문서는 SMS와 WhatsApp에 동일한 번호를 사용하여 채널 전반에 걸쳐 브랜드 아이덴티티를 일관성 있게 유지할 것을 권장합니다.

3. 템플릿

템플릿은 워크플로의 핵심 부분입니다. 시작 가이드에서 Sent는 첫 API 요청을 보내기 전에 템플릿을 생성하도록 안내합니다. 이는 템플릿 기반 메시징이 여기에서 예외적인 경우가 아님을 보여주는 좋은 신호입니다. 이는 기본 경로의 일부입니다.

4. API 자격 증명

문서에는 두 가지 자격 증명이 나와 있습니다:

x-sender-id: YOUR_SENDER_ID
x-api-key: YOUR_API_KEY

v3 API 레퍼런스는 x-api-key를 필수 인증 헤더로 강조합니다. 시작 예제에는 메시지 요청을 위한 x-sender-id도 포함되어 있습니다. 이를 프로덕션에 구현할 때는 Sent 대시보드에서 현재 작업 공간 및 엔드포인트 버전에 대한 정확한 헤더 요구 사항을 확인하세요. 문서에는 v3 참조 보기와 v2 메시지 예제가 모두 나와 있기 때문입니다.

5. 메시지 요청

시작 가이드는 다음과 같은 요청을 보여줍니다:

POST https://api.sent.dm/v2/messages/phone

다음과 같은 JSON 페이로드를 사용합니다:

{
 "phoneNumber": "RECIPIENT_PHONE_NUMBER",
 "templateId": "TEMPLATE_ID"
}

이는 첫 번째 구현 목표에 대한 중요한 점을 알려줍니다. 가장 빠른 경로는 거대한 옴니채널 오케스트레이션 서비스를 구축하는 것이 아닙니다. 템플릿 기반 발송을 올바르게 설정한 다음, 요청 및 전송 동작을 안정적으로 관찰할 수 있게 되면 워크플로를 확장하는 것입니다.

첫 Sent.dm API 요청 보내기

테스트하기 쉽고 유지보수하기 쉬운 방식으로 첫 번째 요청을 만들어 봅시다.

cURL 예시

curl -X POST "https://api.sent.dm/v2/messages/phone" \
 -H "x-sender-id: YOUR_SENDER_ID" \
 -H "x-api-key: YOUR_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
 "phoneNumber": "RECIPIENT_PHONE_NUMBER",
 "templateId": "TEMPLATE_ID"
 }'

JavaScript 예시

const response = await fetch("https://api.sent.dm/v2/messages/phone", {
 method: "POST",
 headers: {
 "x-sender-id": process.env.SENT_SENDER_ID,
 "x-api-key": process.env.SENT_API_KEY,
 "Content-Type": "application/json"
 },
 body: JSON.stringify({
 phoneNumber: process.env.TEST_PHONE_NUMBER,
 templateId: process.env.SENT_TEMPLATE_ID
 })
});

if (!response.ok) {
 throw new Error(`Sent request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python 예시

import os
import requests

response = requests.post(
 "https://api.sent.dm/v2/messages/phone",
 headers={
 "x-sender-id": os.environ["SENT_SENDER_ID"],
 "x-api-key": os.environ["SENT_API_KEY"],
 "Content-Type": "application/json",
 },
 json={
 "phoneNumber": os.environ["TEST_PHONE_NUMBER"],
 "templateId": os.environ["SENT_TEMPLATE_ID"],
 },
 timeout=30,
)

response.raise_for_status()
print(response.json())

시작 문서에 따르면, 성공적인 응답은 HTTP 200messageId를 반환합니다. 이 messageId는 Apidog 테스트, 애플리케이션 로그, 지원 워크플로, 웹훅 조정에서 캡처하려는 값입니다.

Apidog에서 Sent.dm API 테스트하기

여기에서 Apidog는 단순히 요청 실행기 이상의 역할을 합니다. 요청, 변수, 테스트 어설션, 문서, 그리고 팀 핸드오프가 모두 함께 존재할 때 메시징 API는 더 쉽게 작업할 수 있습니다.

1단계: Sent 환경 생성

Apidog에서 다음과 같은 변수를 포함한 환경을 생성합니다:

base_url = https://api.sent.dm
sender_id = YOUR_SENDER_ID
api_key = YOUR_API_KEY
template_id = YOUR_TEMPLATE_ID
test_phone = RECIPIENT_PHONE_NUMBER

환경 변수를 사용하면 즉시 세 가지 이점을 얻을 수 있습니다:

  1. 예제에 프로덕션 비밀 값을 하드코딩하는 것을 피할 수 있습니다.
  2. 샌드박스, 스테이징, 실제 계정 간에 더 빠르게 전환할 수 있습니다.
  3. 팀원들이 자신만의 보안 값으로 동일한 컬렉션을 재사용할 수 있습니다.

2단계: 요청 한 번 빌드하기

Apidog에서 새 요청을 생성합니다:

- x-sender-id: {{sender_id}} - x-api-key: {{api_key}} - Content-Type: application/json

{
 "phoneNumber": "{{test_phone}}",
 "templateId": "{{template_id}}"
}

이는 팀이 정확한 페이로드 형태, 인증 모델, 예상 응답을 한 곳에서 검사할 수 있으므로 일회성 터미널 테스트보다 이미 더 좋습니다.

3단계: 어설션 추가

Apidog에서 성공 경로를 검증하는 테스트를 추가합니다.

예제 검사:

pm.test("Status is 200", function () {
 pm.response.to.have.status(200);
});

pm.test("Response contains a messageId", function () {
 const json = pm.response.json();
 pm.expect(json.messageId).to.exist;
});

이러한 검사는 미묘한 실수를 빠르게 잡아내는 데 도움이 됩니다. API 변경, 자격 증명 교체 또는 템플릿 문제 후 요청이 메시지 ID를 반환하지 않으면 즉시 확인할 수 있습니다.

4단계: 시나리오로 만들기

Apidog는 단일 요청에서 워크플로로 전환할 때 훨씬 더 유용해집니다:

  1. 메시지 전송
  2. 반환된 messageId 저장
  3. 설정이 해당 흐름을 노출하는 경우 다운스트림 상태 쿼리
  4. 웹훅을 통해 수신된 메시지 이벤트 비교

단 한 번의 성공적인 POST가 비즈니스 흐름이 건강하다는 것을 의미하지 않기 때문에, 이것이 메시징 시스템에 대한 API 테스트의 올바른 수준입니다. 또한 승인, 전송, 재시도, 이벤트 일관성에도 신경을 써야 합니다.

5단계: 웹훅 예제를 동일한 컬렉션에 추가

전송 요청이 작동한 후, 팀이 수신할 것으로 예상하는 웹훅 이벤트에 대한 저장된 예제를 추가합니다. 이는 아웃바운드 요청과 인바운드 이벤트 처리를 모두 포함하는 단일 컬렉션을 제공합니다.

예를 들어, 웹훅 페이로드 예제를 저장하고 다음과 같은 필드를 문서화할 수 있습니다:

{
 "field": "message.status",
 "messageId": "msg_123",
 "status": "delivered",
 "channel": "whatsapp"
}

이는 빠르게 성과를 냅니다. 백엔드 엔지니어는 라이브 페이로드를 저장된 예제와 비교할 수 있고, QA는 이벤트 처리 로직을 검증할 수 있으며, 지원 팀은 로그를 뒤지지 않고도 메시지 상태가 무엇을 의미하는지 이해할 수 있습니다.

6단계: 내부 문서 게시

팀에 백엔드 엔지니어, QA, 지원 및 제품 이해 관계자가 동일한 메시징 흐름을 다루는 경우, Apidog의 문서화 레이어는 시간을 절약해줍니다. 채팅에서 cURL 스니펫 세트를 공유하는 대신, 다음을 포함하는 깔끔한 내부 참조를 게시할 수 있습니다:

이는 "이 스크립트를 실행하고 무슨 일이 일어났는지 알려줘"라는 것보다 훨씬 강력한 인수인계 방법입니다.

템플릿, 연락처, 웹훅을 올바르게 처리하기

첫 번째 요청이 200을 반환하는 것은 시작에 불과합니다. 실제 프로덕션 작업은 그 후에 시작됩니다.

템플릿

Sent의 온보딩 흐름은 템플릿, 특히 WhatsApp 관련 메시징에 강하게 중점을 둡니다. 즉, API 구현은 템플릿을 한 번 파일에 복사하고 잊어버리는 ID가 아니라 버전 관리되는 콘텐츠로 취급해야 합니다.

실용적인 패턴은 다음과 같습니다:

  1. 템플릿 ID를 환경 변수 또는 구성에 보관
  2. 각 템플릿에 목적, 로케일, 승인 상태별로 레이블 지정
  3. 테스트 템플릿과 실제 캠페인 템플릿 분리
  4. 어떤 템플릿이 어떤 사용자 여정에 매핑되는지 문서화

Apidog는 승인된 각 템플릿에 대한 예제 요청을 생성하고 이를 더 넓은 API 컬렉션과 함께 보관할 수 있으므로 이 부분에서 도움이 됩니다.

연락처

Sent 문서는 연락처를 최상위 기능 영역으로 다룹니다. 애플리케이션이 이미 내부적으로 사용자를 저장하고 있더라도, 메시징 플랫폼의 연락처 객체는 대상 수준 작업, 템플릿 타겟팅, 통신 기록에 유용합니다.

연락처 동기화 로직을 구축한다면, 다음 규칙들을 미리 문서화하십시오:

  1. 어떤 시스템이 신뢰할 수 있는 소스인가
  2. 전화번호가 어떻게 정규화되는가
  3. 수신 동의 또는 동의 상태가 어떻게 저장되는가
  4. 연락처가 채널을 변경할 때 어떤 일이 발생하는가

이러한 세부 사항은 나중에 정리할 문제가 아닙니다. 처음부터 전송 가능성 및 규정 준수에 영향을 미칩니다.

웹훅

Sent의 웹훅 문서는 실제 프로덕션 사용을 위한 플랫폼의 가장 중요한 부분 중 하나입니다. 문서는 다음을 포함한 헤더를 통한 HMAC-SHA256 서명 검증을 설명합니다:

또한 문서는 서명 형식을 v1,{base64_signature}로 설명하고, 5분 타임스탬프 창을 통한 리플레이 보호를 권장합니다.

이는 깔끔한 프로덕션 체크리스트를 제공합니다:

  1. 원시 요청 본문 읽기
  2. 파싱 전에 서명 확인
  3. 오래된 타임스탬프 거부
  4. 멱등성(Idempotently)으로 이벤트 처리
  5. 빠르게 승인하고 무거운 작업은 백그라운드 작업으로 이동

다음은 간결한 Express 예제입니다:

import crypto from "crypto";
import express from "express";

const app = express();

app.post("/webhooks/sent", express.raw({ type: "*/*" }), (req, res) => {
 const signature = req.header("x-webhook-signature");
 const webhookId = req.header("x-webhook-id");
 const timestamp = req.header("x-webhook-timestamp");
 const secret = process.env.SENT_WEBHOOK_SECRET;
 const rawBody = req.body.toString("utf8");

 const signedContent = `${webhookId}.${timestamp}.${rawBody}`;
 const expected = crypto
 .createHmac("sha256", Buffer.from(secret.replace(/^whsec_/, ""), "base64"))
 .update(signedContent)
 .digest("base64");

 if (signature !== `v1,${expected}`) {
 return res.status(401).send("Unauthorized");
 }

 const event = JSON.parse(rawBody);
 console.log("Received webhook event:", event.field);

 return res.sendStatus(200);
});

Apidog를 사용하여 웹훅 샘플 페이로드를 저장하고 예상 이벤트를 문서화하십시오. 이를 통해 프런트엔드, 백엔드 및 QA 팀이 동일한 메시지 수명 주기에 맞춰 조정하기가 더 쉬워집니다.

Apidog가 이 워크플로에 적합한 이유

Sent.dm은 메시징 레이어를 제공합니다. Apidog는 이 메시징 레이어 주변의 워크플로 레이어를 제공합니다.

실질적인 차이점은 다음과 같습니다:

작업Sent.dmApidog
SMS 및 WhatsApp 메시지 전송아니요, 하지만 해당 API를 테스트합니다.
템플릿 및 발신자 설정 관리관련 요청을 문서화하고 검증합니다.
인증된 요청 테스트플레이그라운드를 통한 기본 기능강력한 요청 빌더, 환경, 어설션, 시나리오
팀과 API 문서 공유플랫폼 문서팀 대상 컬렉션 및 생성된 문서
요청 및 응답 흐름 디버깅부분적반복 가능한 검사 및 협업에 더 적합
엔드투엔드 테스트 시나리오 구축메시징 중심다단계 API 워크플로 테스트에 더 적합

팀이 애플리케이션 메시징을 위해 Sent를 평가하고 있다면, Apidog는 Sent가 목표로 하지 않는 레이어, 즉 하나의 작업 공간에서 협업 API 설계, 테스트, 디버깅, 목업 계획 및 문서화를 다룹니다.

이는 최소한 세 가지 상황에서 유용합니다:

  1. 여러 개발자를 온보딩하고 공유 가능한 요청 컬렉션이 필요한 경우
  2. 맞춤형 스크립트를 작성하지 않고 QA가 메시징 API를 검증하도록 하려는 경우
  3. 버전 변경, 새 템플릿 또는 웹훅 페이로드를 테스트할 반복 가능한 장소가 필요한 경우

Apidog를 무료로 다운로드하여 Sent.dm 요청을 테스트하고, 메시징 환경을 안전하게 저장하며, 첫 번째 성공적인 API 호출을 재사용 가능한 팀 워크플로로 전환하세요.

버튼

고급 팁 및 일반적인 실수

기본 흐름이 작동하면, 이러한 실천은 통합을 더욱 신뢰할 수 있게 만듭니다.

모범 사례

  1. 자격 증명은 서버 측에만 보관합니다. Sent 문서는 클라이언트 측 코드에 API 키를 노출하는 것을 명시적으로 경고합니다.
  2. 애플리케이션 로그 및 지원 도구에서 messageId를 추적합니다.
  3. 스테이징 및 프로덕션 템플릿을 분리합니다.
  4. 모든 웹훅을 처리하기 전에 확인합니다.
  5. Apidog 환경을 사용하여 실제 자격 증명을 테스트 자격 증명과 격리합니다.

피해야 할 일반적인 실수

  1. 200 응답을 이벤트 수명 주기의 시작이 아닌 최종 전송 결과로 취급하는 것
  2. 여러 서비스에 템플릿 ID를 하드코딩하는 것
  3. 롤아웃 후반까지 발신자 ID 설정을 무시하는 것
  4. 전화번호를 일관되게 정규화하는 것을 잊는 것
  5. 다른 사람이 검사할 수 없는 임시 스크립트에서 실제 자격 증명으로 테스트하는 것

문제 해결 팁

요청이 작동하지 않으면 다음을 순서대로 확인하십시오:

  1. x-api-key가 유효하고 활성화되어 있습니까?
  2. 호출하는 엔드포인트가 Sent 작업 공간에 표시된 버전과 일치합니까?
  3. 해당 요청 경로에 x-sender-id가 필요합니까?
  4. 선택한 채널에 대해 템플릿이 승인되고 사용 가능합니까?
  5. 올바른 형식의 전화번호로 보내고 있습니까?

Apidog는 실패하는 요청을 알려진 양호한 저장된 요청과 몇 초 만에 비교할 수 있으므로 이 부분에서 도움이 됩니다.

Sent.dm 대안 및 비교

Sent.dm을 평가하고 있다면, 아마도 직접 제공업체 통합, 더 넓은 통신 플랫폼 또는 Postman과 같은 친숙한 API 클라이언트를 일상적인 테스트를 위해 고려하고 있을 것입니다. 주요 차이점은 제어 대 단순성이며, 테스트 레이어는 전송 레이어만큼 중요합니다.

옵션장점단점
직접 SMS + WhatsApp 제공업체세분화된 제어더 많은 통합 및 유지보수 작업
Twilio 스타일 통신 스택광범위한 생태계다중 채널 오케스트레이션을 위한 더 많은 구성 요소
Sent.dm채널 추상화를 통한 통합 메시징 워크플로Sent의 플랫폼 규칙 및 문서 구조에 의존
Sent.dm + Postman익숙한 요청 테스트 흐름문서화, 설계 및 광범위한 워크플로 협업이 더 파편화됨
Sent.dm + Apidog통합 메시징 및 강력한 API 테스트, 문서화, 협업 워크플로하나가 아닌 두 가지 도구 사용

개발 속도를 중요하게 생각하는 팀에게 최고의 설정은 종종 "모든 것을 위한 하나의 도구"가 아닙니다. 그것은 전송 플랫폼과 강력한 API 협업 레이어를 결합하는 것입니다. 이미 Postman을 사용하고 있다면, 여기에서 Apidog를 고려해야 할 가장 강력한 이유는 기본적인 요청 전송이 아닙니다. 환경, 저장된 문서, 어설션, 목업 계획, 그리고 팀 인수인계가 하나의 작업 공간에 모두 있다는 점입니다.

결론

Sent.dm은 별도의 채널 통합 대신 SMS와 WhatsApp을 위한 하나의 플랫폼을 원하는 팀에게 유용한 메시징 API입니다. 가장 큰 장점은 단순히 메시지를 보낼 수 있다는 점이 아닙니다. 템플릿, 발신자 ID, 연락처, 웹훅을 중심으로 보다 체계적인 방식으로 테스트하고 구축할 수 있다는 점입니다.

더 빠르게 움직이고 싶다면, Apidog에서 첫 Sent 요청을 구축하고, messageId에 대한 어설션을 추가한 다음, 동일한 작업 공간에 웹훅 계약을 문서화하는 것부터 시작하십시오. 이는 흩어진 스크립트와 구전 지식에 의존하는 것보다 프로토타입에서 프로덕션까지 더 깔끔한 경로를 제공합니다.

버튼

자주 묻는 질문

Sent.dm API는 무엇에 사용됩니까?

Sent.dm API는 단일 통합을 통해 SMS 및 WhatsApp과 같은 채널 전반의 비즈니스 메시징에 사용됩니다. 공식 문서에 따르면, 발신자 설정, 템플릿, 연락처, 웹훅 기반 이벤트 처리를 지원합니다.

Sent.dm은 하나의 API에서 WhatsApp과 SMS를 모두 지원합니까?

예. Sent는 채널별 복잡성을 단일 개발자 통합 뒤로 추상화하는 통합 메시징 API로 플랫폼을 포지셔닝합니다. 온보딩 문서 또한 SMS와 WhatsApp에 동일한 전화번호를 사용할 것을 권장합니다.

Sent.dm API 요청에 어떤 헤더가 필요합니까?

공개 문서는 x-api-key를 핵심 인증 헤더로 보여주며, 시작 메시지 예제 또한 x-sender-id를 사용합니다. 문서에 v3 및 v2 참조가 모두 나와 있으므로 프로덕션 배포 전에 Sent 계정에서 정확한 엔드포인트 버전을 확인하십시오.

Sent.dm으로 메시지를 보내기 전에 템플릿이 필요합니까?

시작 흐름의 경우, 그렇습니다. Sent의 온보딩 가이드는 템플릿을 생성한 다음 templateId를 사용하여 첫 메시지를 보내는 과정을 안내합니다.

맞춤형 스크립트 작성 없이 Sent.dm API를 테스트하려면 어떻게 해야 합니까?

Apidog는 이에 적합합니다. Sent 자격 증명을 환경 변수로 저장하고, 메시지 요청을 저장하며, 어설션을 추가하고, 다단계 시나리오를 구축하고, 웹훅 페이로드를 문서화하며, 나머지 팀을 위해 내부 API 문서를 게시할 수 있습니다.

Sent.dm 웹훅을 어떻게 보호해야 합니까?

HMAC 서명을 확인하고, 타임스탬프를 검증하며, 멱등성(idempotently)으로 이벤트를 처리하십시오. Sent 문서에는 확인을 위한 x-webhook-signature, x-webhook-id, x-webhook-timestamp와 같은 헤더가 설명되어 있습니다.

Sent.dm만으로 팀 API 워크플로에 충분합니까?

메시징 플랫폼 자체는 다루지만, 대부분의 팀은 여전히 테스트, 문서화, 반복적인 검증을 위한 협업 API 도구가 필요합니다. Apidog가 가치를 더하는 부분이 바로 여기입니다.

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요