?適用於 Node.js 的 LINE Messaging 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
方法來處理 Webhook 事件。例如,請參閱examples/echo-express-long.js
。
建立 Express.js 中間件來解析請求。
解析器假設請求主體之前從未被任何主體解析器解析過,因此它必須放置在任何通用主體解析器之前,例如app.use(bodyParser.json());
驗證X-Line-Signature
標頭。
處理傳入的 Webhook 請求並引發事件。
收到 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 陣列。當新增為好友(關注事件)或聊天期間(訊息事件)時,可以從event.source.userId
儲存 userId。
message
可以是字串、字串陣列、傳送訊息物件或傳送訊息物件陣列。
向多個用戶發送推播訊息(最多:150 個用戶)。這比push
更有效,因為它只會呼叫 api 一次。
to
是一個 userId 陣列。
message
可以是字串、字串陣列、傳送訊息物件或傳送訊息物件陣列。
向所有用戶發送推播訊息。這比push
更有效,因為它只會呼叫 api 一次。
message
可以是字串、字串陣列、傳送訊息物件或傳送訊息物件陣列。
獲取用戶發送的圖像、視訊和音訊資料作為 Buffer 物件。
請參閱:Event.message.content()
取得使用者的使用者檔案資訊。
請參閱:Event.source.profile()
取得群組中成員的使用者個人資料。
取得群組中所有成員的userId。
請參閱:Event.source.member()
留個群吧
取得聊天室成員的使用者個人資料。
取得聊天室中所有成員的userId。
請參閱:Event.source.member()
留個房間。
取得在指定日期或之前新增此線路機器人的使用者數量。
預設日期是昨天 (UTC+9)。
請參閱:獲取追蹤者數量
取得當月訊息配額數量。
請參閱:取得其他訊息的目標限制
取得此線路機器人回覆、推播、廣播或多重廣播的訊息數。
預設日期是昨天 (UTC+9)。
請參閱:取得已發送回覆訊息的數量
提供方便的簡寫方式來呼叫需要來源事件物件參數的 LineBot 函數。
響應事件。
message
可以是字串、字串陣列、傳送訊息物件或傳送訊息物件陣列。
從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 ) ;
} ) ;
取得群組或聊天室中所有成員的 userId。
這是以下內容的簡寫:
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' ) ) ;
} ) ;
麻省理工學院