LINE Develpers.NET library를 이용하여 간단한 webhook을 테스트 하는 방법에 대해 소개합니다.
1. LINE Developers 이동
- Messaging API → Channel access token (long-lived)을 발급 및 복사합니다.
- line webhook sample project 다운로드
- Visual Studio → open project
- channel access token 수정
- LineController.cs
public LineController()
{
_client = new LineMessagingClient("your channel access token"); //수정
}
- Visual Studio → F5를 통해 project 실행
- 아래와 같이 host 및 callback 경로를 기억한다.
- ex) host : https://localhost:7250, callback url: /line/callback
자신의 local에 생성한 api를 LINE Messenger 서버에서 직접 호출하기 위해 아래와 같은 절차가 필요하다.
- LINE Developers Console> Messaging API> Webhook settings 이동
- Use webhhook ✔
- Webhook URL → Edit → ngrok 생성 host + callback url 입력 → Update → Verifiy → Success
해당 채널에서 메시지를 보내면 응답이 올 것 입니다.
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 |
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);
}
웹훅의 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;
}
}