? SDK для API LINE Messaging для Node.js
Подробную информацию можно найти в официальных документах 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)
} ) ;
Запустите встроенный http-сервер на указанном port
и примите обратный вызов POST-запроса на указанном webHookPath
.
Этот метод предусмотрен для удобства. Вы можете написать собственный сервер и использовать методы 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(сообщение)
Отправить push-сообщение.
to
— это идентификатор пользователя или массив идентификаторов пользователя. Идентификатор пользователя можно сохранить из event.source.userId
при добавлении в список друзей (событие отслеживания) или во время чата (событие сообщения).
message
может быть строкой, массивом строк, объектом «Отправить сообщение» или массивом объектов «Отправить сообщение».
Отправьте push-сообщение нескольким пользователям (максимум: 150 пользователей). Это более эффективно, чем push
, поскольку вызов API будет выполняться только один раз.
to
— это массив идентификаторов пользователя.
message
может быть строкой, массивом строк, объектом «Отправить сообщение» или массивом объектов «Отправить сообщение».
Отправьте push-сообщение всем пользователям. Это более эффективно, чем push
, поскольку вызов API будет выполняться только один раз.
message
может быть строкой, массивом строк, объектом «Отправить сообщение» или массивом объектов «Отправить сообщение».
Получайте изображения, видео и аудиоданные, отправленные пользователями, в виде объекта Buffer.
См.: Event.message.content().
Получить информацию о профиле пользователя.
См.: Event.source.profile().
Получить профиль пользователя участника группы.
Получите идентификаторы пользователей всех участников группы.
См.: Event.source.member().
Покиньте группу.
Получите профиль пользователя в чате.
Получите идентификаторы пользователей всех участников чата.
См.: Event.source.member().
Выйдите из комнаты.
Получите количество пользователей, которые добавили этого линейного бота не позднее указанной даты.
Дата по умолчанию — вчерашний день (UTC+9).
См.: Получить количество подписчиков
Получите квоту количества сообщений в текущем месяце.
См.: Получение целевого лимита для дополнительных сообщений.
Получите количество сообщений, на которые этот линейный робот отвечает, отправляет, передает или осуществляет многоадресную рассылку.
Дата по умолчанию — вчерашний день (UTC+9).
См.: Получить количество отправленных ответных сообщений.
Предоставьте удобные сокращения для вызова функций LineBot, которым требуется параметр из исходного объекта события.
Реагируйте на событие.
message
может быть строкой, массивом строк, объектом «Отправить сообщение» или массивом объектов «Отправить сообщение».
Верните объект Promise из модуля node-fetch
.
Это сокращение для: 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 ) ;
} ) ;
Получите идентификаторы пользователей всех участников группы или чата.
Это сокращение для:
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' ) ) ;
} ) ;
Массачусетский технологический институт