? LINE Messaging API for Node.js の 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 の配列です。 userId は、友達として追加されたとき (イベントをフォロー)、またはチャット中 (メッセージ イベント) に、 event.source.userId
から保存できます。
message
、文字列、文字列の配列、送信メッセージ オブジェクト、または送信メッセージ オブジェクトの配列を指定できます。
複数のユーザーにプッシュ メッセージを送信します (最大: 150 ユーザー)。これは、API 呼び出しを 1 回だけ行うため、 push
よりも効率的です。
to
userId の配列です。
message
、文字列、文字列の配列、送信メッセージ オブジェクト、または送信メッセージ オブジェクトの配列を指定できます。
すべてのユーザーにプッシュ メッセージを送信します。これは API 呼び出しを 1 回だけ行うため、 push
よりも効率的です。
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)
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' ) ) ;
} ) ;
マサチューセッツ工科大学