Skip to content

아주대학교 공지사항 키워드 알리미 : 아공

Notifications You must be signed in to change notification settings

HyoTaek-Jang/agong

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

작업일지

21년 1월 25일

  • 카카오톡 채널 생성 및 프로필, 배경사진 제작

  • 왜 배경사진이 이상하게 들어가는지 노이해...

  • 각 사용자가 키워드를 추가하면 그 키워드에 대한 공지사항을 알려주는 어플

  • 오픈 빌더 신청

  • 피들러로 뜯어보니까 제목이랑 링크는 b-title-box 클래스에 담겨있음.

  • https://www.ajou.ac.kr/kr/ajou/notice.do 페이지 응답에는 10개씩!

  • express myapp을 했는데 vulnerabilities가 떳다.

    • 확인하니 jade에서 발생. 찾아보니 jade는 예전 버전이고 지금은 pug로 개명됐다 한다.
    • 하튼 걍 express myapp --view=ejs로 뷰 단을 그냥 애초에 ejs로 시작해버림
  • request get에서 문제 발생 unable to verify the first certificate

    • https 인증서를 사용할 수 없다는 그런 뜻?
    • 해결법 1 : 옵션으로 {rejectUnauthorized: false} 넣어줌
    • 해결법 2 : 모듈 열리는 곳에 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 삽입
  • 해결법 2와 헤더에 user-agent 넣어주는 것으로 공지사항 html 불러오기 성공

  • html에서 클래스로 데이터 빼와서 제목이랑 글 번호, 주소 빼오기 도전!

  • 처음엔 node-html-parser를 썻는데. cheerio가 더 난듯

  • 데이터 가져오기

    • cheerio를 통해 제이쿼리 용법을 사용 가능하게함
    • const $ = cheerio.load(body)로 $선언하고 이후 제이쿼리처럼 $ 가지고 사용하면 됨
    • 이번 경우엔 .each함수로 배열을 처리하고 text()로 innerHTML을 가져옴
    • 그 다음 공백 문자가 너무 많아. trim()으로 공백을 제거.
    • 요소의 attribute는 .attr("~")로 해결
    • 링크는 href 앞에 아주대 공지사항 도메인 주소를 넣어 해결
  • 디비설계, erd, 요구사항 정리, 기획 이런부분을 해야할듯 이제

21년 1월 26일

  • 크롤링 구현 완료
  • 웹페이지에 p태그로 띄우며 체크
  • data라는 객체에 배열로 저장
  • 나중에 카톡 메시지로 배포할땐 shortend link로 주는게 좋겠당
  • 자동 크롤링은 크론탭을 활용해서 해결하는 쪽으로 생각해보자
  • 메시지 쏘는건 event api가 있넹 유료긴한데 뭐...

21년 2월 9일

  • 오픈빌더 승인 완료.
  • 서버구축 시작.
  • ec2로 서버 만들고 퍼티로 우분투 키고 mysql이랑 노드 설치

mysql 설치

node 설치

노드 업데이트

sql, 워크벤치 연결

mysql 외부 접속 문제

21년 2월 27일

카카오 오픈빌더 도움말

엔티티

  • 엔티티란 봇이 이해할 수 있는 요어를 정리한 데이터 사전. 엔티티가 정의되어 있다면, 봇은 사용자 발화로부터 사용자의 의도에 맞는 동작 수행을 위한 주요 데이터를 추출할 수 있게 된다. 사용자 발화 : 사용자가 봇과 커뮤니케이션하기 위한 텍스트

엔티티의 구조

  • 엔티티의 구조를 미리 설계한 후 발화등록 작업을 진행하면 제작 과정이 훨씬 수월해짐. '나의 엔티티' 구조 : 사용자가 정의할 수 있는 엔티티는 [엔티티명], [대표엔트리], [동의어] 총 세 가지 요소로 구성됩니다

엔티티의 종류

  • 작업자가 직접 정의하는 '나의 엔티티', 미리 정의해놓은 '시스템 엔티티'로 나뉨.
  • 나의 엔티티에서는 봇이 알아 들어야 하는 주요 용어들을 대표 엔트리로 설정 하며 동의어 추가 가능.

시나리오

  • 시나리오는 봇 안에서 사용자가 경험할 수 있는 서비스 단위

  • 각 기능이라 보면 될 듯, 아공은 키워드 추가, 삭제, 보기 정도? -> 노노노노 시나리오는 큰 틀. 긍까 공지사항 이정도? 저 기능을 블록

  • 기본 시나리오는 모든 봇에 장착되며 3개 블럭을 포함

    1. 웰컴 블럭 : 봇이 처음만날때
    2. 폴백 블럭 : 발화의도를 이해하지 못할떄
    3. 탈출 블럭 : 사용자가 대화를 초기화하거나 탈출하고 싶을때
  • 되묻기 질문은 시나리오 설정에서 가능

봇 제네릭 메뉴

  • 하단 슬라이드 메뉴!! 여기에 사용법 안내 그런거 넣으면 될듯

블록

  • 사용자의 의도의 기본 단위. 인텐트라고도 불림. 1개의 블럭은 1개의 의도를 표현. 발화가 봇으로 유입되면 블록 안쪽 사전에 등록된 발화내용을 기반으로 사용자 의도가 파악되어 1개의 블록을 최종 추출
  • 블럭에는 사용자 예상 발화, 봇이 수행할 액션과 응답할 내용이 설계. 기능마다 블록으로 짜는거 같음! 키워드 삽입 삭제 보기

발화 패턴

  • 챗봇이 사용자 발화를 인식할 수 있도록 만드는 원리의 핵심은 패턴임.

발화 패턴을 만드는 기본 과정

  1. 사용자가 말할거 같은 발화문을 등록
  2. 문장 안에서 중요한 의미를 갖는 부분을 엔티티로 태깅
  • 중요한 부분은 엔티티로 태깅하면 조금씩 다르게 말해도 의도에 해당하는 블록을 선택해 보여줄 수 있다.

파라미터 설정

  • 파라미터는 봇이 사용자의 의도를 정확히 이해하기 위해 필요로 하는 데이터, 봇과의 대부분 대화는 파라미터 데이터를 채우는 작업. 만약 필요한 파라미터가 없으면 다시 되묻기도 합니다.
  • API 형태로 구성된 스킬은 데이터가 입력되면 들어온 데이터에 맞는 다양한 결과값을 보내준다.
  • 스킬에 보내지는 데이터 또한 파라미터이다.
  • 만약 지역별 날씨를 알려주는 스킬이면. 지역명을 스킬로 보내고 실제 날씨를 출력한다. 여기서 스킬로 보내지는 지역 정보가 파라미터 데이터이다.

카카오톡 챗봇 개발 중단 및 어플 내장 알림으로 변경

About

아주대학교 공지사항 키워드 알리미 : 아공

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages