Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

형관봇

[C#]Syn(SIML) Bot을 이용한 텔레그램 챗봇 만들기 본문

챗봇

[C#]Syn(SIML) Bot을 이용한 텔레그램 챗봇 만들기

최강도어 2017. 2. 18. 17:14

챗봇의 구조는 크게 2가지로 나눌 수 있습니다.


열린대화닫힌대화


SNS상에 이 구조를 쉽게 풀어쓴 글이 있어서 링크를 걸어놨습니다.

https://brunch.co.kr/@gentlepie/7


아래 그림은 이분께서 쓰신 내용중 2가지 대화의 구조화입니다.


그럼 간단하게, Syn Bot이란 API를 써서 닫힌 대화를 만들어 보겠습니다.


닫힌 대화중, 텔레그램 봇 부터 시작합니다.


http://hkbot.tistory.com/22 : [C#] 트위터 형태소 분석기


http://developer.syn.co.in/ : syn bot 홈페이지


http://simlbot.com/ : SIML 페이지 및 Syn Bot Studio 다운로드 페이지

Synthetic Intelligence Markup Language 라고 설명하네요


http://developer.syn.co.in/tutorial/bot-assistant/telegram-assistant.html : 텔레그램 봇 개발방법


위 3가지 링크에 모든 개발문서, API문서, Quick Start자료 등이 상세하게 설명되어 있습니다.



우선, Syn Bot Studio를 설치 해보겠습니다.


 

설치 후 새 프로젝트를 생성합니다.





프로젝트를 만들었으면, 


[Project] -> [Hello Bot]을 오픈해서 기본셋팅을 확인해보겠습니다.



Model태그 안에 Pattern과 Response태그가 있습니다.


보기쉽고 이해하기 쉬운 구조로 되어있습니다.


HELLO BOT을 입력했을때 Hello User!라고 대답하는 것 같네요.


그럼 실행 해보겠습니다.



우선 F5를 눌러서 Build Project를 실행합니다.


Console 탭으로 가서 hello bot이라고 입력해보겠습니다.



소문자로 hello bot이라고 입력했음에도 잘 대답해주네요.


몇가지 패턴만 만들고 바로 텔레그램과 연동시켜보겠습니다.



Hello Bot.siml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<Siml>
  <Concept Name="Introduction">
    
    <Model>
        <Pattern>
              <Item>/start</Item>
              <Item>안녕 %</Item>
              <Item>하이 %</Item>
              <Item>헬로우 %</Item>
              <Item>헬로 %</Item>
              <Item>hi %</Item>
              <Item>hello %</Item>
              <Item>안녕하세요 %</Item>
          </Pattern>
      <Response>
          <Random>
               <Item>안녕하세요. 형관봇입니다.</Item>
               <Item>안녕하세요. 반갑습니다.</Item>
               <Item>환영합니다.</Item>
          </Random>
      </Response>
      
    </Model>
    
  </Concept>
</Siml>
cs


Bot-Settings.siml

1
2
3
4
5
6
7
8
9
10
11
<Siml>
  <BotSettings>
    <!--Response that is added if No internal response is generated-->
    <Variable Name="Empty-Response" Value="죄송합니다. 아직 학습중입니다." />
    <!--Used to Separate variables in listed formats example 1, 2, 3-->
    <Variable Name="List-Separator" Value=", " />
    <!--Adds a delimiter when a List is requested example 1, 2, 3 AND 4-->
    <Variable Name="List-End" Value=" and " />
    <!--Culture: Is used to let SIML Bot know what environment culture is to be used.-->
    ...
    ...
cs






텔레그램을 실행 하여 BotFather를 검색하고, 봇을 만들어 달라고 부탁해보겠습니다.




HTTP API키를 발급 받았으니, 서버프로그램을 만들어 보겠습니다.


콘솔 응용 프로그램으로 만들고, NuGet을 통해 Syn.Bot.Assistant 를 설치합니다.




Program.cs 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using Syn.Bot.Assistant.Telegram;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace TelegramBotServer
{
    class Program
    {
        static void Main(string[] args)
        {
            var telegramAssistant = new TelegramAssistant("281861335:~EWvpyX4cS8");
            telegramAssistant.Bot.PackageManager.LoadFromString(File.ReadAllText("Bot.simlpk"));
 
            telegramAssistant.Client.StartReceiving();
 
            Console.WriteLine($"Your Telegram Bot is now Online: {DateTime.Now}");
            Console.ReadLine();
 
            telegramAssistant.Client.StopReceiving();
        }
    }
}
 
cs


텔레그램에서 발급받은 API키를 넣어주시고, Bot.simlpk 파일은 Syn Bot Studio 에서 추출합니다.


[PROJECT] -> [Export to Package] -> 콘솔프로그램 bin\Debug 폴더에 저장




프로젝트를 실행해보겠습니다.




텔레그램에서 HKDoor_bot 을 검색해여 말을 걸어보겠습니다.



간단한 챗봇이 구현 되었네요.


SIML 코드를 이용하여, 어설픈 AI챗봇보다 더 좋은 챗봇을 만들 수 있을것 같습니다.


활용할 수 있는 SIML Elements 들도 많구요~



다음엔 좀더 심도있는 SIML을 다뤄보겠습니다.

Comments