문의 관리
문의 관리는 고객이 Contact Us 폼을 통해 보낸 문의 내용을 확인하고, 처리 상태, 읽음 여부, 답변 여부, 내부 답변 메모를 관리하는 기능입니다.
이 화면은 공개 문의 폼으로 접수된 고객 문의를 관리하고, 각 문의가 읽혔는지, 답변되었는지, 완료되었는지를 추적할 때 사용합니다.
화면 개요
문의 관리 화면은 요약 카드, 검색 필터, 문의 목록으로 구성됩니다. 또한 Sample Popup을 통해 공개 Contact Us 폼을 다른 페이지에 붙여 넣을 수 있는 HTML, CSS, JavaScript 샘플 코드를 확인할 수 있습니다.
| 영역 | 설명 |
|---|---|
| 요약 카드 | 전체 문의, 신규 문의, 진행 중, 완료, 읽지 않음, 답변 대기 수를 보여줍니다. |
| 검색 필터 | 키워드, 상태, 읽음 여부, 답변 여부, 날짜 범위, 페이지 크기로 문의를 검색합니다. |
| 문의 목록 | 상태, 고객 정보, 제목, 읽음 여부, 답변 여부, 생성일, 관리 버튼을 보여줍니다. |
| 문의 상세 | 고객 정보, 문의 내용, 브라우저 정보, 관리자 관리 항목을 보여줍니다. |
| Sample Popup | 공개 Contact Us 폼을 페이지에 추가하기 위한 AJAX 샘플 코드를 제공합니다. |
요약 카드
요약 카드는 현재 문의 처리 현황을 빠르게 확인할 수 있도록 도와줍니다.
| 카드 | 의미 |
|---|---|
| Total | 시스템에 저장된 전체 문의 수입니다. |
| New | 현재 신규 상태로 표시된 문의 수입니다. |
| In Progress | 현재 처리 중인 문의 수입니다. |
| Completed | 처리가 완료된 문의 수입니다. |
| Unread | 아직 읽지 않은 문의 수입니다. |
| Unreplied | 아직 답변하지 않은 문의 수입니다. |
검색 필터
검색 필터는 특정 문의를 빠르게 찾기 위한 기능입니다.
| 필터 | 설명 |
|---|---|
| Keyword | 이름, 이메일, 제목, 메시지 내용으로 검색합니다. |
| Status | New, In Progress, Completed 등의 처리 상태로 필터링합니다. |
| Read | 읽음 또는 읽지 않음 상태로 필터링합니다. |
| Replied | 답변 완료 또는 답변 대기 상태로 필터링합니다. |
| From | 선택한 시작일 이후 생성된 문의를 검색합니다. |
| To | 선택한 종료일까지 생성된 문의를 검색합니다. |
| Page Size | 한 페이지에 표시할 문의 수를 설정합니다. |
| Search | 선택한 조건으로 검색을 실행합니다. |
| Reset | 검색 조건을 초기화하고 기본 목록으로 돌아갑니다. |
문의 목록
문의 목록은 현재 검색 조건에 맞는 Contact Us 제출 데이터를 보여줍니다.
| 컬럼 | 설명 |
|---|---|
| ID | 시스템 내부 문의 ID입니다. |
| Status | 현재 문의 처리 상태입니다. |
| Name | 문의자가 입력한 이름입니다. |
| 문의자의 이메일 주소입니다. | |
| Subject | 문의 제목입니다. 제목 아래에 메시지 일부가 표시될 수 있습니다. |
| Read | 문의가 읽혔는지 여부를 보여줍니다. |
| Replied | 문의에 답변했는지 여부를 보여줍니다. |
| Created | 문의가 접수된 날짜와 시간입니다. |
| Action | 문의 상세 화면을 여는 View 버튼을 제공합니다. |
문의 상세 페이지
문의 상세 페이지에서는 고객 정보, 문의 내용, 브라우저 정보, 관리자 관리 항목을 확인할 수 있습니다.
Customer Information
이 영역은 Contact Us 폼으로 제출된 고객 정보를 보여줍니다.
| 필드 | 설명 |
|---|---|
| Full Name | 문의자의 전체 이름입니다. |
| 문의자의 이메일 주소입니다. | |
| Phone Number | 문의자의 전화번호입니다. 입력되지 않을 수도 있습니다. |
| Company Name | 문의자의 회사명입니다. 입력되지 않을 수도 있습니다. |
| IP Address | 문의 제출 시 사용된 IP 주소입니다. |
| Referrer URL | 문의 폼이 열리거나 제출된 페이지 주소입니다. |
| Created | 문의 접수 날짜와 시간입니다. |
| Created By | Guest 또는 로그인 사용자 등 제출자 유형입니다. |
Inquiry Content
이 영역은 문의 제목, 메시지, 브라우저 정보를 보여줍니다.
| 필드 | 설명 |
|---|---|
| Subject | 문의자가 입력한 문의 제목입니다. |
| Message | 문의자가 입력한 문의 내용입니다. |
| User Agent | 문의 제출 시 사용된 브라우저와 기기 정보입니다. |
관리자 관리 영역
관리자 관리 영역에서는 문의 처리 상태를 변경하고 내부 답변 메모를 저장할 수 있습니다.
| 필드 | 목적 |
|---|---|
| Status | New, In Progress, Completed 등의 처리 상태를 설정합니다. |
| Read | 문의가 읽혔는지 여부를 설정합니다. |
| Replied | 답변 완료 여부 또는 답변 대기 상태를 설정합니다. |
| Replied By | 문의에 답변한 관리자 또는 담당자 이름을 기록합니다. |
| Reply Memo | 내부 답변 메모 또는 처리 내용을 에디터로 작성합니다. |
Reply Memo 영역은 관리자 내부 메모 또는 답변 처리 내역을 기록하기 위한 공간입니다. 팀에서 각 문의의 처리 이력을 추적할 때 도움이 됩니다.
Sample Popup
Sample Popup 버튼은 공개 Contact Us 폼을 다른 페이지에 추가할 수 있도록 바로 복사해서 사용할 수 있는 AJAX 샘플 코드를 보여줍니다.
샘플 코드에 포함되는 내용
- 공개 Contact Us 폼의 HTML 구조
- Contact Us 페이지 레이아웃용 CSS
- Anti-forgery Token을 불러오는 JavaScript 코드
fetch()를 사용하는 AJAX 제출 코드- 성공 및 오류 메시지 처리
- 필수 서버 엔드포인트 정보
바로 붙여 넣을 수 있는 AJAX Contact Us 샘플
샘플 코드는 다른 페이지에 바로 복사해서 사용할 수 있도록 구성되어 있습니다. 샘플 페이지 안에는 Razor 코드가 필요하지 않습니다.
필수 서버 엔드포인트
샘플이 동작하려면 아래 서버 엔드포인트가 필요합니다.
// Required endpoint summary
// 1) GET /ContactUs/Token
// returns anti-forgery token JSON
//
// 2) POST /ContactUs/Submit
// saves Contact Us data
//
// This sample HTML uses fetch('/ContactUs/Token') first,
// then submits to fetch('/ContactUs/Submit').
보안 토큰 흐름
공개 폼은 먼저 /ContactUs/Token을 호출하여 유효한 Anti-forgery Token을 가져옵니다.
이 토큰은 __RequestVerificationToken이라는 hidden input에 저장됩니다.
방문자가 폼을 제출하면 FormData가 /ContactUs/Submit으로 전송됩니다.
- JavaScript가
/ContactUs/Token을 호출합니다. - 서버가 Anti-forgery Token JSON을 반환합니다.
- JavaScript가 토큰을 hidden input에 저장합니다.
- 폼이
fetch('/ContactUs/Submit')으로 제출됩니다. - 서버가 토큰을 검증하고 문의 데이터를 저장합니다.
샘플 폼 필드
| Input Name | 목적 | 필수 여부 |
|---|---|---|
| FullName | 문의자의 전체 이름입니다. | 필수 |
| 문의자의 이메일 주소입니다. | 필수 | |
| PhoneNumber | 문의자의 전화번호입니다. | 선택 |
| CompanyName | 문의자의 회사명입니다. | 선택 |
| Subject | 문의 제목입니다. | 필수 |
| Message | 문의 내용입니다. | 필수 |
| __RequestVerificationToken | 안전한 폼 제출을 위한 Anti-forgery Token입니다. | 필수 |
공개 Contact Us 폼 샘플
아래 예시는 공개 Contact Us 폼의 기본 구조입니다. 실제 Sample Popup에서는 Copy Source 버튼으로 전체 소스를 복사할 수 있습니다.
<form id="contactUsForm" class="contact-form">
<input type="hidden"
id="__RequestVerificationToken"
name="__RequestVerificationToken"
value="" />
<input type="text" id="FullName" name="FullName" required />
<input type="email" id="Email" name="Email" required />
<input type="text" id="PhoneNumber" name="PhoneNumber" />
<input type="text" id="CompanyName" name="CompanyName" />
<input type="text" id="Subject" name="Subject" required />
<textarea id="Message" name="Message" required></textarea>
<button type="submit">Send Message</button>
</form>
권장 작업 순서
- Admin > CRM > Contact Us 메뉴로 이동합니다.
- 요약 카드에서 문의 현황을 확인합니다.
- 검색 필터로 원하는 문의를 찾습니다.
- View 버튼을 클릭해 문의 상세 화면을 엽니다.
- 고객 정보와 문의 내용을 확인합니다.
- 문의 상태, 읽음 여부, 답변 여부, 답변 메모를 업데이트합니다.
- Back to List 버튼으로 문의 목록으로 돌아갑니다.
- 공개 Contact Us 폼을 다른 페이지에 추가해야 할 경우 Sample Popup을 사용합니다.
자주 사용하는 작업
| 작업 | 권장 방법 |
|---|---|
| 읽지 않은 문의 확인 | Read 필터에서 읽지 않은 항목을 선택합니다. |
| 답변 대기 문의 확인 | Replied 필터에서 Pending 또는 Not Replied 항목을 선택합니다. |
| 고객 상세 정보 확인 | 문의 목록에서 View 버튼을 클릭합니다. |
| 응답 진행 상황 추적 | Status, Read, Replied, Replied By, Reply Memo를 업데이트합니다. |
| 웹사이트 페이지에 Contact Us 폼 추가 | Sample Popup을 열고 소스를 복사한 뒤 대상 페이지에 붙여넣습니다. |
주의사항
- 고객 이메일, 전화번호, IP 주소, 문의 내용은 신중하게 관리해야 합니다.
- 스팸이거나 더 이상 필요 없는 경우가 아니라면 문의 데이터를 함부로 삭제하지 않는 것이 좋습니다.
- Reply Memo를 사용해 내부 처리 내역을 명확하게 남기세요.
- 샘플 소스를 페이지에 붙여넣은 후에는 반드시 공개 Contact Us 폼을 테스트하세요.
- 샘플이 정상 작동하려면
/ContactUs/Token과/ContactUs/Submit이 필요합니다. - 토큰 로딩이 실패하면 공개 폼은 안전하게 데이터를 제출할 수 없습니다.
문제 해결
| 문제 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 문의가 보이지 않음 | 검색 조건이 너무 제한적이거나 아직 문의가 없을 수 있습니다. | Reset 버튼을 클릭한 뒤 다시 검색합니다. 공개 Contact Us 폼도 테스트합니다. |
| 폼 제출 실패 | Anti-forgery Token이 정상적으로 로드되지 않았을 수 있습니다. | /ContactUs/Token이 유효한 토큰을 반환하는지 확인합니다. |
| 샘플 폼이 데이터를 저장하지 않음 | Submit 엔드포인트가 없거나 요청이 차단되었을 수 있습니다. | /ContactUs/Submit이 존재하고 POST 요청을 받는지 확인합니다. |
| 문의 상태가 업데이트되지 않음 | 상세 페이지가 저장되지 않았거나 권한이 부족할 수 있습니다. | 상세 페이지를 다시 저장하고 관리자 권한을 확인합니다. |
| 스팸 문의가 들어옴 | 공개 폼이 자동화된 제출을 받고 있을 수 있습니다. | 필요한 경우 유효성 검사, Rate Limit, Captcha 또는 추가 스팸 방지 기능을 적용합니다. |
관리 권장 사항
- 신규 문의를 정기적으로 확인하세요.
- 문의 내용을 확인한 뒤 Read 상태로 변경하세요.
- 답변을 보낸 후에는 Replied 상태를 업데이트하세요.
- 추가 확인이 필요한 문의는 In Progress로 관리하세요.
- 처리가 끝난 문의는 Completed로 변경하세요.
- Reply Memo는 명확하고 전문적으로 작성하세요.
- Contact Us 샘플 폼은 실제 페이지에 공개하기 전에 반드시 테스트하세요.
Contact Us 문의에는 고객 연락처와 비즈니스 요청이 포함되는 경우가 많습니다. 신중하게 관리하고 처리 상태를 정확하게 유지하는 것이 중요합니다.