?适用于 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' ) ) ;
} ) ;
麻省理工学院