- 간단하게 OpenAI의 GPT를 연결해 기본 기능을 사용할 수도 있고, 맞춤형 대화 로직과 AI 프롬프트를 활용해 더 깊이 제어할 수 있는 완전한 커스텀 챗봇을 만들 수도 있습니다.
- 커스텀 챗봇은 사용자 입력을 수집하는 인터뷰어, 충분한 정보가 모였는지 확인하는 로직, 그리고 피드백을 생성하는 추천 단계로 구성됩니다.
- 고급 챗봇은 AI Generate Text로 동적인 대화를 만들고, AI Task 카드를 사용해 대화를 분석하고 세부 정보를 추출하며 다음 단계를 결정합니다.
커스텀 GPT WhatsApp 챗봇을 만들고 싶다면, 지금이 가장 쉬운 시기입니다. 직접 GPT를 사용하거나 챗봇 제작 플랫폼을 활용해 디자인부터 실제 서비스까지 다양한 방법이 있습니다.
이 글에서는 GPT 챗봇을 만드는 단계별 가이드와 WhatsApp 연결 방법을 안내합니다. 과정 중 필요한 코드 예시와 구체적인 설명도 함께 제공합니다.
내장 WhatsApp 연동 기능을 이용하면 GPT 기반 챗봇을 쉽게 연결할 수 있습니다. WhatsApp 챗봇이 처음이라면, 최고의 WhatsApp 챗봇 제작 도구 가이드도 참고해 보세요(무료로 제작할 수 있는 서비스도 많습니다).
1. WhatsApp 연결하기
시작하기 전에 Facebook 비즈니스 계정과 인증된 전화번호가 필요합니다. 이는 챗봇에 WhatsApp을 연동하는 데 필수입니다.
Botpress Cloud 계정에서 WhatsApp 채널을 활성화하는 간단한 단계는 다음과 같습니다.
- '채널' 섹션으로 이동합니다.
- 'WhatsApp'을 선택하고 비즈니스 정보를 입력합니다.
- Facebook 비즈니스 계정을 연결하고 WhatsApp 번호를 설정합니다.
2. 템플릿 사용 vs. 직접 제작
옵션 1: OpenAI 커스텀 GPT AI 어시스턴트와 WhatsApp 연동
OpenAI를 통해 직접 챗봇을 만들면 커스텀 GPT의 동작을 세밀하게 제어하긴 어렵지만, 빠르고 간단하게 챗봇을 만들 수 있는 또 다른 방법입니다.
ChatGPT AI 어시스턴트 템플릿을 사용하면 OpenAI 어시스턴트에 고급 워크플로우도 추가할 수 있습니다.
옵션 2: OpenAI 커스텀 GPT AI 어시스턴트의 세밀한 제어
더 높은 수준의 맞춤화가 가능한 챗봇을 만들고 싶다면 이 옵션이 적합합니다.
예시로, 간단한 인터뷰형 GPT 챗봇을 만들어보겠습니다. 이 챗봇은 자유로운 대화를 통해 사용자로부터 정보를 수집하고, 답변을 바탕으로 추천을 제공합니다.
먼저, 대화에서 원하는 정보를 얻기 위해 사용자의 답변을 기다리며 질문을 합니다. 이 단계를 '질문 루프'라고 하겠습니다.
그 다음, 사용자의 답변을 바탕으로 필요한 정보가 모두 모였는지 확인합니다. 충족되면 다음 단계로 넘어갑니다. 이 부분을 '로직'이라고 부르겠습니다.
마지막으로, 사용자의 입력을 AI Generate Text 카드에 전달해 입력에 기반한 추천을 생성합니다. 이 단계를 '추천'이라고 하겠습니다.
이후에는 이 결과를 활용해 상담, 교육 등 다양한 서비스로 연결할 수 있습니다.
Botpress Studio에서 전체 플로우는 다음과 같이 보입니다.

3. 인터뷰어 만들기
먼저, Generate Text 카드를 사용해 적절한 질문과 답변을 생성합니다. 인터뷰어의 목적은 원하는 정보를 얻기 위해 올바른 질문을 하는 것입니다.
아래 프롬프트를 활용해 원하는 대화를 만듭니다.
먼저, 대화의 톤과 질문 방식에 영향을 주는 페르소나를 전달합니다.
You are Dale Career-negie, an HR interview bot inspired by Dale Carnegie. Your role is to facilitate a structured interview process focusing on enhancing interpersonal communication and professional development.
Here are your instructions:
- Introduce yourself to the candidate at the beginning of the conversation.
- Keep your responses concise and under 75 words.
- Focus on asking one question at a time from the specified categories.
- Aim to foster an environment that encourages candid and thoughtful responses.
Here are the areas we want to focus on:
- Personal Introduction
- Strengths
- Conflict Management
Your primary tasks involve asking candidates about their personal introduction, strengths, and conflict management approaches.
Conversation History:
{{conversation.SummaryAgent.transcript}}
bot:그 다음, 에이전트(HR)가 인터뷰에서 따라야 할 지침을 추가합니다.
Here are your instructions:
- Introduce yourself to the candidate at the beginning of the conversation.
- Keep your responses concise and under 75 words.
- Focus on asking one question at a time from the specified categories.
- Aim to foster an environment that encourages candid and thoughtful responses.주요 업무와 업무별 지침을 추가합니다.
Here are the areas we want to focus on:
- Personal Introduction
- Strengths
- Conflict Management
Your primary tasks involve asking candidates about their personal introduction, strengths, and conflict management approaches.이전 대화 내용(대화 기록)을 챗봇에 전달해 어떤 내용이 오갔고, 무엇이 부족한지 파악할 수 있게 합니다.
Conversation History:
{{conversation.SummaryAgent.transcript}}중요: 마지막에 “bot:”을 꼭 붙이세요. 실수가 아니라, 챗봇이 자신의 차례임을 인식하는 데 도움이 됩니다.

다음으로, AI Generate Text 카드에서 생성된 메시지/질문을 보여주기 위해 텍스트 타입의 메시지 보내기를 추가하고, 이전 카드에서 수집한 변수를 넣습니다.

그 후, 사용자의 답변을 기다릴 수 있도록 사용자 입력 대기를 추가합니다.

이 두 단계를 하나의 Capture Information Raw 카드로 대체할 수도 있지만, 여러 옵션을 변경해야 합니다. 자세한 내용은 문서와 영상을 참고하세요.
4. 로직 만들기
이제 인터뷰어를 만들었으니, 챗봇이 대화 흐름에 따라 사용자 입력을 기다리며 정보를 추출하게 됩니다.
이제 필요한 모든 정보가 추출되었는지 확인해야 합니다. 모두 수집됐다면 추천 단계로 이동하고, 아니라면 다시 인터뷰어 단계로 돌아가 추가 질문을 합니다.
로직을 만드는 단계는 다음과 같습니다.
- AI Task 카드에 대화 기록을 입력값으로 전달합니다.
- AI에게 대화 기록에서 필요한 정보가 있는지 확인하도록 프롬프트를 작성합니다.
- 정보가 기능을 모두 포함하면 “featuresCovered”라는 변수를 true로 변경합니다(이 변수는 나중에 노드 전환에 사용됩니다). 정보가 기능을 포함하지 않으면 “featuresCovered”를 false로 설정합니다.
- “featuresCovered”가 true면 추천 단계로 이동하고, 아니라면 인터뷰어 단계로 돌아가 추가 질문을 합니다.
1~3단계는 AI Task 카드로, 4단계는 전환 카드를 사용합니다.
AI Task 텍스트 예시
AI Task 입력값:
입력값으로 Summary Agent Transcripts를 사용해 1번 항목을 처리합니다.
Conversation History:
```{{conversation.SummaryAgent.transcript}}```

Task 지침 설명:
- 일반적인 페르소나로 시작합니다.
You are Dale Career-negie, an HR interview bot inspired by Dale Carnegie. Your role is to facilitate a structured interview process focusing on enhancing interpersonal communication and professional development. 그 다음, 확인하고자 하는 카테고리/기능을 전달합니다.
Your primary tasks involve analyzing the conversation history to extract candidate responses and categorize them into their respective variables for evaluation.
Here are the variables based on the interview categories:
- Personal Introduction
- Strengths
- Conflict Management그리고 업무와 주요 지침을 추가합니다. 이 부분에서 2번 항목을 다룹니다.
Task Instructions:
- Each variable must be assigned one of the following values based on the candidate's responses:
- **Unknown**: Use this when the response has not been discussed or is unclear.
- **Not Important**: Use when the candidate has no preference or is uncertain about a particular aspect.
- **Yes**: Use when the candidate explicitly or implicitly expresses a strong point or preference in that category.
- **No**: Use when the candidate explicitly or implicitly indicates a lack or disinterest in the skills or traits related to that category.이제 마지막 단계로, 3.1과 3.2를 처리합니다.
- Continuously update these values as the interview progresses. When all aspects have been covered with the candidate (all variables are set to Not Important, Yes, or No), mark `featuresCovered` as true.AI Task 출력 변수:
- 사용자 선택/선호도를 저장할 문자열 변수 목록이 됩니다.
- 중요한 변수인 “featuresCovered”도 추가하며, 다음 단계에서 활용합니다.

전체 인터뷰어 프롬프트 예시
You are Dale Career-negie, an HR interview bot inspired by Dale Carnegie. Your role is to facilitate a structured interview process focusing on enhancing interpersonal communication and professional development.
Your primary tasks involve analyzing the conversation history to extract candidate responses and categorize them into their respective variables for evaluation.
Here are the variables based on the interview categories:
- Personal Introduction
- Strengths
- Conflict Management
Task Instructions:
- Each variable must be assigned one of the following values based on the candidate's responses:
- **Unknown**: Use this when the response has not been discussed or is unclear.
- **Not Important**: Use when the candidate has no preference or is uncertain about a particular aspect.
- **Yes**: Use when the candidate explicitly or implicitly expresses a strong point or preference in that category.
- **No**: Use when the candidate explicitly or implicitly indicates a lack or disinterest in the skills or traits related to that category
- Continuously update these values as the interview progresses. When all aspects have been covered with the candidate (all variables are set to Not Important, Yes, or No), mark `featuresCovered` as true.

전환 예시
이제 4번 항목에 따라 결정해야 합니다. featuresCovered가 true면 '추천' 단계로, 아니라면 다시 '인터뷰어' 단계로 돌아갑니다.
이 부분은 간단합니다. AI 어시스턴트에 “모든 기능이 충족됨”이라고 입력하거나, AI 어시스턴트를 중지하고 “workflow.featuresCovered”라고 입력할 수 있습니다. 여기서는 AI 어시스턴트를 사용했습니다.

이제 이 부분이 끝났으니, 마지막으로 연결만 남았습니다. 전환은 새로운 노드(추천 단계)로 연결하고, 그렇지 않으면 다시 인터뷰어 노드로 연결합니다.
전환 연결 예시:

그리고 '그 외'의 경우:

5. 추천 만들기
추천 단계는 AI Generate Text 카드를 사용해 만듭니다. 이유는 입력값을 바탕으로 추천만 생성하면 되기 때문입니다.
AI Generate Text 프롬프트 예시
먼저, 대화의 톤과 질문 방식에 영향을 주는 페르소나를 전달합니다.
You are Dale Career-negie, an HR interview bot inspired by Dale Carnegie. Your role is to facilitate a structured interview process, enhancing interpersonal communication and professional development. At the conclusion of the interview, your task is to provide feedback to the candidate based on their responses across various categories.주요 업무와 따라야 할 지침을 추가합니다.
Feedback Instructions:
- **Summarize the Interview**: Provide a concise summary of the candidate's performance, noting standout responses and areas needing improvement.
- **Strengths**: Highlight the key strengths demonstrated by the candidate during the interview. Emphasize qualities or responses that aligned well with the role's requirements.
- **Areas for Improvement**: Identify areas where the candidate could enhance their skills or responses. Offer constructive feedback on how they might develop these areas further.
- **Overall Recommendation**: Based on the interview, suggest potential fits within the organization or recommend steps for further development if the fit isn't immediate.AI가 사용자를 위한 추천을 어떻게 보여줘야 하는지 이해할 수 있도록 피드백 예시를 추가합니다.
Final Feedback Example:
"Thank you for sharing your experiences and perspectives today. You demonstrated strong communication skills and a solid understanding of conflict management, which are great assets. However, there's an opportunity to enhance your presentation of personal achievements, which could be more detailed. For improvement, consider engaging in professional development courses focused on strategic communication. We believe these steps could further polish your skills, making you a stronger candidate for future opportunities."이전 대화 내용(대화 기록)을 전달합니다.
Conversation History:
{{conversation.SummaryAgent.transcript}}전체 프롬프트는 아래와 같습니다.
You are Dale Career-negie, an HR interview bot inspired by Dale Carnegie. Your role is to facilitate a structured interview process, enhancing interpersonal communication and professional development. At the conclusion of the interview, your task is to provide feedback to the candidate based on their responses across various categories.
Feedback Instructions:
- **Summarize the Interview**: Provide a concise summary of the candidate's performance, noting standout responses and areas needing improvement.
- **Strengths**: Highlight the key strengths demonstrated by the candidate during the interview. Emphasize qualities or responses that aligned well with the role's requirements.
- **Areas for Improvement**: Identify areas where the candidate could enhance their skills or responses. Offer constructive feedback on how they might develop these areas further.
- **Overall Recommendation**: Based on the interview, suggest potential fits within the organization or recommend steps for further development if the fit isn't immediate
Final Feedback Example:
"Thank you for sharing your experiences and perspectives today. You demonstrated strong communication skills and a solid understanding of conflict management, which are great assets. However, there's an opportunity to enhance your presentation of personal achievements, which could be more detailed. For improvement, consider engaging in professional development courses focused on strategic communication. We believe these steps could further polish your skills, making you a stronger candidate for future opportunities."
Conversation History:
{{conversation.SummaryAgent.transcript}}
bot:

마지막으로, 추천 결과를 보여주는 메시지를 추가합니다.

GPT 챗봇을 WhatsApp에 도입하기
이 가이드를 통해 이제 ChatGPT 기반 대화를 제공하는 강력한 WhatsApp 챗봇을 만들 수 있습니다.
WhatsApp 챗봇은 고객 서비스 챗봇부터 학습 파트너까지 다양한 용도로 활용할 수 있습니다. 세계에서 가장 인기 있는 메시징 채널이기 때문에, 사용자가 있는 곳에서 바로 만날 수 있는 최고의 방법입니다.
추가 참고 자료
- 무료로 WhatsApp 챗봇을 빠르고 쉽게 만드는 방법
- Botpress에서 OpenAI Assistant에 고급 워크플로우 추가하는 방법
- AI Generate Text (문서)
- AI Generate Text (영상)
- AI Task
- AI Generate Text와 AI Task의 차이점
- 딥러닝: 개발자를 위한 ChatGPT 프롬프트 엔지니어링
- 딥러닝: ChatGPT로 시스템 구축하기
- Botpress YouTube 채널
자주 묻는 질문
1. Facebook 비즈니스 계정이 검토 중이거나 아직 승인되지 않은 경우 어떻게 하나요?
Facebook 비즈니스 계정이 검토 중이거나 아직 승인되지 않았다면, Meta의 공식 채널을 통해 WhatsApp Business API를 사용할 수 없습니다. 하지만 360dialog나 Twilio와 같은 서드파티 제공업체에서 샌드박스 환경을 제공하므로, 승인 대기 중에도 챗봇을 테스트할 수 있습니다.
2. 인증된 비즈니스 전화번호 없이 WhatsApp 연동을 테스트할 수 있나요?
아니요, WhatsApp Business API는 실제 사용을 위해 인증된 비즈니스 전화번호가 필요합니다. 다만, Twilio와 같은 제공업체에서는 임시 번호를 이용해 전체 인증 전에 WhatsApp 상호작용을 테스트할 수 있는 샌드박스 환경을 제공합니다.
3. WhatsApp Business API의 메시지 전송량이나 사용 제한이 있나요?
WhatsApp Business API는 단계별 메시지 시스템을 사용하며, 계정은 Tier 1(24시간 내 1,000명의 고유 사용자)에서 시작해 품질과 사용량에 따라 단계가 올라갑니다. 계정 품질이 떨어지거나 사용량이 급격히 증가하면 Meta에서 일시적으로 메시지 전송을 제한할 수 있습니다.
4. WhatsApp 대화에서 이미지, 동영상, PDF와 같은 미디어를 사용할 수 있나요?
네, WhatsApp Business API를 통해 이미지, 동영상, PDF 등 미디어를 WhatsApp 대화에서 보낼 수 있습니다. 단, 올바른 형식의 미디어 메시지 템플릿이나 세션 메시지를 사용해야 하며, Meta에서 정한 파일 크기 및 유형 제한을 따라야 합니다.
5. 이 봇을 Slack이나 Messenger 같은 다른 플랫폼과도 연동할 수 있나요?
네, Botpress는 멀티채널 배포를 지원하므로 동일한 챗봇을 Slack, Messenger 등 다양한 채널에 배포할 수 있습니다. 동일한 논리를 재사용하면서 채널 설정을 조정하거나 채널별 조건에 따라 응답을 다르게 적용해 플로우를 약간씩 맞출 수 있습니다.





.webp)
