순수한 파이썬으로 AI WhatsApp 봇을 만듭니다
이 안내서는 순수한 파이썬이있는 메타 (이전의 Facebook) 클라우드 API와 플라스크를 사용하여 WhatsApp 봇을 만드는 과정을 안내합니다. 또한 Webhook 이벤트를 통합하여 실시간으로 메시지를 수신하고 OpenAI를 사용하여 AI 응답을 생성합니다. 플라스크 응용 프로그램의 구조에 대한 자세한 내용은이 문서를 참조하십시오.
전제 조건
- 메타 개발자 계정 - 있지 않은 경우 여기에서 메타 개발자 계정을 만들 수 있습니다.
- 비즈니스 앱 - 그렇지 않은 경우 여기에서 비즈니스 앱을 만드는 법을 배울 수 있습니다. 비즈니스 앱을 만들 수있는 옵션이 없으면 기타 > 다음 > 비즈니스를 선택하십시오.
- 튜토리얼을 따르기 위해 Python에 익숙합니다.
목차
- 순수한 파이썬으로 AI WhatsApp 봇을 만듭니다
- 전제 조건
- 목차
- 시작하세요
- 1 단계 : 전화 번호를 선택하십시오
- 2 단계 : API로 메시지를 보냅니다
- 3 단계 : WebHooks를 구성하여 메시지를 수신합니다
- 앱을 시작하십시오
- Ngrok을 시작하십시오
- WhatsApp 통합
- 통합 테스트
- 4 단계 : Webhook Security 이해
- 5 단계 : API에 대해 배우고 앱을 구축하십시오.
- 6 단계 : AI를 응용 프로그램에 통합합니다
- 7 단계 : 전화 번호를 추가하십시오
- Datalumina
- 튜토리얼
시작하세요
- 개요 및 설정 : 여기서 여행을 시작하십시오.
- 봇을 찾으십시오 : 봇은 여기에서 찾을 수 있습니다.
- WhatsApp API 문서 : 공식 문서에 익숙해집니다.
- 유용한 가이드 : 다음은 메시지를 보내기위한 파이썬 기반 가이드입니다.
- 메시지 보내기위한 API 문서 :이 문서를 확인하십시오.
1 단계 : 전화 번호를 선택하십시오
- WhatsApp이 앱에 추가되어 있는지 확인하십시오.
- 메시지를 최대 5 개의 숫자로 보낼 수있는 테스트 번호로 시작합니다.
- API 설정으로 이동하여 메시지를 보낼 테스트 번호를 찾으십시오.
- 여기에서 메시지를 보내기 위해 숫자를 추가 할 수도 있습니다. 자신의 WhatsApp 번호를 입력하십시오.
- WhatsApp을 통해 전화로 코드를 받으면 번호를 확인합니다.
2 단계 : API로 메시지를 보냅니다
- API 액세스 섹션에서 24 시간 액세스 토큰을 얻으십시오.
- 터미널에서 보낼 수있는
curl 명령을 사용하여 메시지를 보내거나 Postman과 같은 도구를 사용하여 메시지를 보내는 방법의 예를 보여줍니다. - 요청 라이브러리를 사용하여 파이썬 함수로 변환합시다.
-
example.env 를 바탕으로 .env 파일을 작성하고 필요한 변수를 업데이트하십시오. 비디오 예. - "Hello World"메시지를 받게됩니다 (메시지의 경우 60-120 초 지연이 예상됩니다).
24 시간보다 오래 작동하는 액세스를 만듭니다
- 메타 비즈니스 계정 수준에서 시스템 사용자를 만듭니다.
- 시스템 사용자 페이지에서 시스템 사용자의 자산을 구성하여 WhatsApp 앱을 완전히 제어하여 할당하십시오. 변경 사항 저장 버튼을 클릭하는 것을 잊지 마십시오.
- 여기에서 1 단계를 참조하십시오
- 여기 2 단계를 참조하십시오
- 이제
Generate new token 하고 앱을 선택한 다음 액세스 토큰이 얼마나 오래 유효 할 것인지 선택하십시오. 60 일을 선택하거나 만료되지 않을 수 있습니다. - WhatsApp을 선택했을 때 오류가 발생했을 때 모든 권한을 선택하십시오.
- 액세스 토큰을 확인하고 복사하십시오.
이제 앱 대시 보드 에서 다음 정보를 찾아야합니다.
- app_id : "<your-whatsapp-business-app_id>"(앱 대시 보드에서 찾을 수 있음)
- app_secret : "<your-whatsapp-business-app_secret>"(앱 대시 보드에서 찾을 수 있음)
- Recepitient_Waid : ""(이것은 WhatsApp ID, 즉 전화 번호입니다. 예제 테스트 메시지에 표시된대로 계정에 추가되어 있는지 확인하십시오.)
- 버전 : "v18.0"(메타 그래프 API의 최신 버전)
- Access_Token : ""(이전 단계에서 생성)
사용자에게 첫 번째 메시지로 템플릿 유형 메시지 만 보낼 수 있습니다. 그렇기 때문에 계속하기 전에 먼저 답장을 보내야합니다. 이것을 알아내는 데 2 시간이 걸렸습니다.
3 단계 : WebHooks를 구성하여 메시지를 수신합니다
이것은이 튜토리얼의 가장 어려운 부분입니다.
앱을 시작하십시오
- 파이썬 설치 또는 환경을 갖도록하고 요구 사항을 설치하십시오 :
pip install -r requirements.txt - run.py를 실행하여 플라스크 앱을 로컬로 실행하십시오
Ngrok을 시작하십시오
아래 단계는 NGROK 문서에서 가져온 것입니다.
Meta가 Ngrok 도메인과 인증서를 검증하기 때문에 정적 Ngrok 도메인이 필요합니다!
LocalHost에서 앱이 성공적으로 실행되면 Ngrok을 사용하여 인터넷에서 안전하게 가져 가겠습니다!
- Ngrok 사용자가 아닌 경우 Ngrok에 무료로 가입하십시오.
- Ngrok 에이전트를 다운로드하십시오.
- Ngrok 대시 보드로 이동하여 Authtoken을 클릭하고 Authtoken을 복사하십시오.
- 지침에 따라 Ngrok 에이전트를 인증하십시오. 한 번만해야합니다.
- 왼쪽 메뉴에서 클라우드 에지를 확장 한 다음 도메인을 클릭하십시오.
- 도메인 페이지에서 + 도메인 또는 + 새 도메인 생성을 클릭하십시오. (여기서 모든 사람이 하나의 무료 도메인으로 시작할 수 있습니다)
- 로컬 데스크탑의 터미널에서 다음 명령을 실행하여 Ngrok을 시작하십시오.
ngrok http 8000 --domain your-domain.ngrok-free.app
- NGROK는 LocalHost 응용 프로그램이 인터넷에 노출되는 URL을 표시합니다 (이 URL을 메타와 함께 사용하기 위해이 URL을 복사하십시오).
WhatsApp 통합
메타 앱 대시 보드에서 WhatsApp> 구성으로 이동 한 다음 편집 버튼을 클릭하십시오.
- Webhook의 콜백 URL 팝업 편집에서 Ngrok 에이전트가 제공 한 URL을 입력하여 콜백 URL 필드의 인터넷에 응용 프로그램을 노출시키고/webhook (예 : https://myexample.ngrok-free.app/webhook ).
- 검증 토큰을 입력하십시오. 이 문자열은 WebHook 엔드 포인트를 만들 때 설정됩니다. 원하는 문자열을 선택할 수 있습니다.
VERIFY_TOKEN 환경 변수에서이를 업데이트하십시오. - WhatsApp에 WebHook을 추가하면 WhatsApp은 NGROK를 통해 신청서에 유효성 검사 게시물 요청을 제출합니다. LocalHost 앱이 유효성 검사 요청을 받고 터미널에서
WEBHOOK_VERIFIED 수신하고 로그인합니다. - 구성 페이지로 돌아가서 관리를 클릭하십시오.
- Webhook Fields 팝업에서 메시지 필드 구독을 클릭하십시오. 팁 : 여러 필드를 구독 할 수 있습니다.
- 플라스크 앱과 NGROK가 실행중인 경우 메시지 옆에 "테스트"를 클릭하여 구독을 테스트 할 수 있습니다. 당신은 대문자로 테스트 메시지를받습니다. 이 경우 Webhook가 올바르게 설정됩니다.
통합 테스트
WhatsApp 제품과 관련된 전화 번호를 사용하거나 이전에 복사 한 테스트 번호를 사용하십시오.
- 이 번호를 WhatsApp 앱 연락처에 추가 한 다음이 번호로 메시지를 보내십시오.
- LocalHost 앱이 메시지를 수신하고 터미널에서 헤더와 본문을 기록합니다.
- 봇이 대문자로 회신하는지 테스트하십시오.
- 당신은 이제 봇을 성공적으로 통합했습니다! ?
- 이제 이것으로 시원한 것들을 급성하게 만들 시간입니다.
4 단계 : Webhook Security 이해
아래는 Meta Webhooks API 문서의 검증 및 보안에 대한 정보입니다. 코드에서 이미 구현되었지만 보안에서 무슨 일이 일어나고 있는지 더 잘 이해하기 위해 참조 할 수 있습니다.
확인 요청
원천
앱 대시 보드에서 WebHooks 제품을 구성 할 때마다 엔드 포인트 URL에 GET 요청을 보내드립니다. 확인 요청에는 다음 쿼리 문자열 매개 변수가 포함되어 있으며 엔드 포인트 URL의 끝에 추가됩니다. 그들은 다음과 같이 보일 것입니다.
GET https://www.your-clever-domain-name.com/webhook?
hub.mode=subscribe&
hub.challenge=1158201444&
hub.verify_token=meatyhamhock
이 예제의 경우 grify_token, meatyhamhock 선택할 수있는 문자열입니다. VERIFY_TOKEN 환경 변수에 저장하는 한 그것이 무엇인지는 중요하지 않습니다.
검증 요청 검증
원천
엔드 포인트가 확인 요청을받을 때마다 다음을 수행해야합니다.
- Hub.Verify_token 값이 앱 대시 보드에서 WebHooks 제품을 구성 할 때 TOKEN 필드에서 설정 한 문자열과 일치하는지 확인하십시오 (아직이 토큰 문자열을 설정하지 않았습니다).
- 허브로 응답하십시오 .Challenge 값.
페이로드 검증
원천
WhatsApp은 SHA256 서명으로 모든 이벤트 알림 페이로드에 서명하고 SHA256 =에 앞서 요청의 X-Hub-Signature-256 헤더에 서명을 포함시킵니다. 페이로드를 검증 할 필요는 없지만해야합니다.
페이로드를 확인하려면 :
- 페이로드와 앱의 앱 비밀을 사용하여 SHA256 서명을 생성하십시오.
- X-Hub-Signature-256 헤더의 서명과 서명을 비교하십시오 (SHA256 = 이후의 모든 것). 서명이 일치하면 페이로드가 진짜입니다.
5 단계 : API에 대해 배우고 앱을 구축하십시오.
개발자 문서를 검토하여 앱을 구축하고 메시지 보내기 방법을 배우십시오. 문서를 참조하십시오.
6 단계 : AI를 응용 프로그램에 통합합니다
이제 우리는 끝까지 연결을 겪었으므로 봇을 좀 더 영리하게 만들 수있는 다음 상류로 우리를 외치게 할 수 있습니다. WhatsApp_utils.py에서 자신의 generate_response() 함수를 제시하기 만하면됩니다.
쿠키 커터 예제로 OpenAi Assistans API를 검색 도구와 통합하려면 다음 단계를 따르십시오.
- 이 비디오를 시청하십시오 : OpenAi Assistants 튜토리얼
- OpenAI로 자신의 비서를 만들고 환경 변수에서
OPENAI_API_KEY 및 OPENAI_ASSISTANT_ID 업데이트하십시오. - 보조자에게 데이터 및 지침을 제공하십시오
- OpenAI_Service.py를 사용 사례로 업데이트하십시오.
- whatsApp_utils.py로
generate_reponse 가져 오십시오 - 새
generate_reponse() 함수를 사용하여 process_whatsapp_message() 업데이트합니다.
7 단계 : 전화 번호를 추가하십시오
프로덕션 사용 사례에 앱을 사용할 준비가되면 자신의 전화 번호를 사용하여 사용자에게 메시지를 보내야합니다.
WhatsApp 번호로 메시지를 보내기 시작하려면 전화 번호를 추가하십시오. 계정 정보 및 전화 번호를 관리하려면 개요 페이지를 참조하십시오. 그리고 WhatsApp 문서.
WhatsApp 고객 또는 비즈니스 앱에서 이미 사용중인 숫자를 사용하려면 해당 번호를 비즈니스 플랫폼으로 완전히 마이그레이션해야합니다. 숫자가 마이그레이션되면 WhatsApp 고객 또는 비즈니스 앱에 대한 액세스 권한을 잃게됩니다. 정보는 기존 WhatsApp 번호를 비즈니스 계정으로 마이그레이션하십시오.
전화 번호를 선택한 후에는 WhatsApp 비즈니스 계정에 추가해야합니다. 전화 번호 추가를 참조하십시오.
WhatsApp 비즈니스 API를 다루고 개인 번호에 영향을 미치지 않고 실험을 원할 때 몇 가지 옵션이 있습니다.
- 새 SIM 카드를 구입하십시오
- 가상 전화 번호
- 듀얼 SIM 전화
- 다른 장치를 사용하십시오
- 임시 번호 서비스
- 개발을위한 전용 장치
권장 사항 :보다 연장하거나 전문적인 목적을위한 경우 가상 전화 번호 서비스를 사용하거나 전용 장치에 새 SIM 카드를 구매하는 것이 좋습니다. 빠른 테스트의 경우 임시 번호로는 충분할 수 있지만 항상 보안 및 개인 정보 보호에주의하십시오. 숫자가 WhatsApp Business API와 관련이 있으면 비즈니스 API에서 비활성화하고 장치에서 환상하지 않는 한 장치의 일반 WhatsApp과 함께 사용할 수 없습니다.
Datalumina
이 문서는 Datalumina에 의해 귀하에게 제공됩니다. 우리는 데이터 분석가, 엔지니어 및 과학자들이 성공적인 프리랜서 비즈니스 ($ 100K+ /년, 재미있는 프로젝트, 행복한 고객)를 시작하고 확장하도록 도와줍니다. 우리가하는 일에 대해 자세히 알고 싶다면 웹 사이트를 방문하여 뉴스 레터를 구독 할 수 있습니다. 이 문서를 데이터 친구 및 동료와 자유롭게 공유하십시오.
튜토리얼
비디오 자습서는 YouTube 채널을 방문하십시오 : youtube.com/@daveebbelaar.