? Node.js용 LINE 메시징 API용 SDK
자세한 내용은 공식 API 문서를 참고하세요.
$ npm install linebot --save
var linebot = require ( 'linebot' ) ;
var bot = linebot ( {
channelId : CHANNEL_ID ,
channelSecret : CHANNEL_SECRET ,
channelAccessToken : CHANNEL_ACCESS_TOKEN
} ) ;
bot . on ( 'message' , function ( event ) {
event . reply ( event . message . text ) . then ( function ( data ) {
// success
} ) . catch ( function ( error ) {
// error
} ) ;
} ) ;
bot . listen ( '/linewebhook' , 3000 ) ;
const app = express ( ) ;
const linebotParser = bot . parser ( ) ;
app . post ( '/linewebhook' , linebotParser ) ;
app . listen ( 3000 ) ;
더 많은 예제를 보려면 examples
폴더를 참조하세요.
지정된 구성으로 LineBot 인스턴스를 생성합니다.
var bot = linebot ( {
channelId : CHANNEL_ID ,
channelSecret : CHANNEL_SECRET ,
channelAccessToken : CHANNEL_ACCESS_TOKEN ,
verify : true // Verify 'X-Line-Signature' header (default=true)
} ) ;
지정된 port
에서 내장 http 서버를 시작하고 지정된 webHookPath
에서 POST 요청 콜백을 수락합니다.
이 방법은 편의를 위해 제공됩니다. 자신의 서버를 작성하고 verify
및 parse
방법을 사용하여 웹훅 이벤트를 처리할 수 있습니다. 예를 들어 examples/echo-express-long.js
참조하세요.
요청을 구문 분석하기 위해 Express.js 미들웨어를 만듭니다.
파서는 요청 본문이 이전에 본문 파서에 의해 구문 분석된 적이 없다고 가정하므로 일반 본문 파서 앞에 배치되어야 합니다(예: app.use(bodyParser.json());
X-Line-Signature
헤더를 확인합니다.
들어오는 웹훅 요청을 처리하고 이벤트를 발생시킵니다.
Webhook 이벤트가 수신되면 발생합니다.
bot . on ( 'message' , function ( event ) { } ) ;
bot . on ( 'follow' , function ( event ) { } ) ;
bot . on ( 'unfollow' , function ( event ) { } ) ;
bot . on ( 'join' , function ( event ) { } ) ;
bot . on ( 'leave' , function ( event ) { } ) ;
bot . on ( 'memberJoined' , function ( event ) { } ) ;
bot . on ( 'memberLeft' , function ( event ) { } ) ;
bot . on ( 'postback' , function ( event ) { } ) ;
bot . on ( 'beacon' , function ( event ) { } ) ;
메시지에 답장하세요.
참조: Event.reply(메시지)
푸시 메시지를 보냅니다.
to
userId 또는 userId의 배열입니다. userId는 친구 추가(팔로우 이벤트) 또는 채팅(메시지 이벤트) 중 event.source.userId
에서 저장할 수 있습니다.
message
문자열, 문자열 배열, Send 메시지 객체 또는 Send 메시지 객체 배열일 수 있습니다.
여러 사용자에게 푸시 메시지를 보냅니다. (최대: 150명) 이는 API 호출을 한 번만 수행하므로 push
보다 더 효율적입니다.
to
userId의 배열입니다.
message
문자열, 문자열 배열, Send 메시지 객체 또는 Send 메시지 객체 배열일 수 있습니다.
모든 사용자에게 푸시 메시지를 보냅니다. 이는 API 호출을 한 번만 수행하므로 push
보다 더 효율적입니다.
message
문자열, 문자열 배열, Send 메시지 객체 또는 Send 메시지 객체 배열일 수 있습니다.
사용자가 보낸 이미지, 비디오, 오디오 데이터를 Buffer 객체로 가져옵니다.
참조: Event.message.content()
사용자의 사용자 프로필 정보를 가져옵니다.
참조: Event.source.profile()
그룹 구성원의 사용자 프로필을 가져옵니다.
그룹에 있는 모든 구성원의 userId를 가져옵니다.
참조: Event.source.member()
그룹에서 나가세요.
채팅방 회원의 사용자 프로필을 가져옵니다.
채팅방에 있는 모든 구성원의 userId를 가져옵니다.
참조: Event.source.member()
방을 나가세요.
지정된 날짜 또는 그 이전에 이 라인봇을 추가한 사용자 수를 가져옵니다.
기본 날짜는 어제(UTC+9)입니다.
참조: 팔로어 수 가져오기
이번 달의 메시지 할당량 수를 가져옵니다.
참조: 추가 메시지에 대한 목표 제한 가져오기
이 라인봇이 응답, 푸시, 브로드캐스트 또는 멀티캐스트하는 메시지 수를 가져옵니다.
기본 날짜는 어제(UTC+9)입니다.
참조: 보낸 응답 메시지 수 가져오기
소스 이벤트 객체의 매개변수가 필요한 LineBot의 기능을 호출하기 위한 편리한 단축어를 제공합니다.
이벤트에 응답합니다.
message
문자열, 문자열 배열, Send 메시지 객체 또는 Send 메시지 객체 배열일 수 있습니다.
node-fetch
모듈에서 Promise 객체를 반환합니다.
이는 LineBot.reply(event.replyToken, message)
의 약어입니다.
// reply text message
event . reply ( 'Hello, world' ) . then ( function ( data ) {
// success
} ) . catch ( function ( error ) {
// error
} ) ;
// reply multiple text messages
event . reply ( [ 'Hello, world 1' , 'Hello, world 2' ] ) ;
// reply message object
event . reply ( { type : 'text' , text : 'Hello, world' } ) ;
// reply multiple message object
event . reply ( [
{ type : 'text' , text : 'Hello, world 1' } ,
{ type : 'text' , text : 'Hello, world 2' }
] ) ;
event . reply ( {
type : 'image' ,
originalContentUrl : 'https://example.com/original.jpg' ,
previewImageUrl : 'https://example.com/preview.jpg'
} ) ;
event . reply ( {
type : 'video' ,
originalContentUrl : 'https://example.com/original.mp4' ,
previewImageUrl : 'https://example.com/preview.jpg'
} ) ;
event . reply ( {
type : 'audio' ,
originalContentUrl : 'https://example.com/original.m4a' ,
duration : 240000
} ) ;
event . reply ( {
type : 'location' ,
title : 'my location' ,
address : '〒150-0002 東京都渋谷区渋谷2丁目21−1' ,
latitude : 35.65910807942215 ,
longitude : 139.70372892916203
} ) ;
event . reply ( {
type : 'sticker' ,
packageId : '1' ,
stickerId : '1'
} ) ;
event . reply ( {
type : 'imagemap' ,
baseUrl : 'https://example.com/bot/images/rm001' ,
altText : 'this is an imagemap' ,
baseSize : { height : 1040 , width : 1040 } ,
actions : [ {
type : 'uri' ,
linkUri : 'https://example.com/' ,
area : { x : 0 , y : 0 , width : 520 , height : 1040 }
} , {
type : 'message' ,
text : 'hello' ,
area : { x : 520 , y : 0 , width : 520 , height : 1040 }
} ]
} ) ;
event . reply ( {
type : 'template' ,
altText : 'this is a buttons template' ,
template : {
type : 'buttons' ,
thumbnailImageUrl : 'https://example.com/bot/images/image.jpg' ,
title : 'Menu' ,
text : 'Please select' ,
actions : [ {
type : 'postback' ,
label : 'Buy' ,
data : 'action=buy&itemid=123'
} , {
type : 'postback' ,
label : 'Add to cart' ,
data : 'action=add&itemid=123'
} , {
type : 'uri' ,
label : 'View detail' ,
uri : 'http://example.com/page/123'
} ]
}
} ) ;
event . reply ( {
type : 'template' ,
altText : 'this is a confirm template' ,
template : {
type : 'confirm' ,
text : 'Are you sure?' ,
actions : [ {
type : 'message' ,
label : 'Yes' ,
text : 'yes'
} , {
type : 'message' ,
label : 'No' ,
text : 'no'
} ]
}
} ) ;
event . reply ( {
type : 'template' ,
altText : 'this is a carousel template' ,
template : {
type : 'carousel' ,
columns : [ {
thumbnailImageUrl : 'https://example.com/bot/images/item1.jpg' ,
title : 'this is menu' ,
text : 'description' ,
actions : [ {
type : 'postback' ,
label : 'Buy' ,
data : 'action=buy&itemid=111'
} , {
type : 'postback' ,
label : 'Add to cart' ,
data : 'action=add&itemid=111'
} , {
type : 'uri' ,
label : 'View detail' ,
uri : 'http://example.com/page/111'
} ]
} , {
thumbnailImageUrl : 'https://example.com/bot/images/item2.jpg' ,
title : 'this is menu' ,
text : 'description' ,
actions : [ {
type : 'postback' ,
label : 'Buy' ,
data : 'action=buy&itemid=222'
} , {
type : 'postback' ,
label : 'Add to cart' ,
data : 'action=add&itemid=222'
} , {
type : 'uri' ,
label : 'View detail' ,
uri : 'http://example.com/page/222'
} ]
} ]
}
} ) ;
보낸 사람의 사용자 프로필 정보를 가져옵니다.
이것은 다음의 약칭입니다:
LineBot.getUserProfile(event.source.userId)
1:1 채팅인 경우LineBot.getGroupMemberProfile(event.source.groupId, event.source.userId)
봇이 그룹에 있는 경우LineBot.getRoomMemberProfile(event.source.roomId, event.source.userId)
봇이 채팅방에 있는 경우 event . source . profile ( ) . then ( function ( profile ) {
event . reply ( 'Hello ' + profile . displayName ) ;
} ) ;
그룹이나 채팅방에 있는 모든 구성원의 사용자 ID를 가져옵니다.
이것은 다음의 약어입니다:
LineBot.getGroupMember(event.source.groupId)
봇이 그룹에 있는 경우LineBot.getRoomMember(event.source.roomId)
봇이 채팅방에 있는 경우 event . source . member ( ) . then ( function ( member ) {
console . log ( member . memberIds ) ;
} ) ;
사용자가 보낸 이미지, 비디오, 오디오 데이터를 Buffer 객체로 가져옵니다.
이는 LineBot.getMessageContent(event.message.messageId)
의 약어입니다.
event . message . content ( ) . then ( function ( content ) {
console . log ( content . toString ( 'base64' ) ) ;
} ) ;
MIT