Skip to content

Latest commit

 

History

History
119 lines (107 loc) · 5.74 KB

WEBHOOK_kor.md

File metadata and controls

119 lines (107 loc) · 5.74 KB

webhook api quick start

LINE Develpers.NET library를 이용하여 간단한 webhook을 테스트 하는 방법에 대해 소개합니다.

quick start

1. LINE Developers 이동

  • Messaging API → Channel access token (long-lived)을 발급 및 복사합니다.

2. open api project

  1. line webhook sample project 다운로드
  2. Visual Studio → open project
  3. channel access token 수정
  • LineController.cs
public LineController()
{
    _client = new LineMessagingClient("your channel access token"); //수정
}
  1. Visual Studio → F5를 통해 project 실행
  2. 아래와 같이 host 및 callback 경로를 기억한다.

3. ngrok 설치 및 세팅

자신의 local에 생성한 api를 LINE Messenger 서버에서 직접 호출하기 위해 아래와 같은 절차가 필요하다.

3-1. 자신의 pc환경에 맞는 ngrok을 다운로드

3-2. ngrok 실행

  1. console에서 아래와 같이 자신의 localhost주소를 넣고 실행
    ngrok http https://localhost:7250/
  2. 생성된 도메인 복사 image

4. LINE Developers Webhook 등록

image

  1. LINE Developers Console> Messaging API> Webhook settings 이동
  2. Use webhhook ✔
  3. Webhook URL → Edit → ngrok 생성 host + callback url 입력 → Update → Verifiy → Success

5. LINE Messanger

해당 채널에서 메시지를 보내면 응답이 올 것 입니다.

sample source 설명

LINE Developers Methods
Message event OnMessageEventAsync
Unsend event OnUnSendEventAsync
Follow event OnFollowEventAsync
Unfollow event OnUnFollowEventAsync
Join event OnJoinEventAsync
Leave event OnLeaveEventAsync
Member join event OnMemberJoinEventAsync
Member leave event OnMemberLeaveEventAsync
Postback event OnPostBackEventAsync
Video viewing complete event OnVideoViewingCompleteEventAsync
Beacon event OnBeaconEventAsync
Account link event OnAccountLinkEventAsync
Device link event OnThingsEventAsync
Device unlink event OnThingsEventAsync
LINE Things scenario execution event OnThingsEventAsync

example

ping pong message

Message event의 message property 핸들링 예제이며, 유저가 입력한 text메시지 또는 sticker메시지를 따라 응답합니다.

protected override async Task OnMessageEventAsync(MessageEventObject messageEventObject)
{
    IMessage message;

    switch (messageEventObject.Message)
    {
        case TextObject:
            var text = (TextObject)messageEventObject.Message;
            message = new TextMessage(text.Text);
            break;
        case StickerObject:
            var sticker = (StickerObject)messageEventObject.Message;
            message = new StickerMessage(sticker.PackageId, sticker.StickerId);
            break;
        default:
            message = new TextMessage("unknown message");
            break;
    }

    await _lineMessagingClient.Message.SendReplyMessageAsync(messageEventObject.ReplyToken, message);
}

Webhook의 Source 정보 획득 방법

웹훅의 source property 핸들링 예제입니다.

protected override async Task OnMessageEventAsync(MessageEventObject messageEventObject)
{
    switch (messageEventObject.Source)
    {
        case UserSource:
            var user = (UserSource)messageEventObject.Source;
            var userId = user.UserId;
            break;
        case GroupChatSource:
            var group = (GroupChatSource)messageEventObject.Source;
            var groupID = group.GroupId;
            var groupUserID = group.UserId;
            break;
        case MultiPersonChatSource:
            var multi = (MultiPersonChatSource)messageEventObject.Source;
            var multiRoomId = multi.RoomId;
            var multiUserId = multi.UserId;
            break;
    }
}