대화봇을 만들어보자 - C / C++
2010.07.10 13:49 Edit
오늘은 대화봇을 만드는것에 대해서 조금 글을 써보려고 합니다.
대화봇에서 제일 중요한것은 DataBase (이하 'DB')입니다.
이 DB에는 봇이 어떤 말에 어떤 응답을 한다, 이런 내용이 들어가있는데,
이거 구축하기가 만만치가 않죠, 그래서 외부에 있는 DB를 불러다 쓸겁니다.
http://barosl.com 에서는 인클봇에서 쓰는 대화 DB를 제공합니다.
그 대화 DB를 API 형식으로 제공하는데 그것을 프로그램으로 구현해보았습니다.
옛날에 짰던 프로그램이라 내놓기 좀 그렇군여
cpp 파일이 안올라가는군요,
그렇다고 소스강조도 없고요 ㅠㅠ,
이게 인클봇 API가 리턴값이 텍스트만 나오는게 아니고 조금 특이하게 나옵니다.
그래서 직접 체크하는 코드를 짜야하는데,
본문소스의 핵심부분만 참조해보자면
gets(talk); -> talk에 입력을 받습니다
---------------------------------------------------
FILE * output = fopen("Buf.dll","w");
fprintf(output,"http://barosl.com/inklbot/api/talk.php?enc=cp949&q=");
fputs(talk,output);
fclose(output);
이 부분은 다운로드 받을 주소를 만드는 부분인데,
심히 부끄럽군요,
지금은 strcpy, strcat로 처리합니다,
띄어쓰기가 없다는 가정이 있다면 sscanf로 처리해주셔도 좋습니다.
---------------------------------------------------
URLDownloadToFile(0,link,"talk.dll",0,0); -> 대화 내용을 요청합니다
---------------------------------------------------
if(data[0]=='n'&&data[1]=='o'){
printf("모르는 말이에요.\n\n");
}
이부분에서 출력을 하는데,
no이면 그냥 글러먹은겁니다
그래서 빼줍니다.
---------------------------------------------------
else{
buf=strlen(data);
for(i=4;i<buf;i++){
if(data[i]=='$'){
i=i+4;
continue;
}
printf("%c",data[i]);
}
printf("\n\n");
}
아마 $가 특수치환자라 저렇게 +4로 건너띈걸거에요
---------------------------------------------------
대충 이럽니다 ㅋㅋ
그럼 소스 파일 한번 받아서 분석해보시길!
- [2011/10/28] 작은 로봇 하나 (3468)
- [2011/10/21] 완전 멋진 로봇 (1531)
- [2011/09/07] [아이씨엔]식음료 솔루션 및 기계제작을 위한 로크웰오토메이션 로드쇼 개최 (2514)
- [2011/08/01] 8월 1일 추천글감: 로봇이 아이폰 만드는 시대 오나? (2141)
- [2011/06/29] 따뜻한 포옹이 필요해? 이제 혼자서도 가능하다 (1875)

