private void DataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
   
var grid = sender as DataGridView;
   
var rowIdx = (e.RowIndex + 1).ToString();

   
var centerFormat = new StringFormat()
   
{
       
// right alignment might actually make more sense for numbers
       
Alignment = StringAlignment.Center,
       
LineAlignment = StringAlignment.Center
   
};

   
var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
    e
.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
}

 

위 방법이 제일 깔끔하게 표현이 되는것 같다.

2017/11/21 - [C#.NET/C#] - 카카오 쳇봇 만들기 - 1

 

이전시간에 이어 카카오 쳇봇 두번째 시간에는 서버를 만들어보겠습니다.

비쥬얼 스튜디오를 일단 열고

새 프로젝트를 만들어 아래와 같이 좌측목록에서 을 선택하고 우측에서 ASP.NET 웹 응용 프로그램 을 선택합니다.

아래와 같은 화면이 나오게 되는데 비어 있음 을 선택하고 Web API 는 체크하여 확인합니다.

그럼 아래처럼 프로젝트가 구성됩니다.

이제 카카오가 제시하는 호출 형식으로 웹서비스를 제공해야합니다.

아래처럼 Controllers 폴더 아래에 컨트롤러를 추가합니다.

읽기/쓰기 동작이 표함된 Web API 2 컨트롤러 를 선택하면 예시 코드를 볼수있어서

작성하는데 도움이 많이 됩니다.

도움이 필요없다면 Web API 런트롤러 - 비어있음 을 자신있게 선택하세요!!

컨트롤러가 추가되면 아래처럼 기본적인 Get Post Put Delete 메서드가 구현되어있습니다.

일단 이것을 참고하여 카카도톡이 제시한 http(s)://:your_server_url/keyboard 형식의 GET Method 를 구현해야합니다.

아래 설명에도 나와있지만 keyboard 는 채팅을 처음 시작할때 보여주는 메세지나 버튼을 처리하도록 합니다.

https://github.com/plusfriend/auto_reply#51-home-keyboard-api

GET 방식이므로 기본적으로 아래처럼 작성됩니다.

        [HttpGet]
        public dynamic GetKakao()
        {

            return null;
        }

json 형식을 처리하기위해 dynamic 으로 리턴처리가 되도록 하였습니다.

여기서 중요한건 http(s)://:your_server_url/keyboard 이런형태로 keyboard 로 주소가 끝나게 하여 호출이 되도록 해야합니다.

이를 위해선 [Route("keyboard")] 가 필요합니다.

        [HttpGet]
        [Route("keyboard")]
        public dynamic GetKakao()
        {

            return null;
        }

위처럼 하면 주소에 keyboard 로 호출하게되면 위 메서드가 타게됩니다.

이제 리턴을 아래 json 형태로 전달해야합니다.

{
    "type" : "buttons",
    "buttons" : ["선택 1", "선택 2", "선택 3"]
}

dynamic 을 이용해 위 형태를 만들어 보내면됩니다.

위 내용을 표현한다면 아래처럼 코딩하면됩니다.

            var result = new { type = "buttons", buttons = new List<string>() { "선택1", "선택2", "선택3" } };
            return result;

전체적으로 보면

        [HttpGet]
        [Route("keyboard")]
        public dynamic GetKakao()
        {
            var result = new { type = "buttons", buttons = new List<string>() { "선택1", "선택2", "선택3" } };
            return result;
        }

위처럼 됩니다.

이대로 IIS 올리게되면 플러스친구와 1:1 채팅을 하여 대화방이 열리면 버튼1,2,3 이 나타나게됩니다.

IIS 에 올리는 방법은 우선 빌드한 후 아래와 같이 프로젝트 우클릭 메뉴에서 게시 를 선택합니다.

IIS 에 바로 올릴수도 있지만 전 폴더로 빼서 직접 올렸습니다. 그래서 폴더를 선택하고

게시 버튼을 누르게 되면 게시가 진행됩니다.

게시가 완료되면 해당 경로에 아래처럼 파일이 생성됩니다.

이 파일을 그대로 IIS 에 올리면 됩니다.

IIS 올린 후

https://center-pf.kakao.com/login

으로 이동하여 이전에 추가했던 플러스 친구로 들어가서

좌측의 스마트채팅으로 들어간 후 우측의 API 형 의 설정하기 버튼을 클릭합니다.


아래와 같은 화면에서 API 테스트를 진행해야합니다.

IIS 주소를 넣고 API 테스트 버튼을 클릭하여 아래와 같이 OK 가 떨어져야 제대로 셋팅이 된것입니다.

이제 플러스 친구와 1:1 채팅을 하면 아래와 같이 버튼이 나타나게됩니다.

직접하면 시간이 길지 않은데 포스팅하니 글이 길어지는군요;;;

다음 시간에는 응답형 API 를 이용해 응답처리를 하는것을 해보도록 하겠습니다.

프로젝트 파일을 첨부하고 싶었으나 용량이 커서 안되는군요 ㅜㅠ

+ Recent posts

티스토리 툴바