본문 바로가기
프로그램 (PHP,Python)

카카오톡 무료 챗봇을 활용한 스마트 홈 네트워크 API 연동 방법

by 날으는물고기 2024. 12. 14.

카카오톡 무료 챗봇을 활용한 스마트 홈 네트워크 API 연동 방법

카카오톡에서 무료 챗봇을 만들어 Home Assistant API와 연동하는 방법입니다. 이 챗봇은 AI를 활용해 사용자 질의를 처리하며 Home Assistant API를 통해 스마트 홈 데이터를 받아옵니다.

목차

  1. 카카오톡 채널 생성
  2. 카카오 i 오픈빌더로 챗봇 개발
  3. Home Assistant API 설정
  4. 챗봇과 Home Assistant API 연동
  5. AI를 통한 사용자 질의 처리
  6. 챗봇 배포 및 운영

1. 카카오톡 채널 생성

카카오톡 채널은 챗봇이 사용자와 소통할 플랫폼을 제공합니다.

1.1 카카오톡 비즈니스 계정 등록

  • 카카오톡 채널 관리자 센터 접속: 카카오톡 채널 관리자 센터에 접속하여 카카오 계정으로 로그인합니다. 계정이 없다면 신규 생성합니다.
  • 비즈니스 채널 신청
    1. ‘채널 만들기’ 버튼 클릭.
    2. 비즈니스 채널을 선택 후 생성.

1.2 채널 정보 설정

  • 기본 정보 입력
    • 채널 이름: ‘스마트홈 챗봇’ 등.
    • 카테고리: ‘IT/인터넷’ 선택.
    • 프로필 사진 및 배경 이미지 업로드.
  • 상세 정보 입력
    • 소개 메시지: ‘스마트 홈 제어를 도와드립니다!’.
    • 연락처 정보 입력.
  • 채널 생성 완료: 모든 정보를 입력한 후 ‘채널 만들기’ 버튼 클릭.

추가 팁: 고유한 채널 URL을 생성하여 사용자들이 더 쉽게 접근할 수 있도록 설정하세요.


2. 카카오 i 오픈빌더로 챗봇 개발

카카오 i 오픈빌더는 직관적인 인터페이스로 챗봇 개발 과정을 단순화합니다.

2.1 오픈빌더 접속 및 봇 생성

  • 오픈빌더 접속: 카카오 i 오픈빌더에 접속하여 카카오 계정으로 로그인합니다.
  • 새로운 봇 생성
    • ‘새로운 봇 만들기’ 클릭 > ‘일반 봇’ 선택.
    • 봇 이름, 언어, 설명 입력.

2.2 스킬과 시나리오 설정

  • 블록 생성 및 연결
    1. 좌측 메뉴에서 ‘시나리오’를 선택합니다.
    2. 기본 제공되는 ‘웰컴 메시지’ 시나리오를 수정하거나 새로운 시나리오를 추가합니다.
    3. ‘블록 추가’ 버튼을 클릭하여 새 블록을 생성합니다.
    4. 블록 이름을 입력하고, 해당 블록의 역할(예: 온도 조회 응답)을 정의합니다.
    5. 발화 조건 설정
      • 사용자가 입력할 수 있는 발화를 등록합니다.
      • 예: "현재 온도는?", "거실 온도 알려줘", "지금 실내 온도는?", "온도 확인해줘".
      • 다양한 표현을 등록해 사용자의 의도를 더욱 정확히 파악합니다.
    6. 응답 설정
      • 챗봇이 사용자에게 제공할 응답을 입력하거나, 스킬과 연동하여 동적 데이터를 반환하도록 설정합니다.
      • 예: "현재 거실의 온도는 25℃입니다."
    7. 블록 간 연결
      • 사용자가 다음 단계로 진행해야 할 경우, 다음 블록으로 연결을 설정합니다.
      • 연결 설정 방법
        • 블록을 선택한 뒤 ‘연결 추가’를 클릭하여 다음 블록과 연결합니다.
        • 드래그 앤 드롭 방식으로 블록을 시각적으로 연결 가능합니다.
        • 예: 사용자가 "다른 방 온도도 알려줘"라고 발화하면, 다른 온도 조회 블록으로 연결.

스킬 설정

  • 특정 기능(예: 온도 조회, 조명 제어 등)을 수행하는 스킬 생성.
  • 스킬 내부에서 외부 API 호출이나 응답 처리를 설정합니다.

예제

  • ‘온도 조회’ 스킬에서 사용자가 "거실 온도 알려줘"라고 하면 API 호출을 통해 응답합니다.
  • 블록 연결로 추가 발화가 이어질 경우, 다음 블록에 제어 흐름을 연결합니다.

추가 팁: 시나리오와 블록 이름을 체계적으로 관리하면 대규모 프로젝트에서 작업 효율이 높아집니다.


3. Home Assistant API 설정

Home Assistant는 스마트 홈 기기를 통합 관리하는 오픈소스 플랫폼입니다. API를 통해 외부 애플리케이션과 데이터를 주고받을 수 있습니다.

3.1 Home Assistant에서 API 활성화

  • HTTP 통합 설정 확인: configuration.yaml 파일에 http 항목이 설정되어 있는지 확인합니다. 기본적으로 API는 활성화되어 있습니다.
  • Long-Lived Access Token 생성
    1. Home Assistant 웹 인터페이스 우측 하단에서 프로필 아이콘 클릭.
    2. ‘Long-Lived Access Tokens’ 섹션에서 ‘토큰 생성’ 버튼 클릭.
    3. 토큰 이름 입력 후 생성된 토큰을 저장합니다. (한 번만 표시되므로 반드시 복사.)

3.2 API 테스트

  • API 호출 확인
    curl -X GET \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    http://YOUR_HOME_ASSISTANT_URL:8123/api/states/sensor.living_room_temperature
  • 응답 예시
    {
    "state": "24.5",
    "attributes": {
      "unit_of_measurement": "°C",
      "friendly_name": "거실 온도"
    }
    }

추가 팁: Postman을 사용하면 API 테스트를 더 시각적으로 수행할 수 있습니다.


4. 챗봇과 Home Assistant API 연동

이제 카카오 i 오픈빌더에서 챗봇이 Home Assistant API를 호출하도록 설정합니다.

4.1 외부 API 스킬 생성

  • 스킬 생성
    1. ‘스킬’ 메뉴에서 ‘스킬 추가’ 클릭.
    2. ‘외부 API 연동형’ 선택.
    3. 스킬 이름 입력 후 생성.

4.2 API 요청 설정

  • Request 설정
    • URL: http://YOUR_HOME_ASSISTANT_URL:8123/api/states/sensor.living_room_temperature
    • 메서드: GET
    • Headers:
      • Authorization: Bearer YOUR_ACCESS_TOKEN
      • Content-Type: application/json

4.3 API 응답 처리

  • Response 데이터 처리
    • JSON 응답에서 state 값을 파싱해 변수에 저장.
    • 사용자에게 전달할 메시지를 설정
      • 예: “현재 거실의 온도는 ${state}°C입니다.”

4.4 사용자 발화 연결

  • 사용자 발화 예시
    • “현재 온도는?”, “거실 온도 알려줘”, “방 온도 확인”, “집 안은 몇 도야?”, “온도 좀 보여줘”.
  • 연결 설정 방법
    1. 발화 등록
      • 사용자가 말할 수 있는 다양한 표현을 등록합니다.
    2. 발화 매핑
      • 해당 발화가 인식되면 ‘온도 조회’ 스킬이 실행되도록 설정.
    3. 추가 발화 처리
      • 사용자가 추가 정보를 요청하면 이를 처리할 블록으로 연결합니다.
      • 예: "다른 방 온도 알려줘" 발화를 새 블록과 연결.

4.5 기기 제어를 위한 POST 요청

  • 조명 켜기 예제
    • API URL: http://YOUR_HOME_ASSISTANT_URL:8123/api/services/light/turn_on
    • Headers:
      • Authorization: Bearer YOUR_ACCESS_TOKEN
      • Content-Type: application/json
    • Body:
      {
      "entity_id": "light.living_room"
      }
    • 응답 메시지 예시
      • “거실 조명이 켜졌습니다.”

추가 팁: 다양한 기기를 제어할 수 있도록 스킬을 확장하세요.


5. AI를 통한 사용자 질의 처리

챗봇이 다양한 사용자 발화를 이해하고 적절히 대응하기 위해 AI 기능을 활용합니다.

5.1 자연어 이해(NLU) 설정

  1. 의도(Intent) 설정
    • 사용자의 의도를 파악하기 위해 여러 의도를 정의합니다.
      • 예: '온도조회', '조명제어', '습도조회' 등.
  2. 학습 발화 등록
    • 각 의도마다 사용자가 말할 수 있는 다양한 표현을 등록합니다.
      • 예: '온도조회' 의도에 "현재 온도는?", "집 안이 얼마나 따뜻해?", "거실 온도 알려줘"
  3. 엔티티(Entity) 설정
    • 사용자 발화에서 추출해야 할 중요한 정보를 정의합니다.
      • 예: 장소, 기기 종류 등.

5.2 시나리오에 AI 적용

  1. 의도와 스킬 매핑
    • 특정 의도가 파악되면 해당 스킬이 실행되도록 설정합니다.
  2. Fallback 처리
    • 챗봇이 이해하지 못하는 발화에 대해서는 적절한 안내 메시지를 제공합니다.
      • 예: "죄송합니다, 이해하지 못했어요. 다시 말씀해주시겠어요?"

5.3 외부 AI 모델 연동

  • 더 고급의 자연어 처리를 위해 외부 AI 서비스를 연동할 수 있습니다.
  • OpenAI의 GPT 모델 등을 API를 통해 연동하여 복잡한 질의도 처리할 수 있습니다.
  • 단, 이 경우 추가 비용이 발생할 수 있으며, 데이터 보안에 유의해야 합니다.

6. 챗봇 배포 및 운영

이제 챗봇을 실제로 배포하여 사용자가 카카오톡을 통해 접근할 수 있도록 합니다.

6.1 채널 연결

  1. 오픈빌더에서 채널 연결하기
    • 좌측 메뉴에서 '채널 연결'을 선택합니다.
    • '카카오톡 채널'을 선택하고 '연결하기' 버튼을 클릭합니다.
    • 이전에 생성한 카카오톡 채널을 선택하고 연결을 완료합니다.

6.2 봇 검수 신청

  1. 검수 신청 필요 여부 확인
    • 기본적인 기능만 사용하는 경우 검수 없이 바로 배포할 수 있습니다.
    • 만약 특정 권한이나 기능을 사용하는 경우, 카카오의 검수를 받아야 할 수 있습니다.
  2. 검수 신청 방법
    • '검수' 메뉴에서 필요한 정보를 입력하고 검수 신청을 진행합니다.
    • 검수 기간은 보통 영업일 기준 3~5일 정도 소요됩니다.

6.3 챗봇 배포

  1. 봇 배포하기
    • 모든 설정과 검수가 완료되면 '배포' 메뉴에서 '배포하기' 버튼을 클릭합니다.
    • 배포가 완료되면 챗봇이 실제로 서비스에 적용됩니다.

6.4 테스트 및 모니터링

  1. 실제 대화 테스트
    • 카카오톡에서 연결된 채널을 친구 추가합니다.
    • 다양한 질문과 명령을 입력하여 챗봇이 제대로 응답하는지 확인합니다.
  2. 오류 수정 및 개선
    • 오픈빌더의 '로그' 기능을 활용하여 사용자와의 대화 내역을 확인하고 오류를 수정합니다.
    • 사용자 피드백을 반영하여 챗봇을 지속적으로 개선합니다.

이렇게 하면 무료로 카카오톡 챗봇을 만들어 Home Assistant API와 연동하여 스마트 홈 기기를 제어하거나 상태를 조회하는 기능을 구현할 수 있습니다. AI 기능을 활용하여 사용자와의 상호작용을 자연스럽게 만들고, 지속적인 개선을 통해 더 나은 서비스를 제공할 수 있습니다.

주의 사항

  • 보안: Home Assistant의 Access Token과 URL은 외부에 노출되지 않도록 주의해야 합니다.
  • 사용량 제한: 카카오 i 오픈빌더의 무료 사용량 한도를 확인하고, 초과 시 추가 요금이 발생하지 않도록 관리해야 합니다.
  • 데이터 관리: 사용자 데이터 및 로그는 개인정보 보호 규정에 따라 안전하게 관리해야 합니다.

참고 자료

728x90

댓글