messaging-api-line
Messaging API client for LINE
Table of Contents
- Installation
- Usage
- API Reference
- Debug Tips
- Testing
Installation
npm i --save messaging-api-line
or
yarn add messaging-api-line
Usage
Initialize
const { LineClient } = require('messaging-api-line');
// get accessToken and channelSecret from LINE developers website
const client = new LineClient({
accessToken: ACCESS_TOKEN,
channelSecret: CHANNEL_SECRET,
});
Error Handling
messaging-api-line
uses axios as HTTP client. We use axios-error package to wrap API error instances for better formatting error messages. Directly calling console.log
with the error instance will return formatted message. If you'd like to get the axios request
, response
, or config
, you can still get them via those keys on the error instance.
client.replyText(token, text).catch((error) => {
console.log(error); // formatted error message
console.log(error.stack); // error stack trace
console.log(error.config); // axios request config
console.log(error.request); // HTTP request
console.log(error.response); // HTTP response
});
API Reference
All methods return a Promise.
Official Docs
Reply API -Responds to events from users, groups, and rooms.
reply(token, messages)
Responds messages using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
messages | Array<Object> |
Array of objects which contains the contents of the message to be sent. |
Example:
client.reply(REPLY_TOKEN, [
{
type: 'text',
text: 'Hello!',
},
]);
replyToken
can only be used once, but you can send up to 5 messages using the same token.
const { Line } = require('messaging-api-line');
client.reply(REPLY_TOKEN, [
Line.createText('Hello'),
Line.createImage({
originalContentUrl: 'https://example.com/original.jpg',
previewImageUrl: 'https://example.com/preview.jpg',
}),
Line.createText('End'),
]);
There are a bunch of factory methods can be used to create messages:
Line.createText(text, options)
Line.createImage(image, options)
Line.createVideo(video, options)
Line.createAudio(audio, options)
Line.createLocation(location, options)
Line.createSticker(sticker, options)
Line.createImagemap(altText, imagemap, options)
Line.createTemplate(altText, template, options)
Line.createButtonTemplate(altText, buttonTemplate, options)
Line.createConfirmTemplate(altText, confirmTemplate, options)
Line.createCarouselTemplate(altText, columns, options)
Line.createImageCarouselTemplate(altText, columns, options)
Line.createFlex(altText, contents, options)
replyText(token, text, options)
- Official Docs
Responds text message using specified reply token.
You can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the emoji list.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
text | String |
Text of the message to be sent. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyText(REPLY_TOKEN, 'Hello!');
replyImage(token, image, options)
- Official Docs
Responds image message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
image.originalContentUrl | String |
Image URL. |
image.previewImageUrl | String |
Preview image URL. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyImage(REPLY_TOKEN, {
originalContentUrl: 'https://example.com/original.jpg',
previewImageUrl: 'https://example.com/preview.jpg',
});
replyVideo(token, video, options)
- Official Docs
Responds video message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
video.originalContentUrl | String |
URL of video file. |
video.previewImageUrl | String |
URL of preview image. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyVideo(REPLY_TOKEN, {
originalContentUrl: 'https://example.com/original.mp4',
previewImageUrl: 'https://example.com/preview.jpg',
});
replyAudio(token, audio, options)
- Official Docs
Responds audio message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
audio.originalContentUrl | String |
URL of audio file. |
audio.duration | Number |
Length of audio file (milliseconds). |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyAudio(REPLY_TOKEN, {
originalContentUrl: 'https://example.com/original.m4a',
duration: 240000,
});
replyLocation(token, location, options)
- Official Docs
Responds location message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
location | Object |
Object contains location's parameters. |
location.title | String |
Title of the location. |
location.address | String |
Address of the location. |
location.latitude | Number |
Latitude of the location. |
location.longitude | Number |
Longitude of the location. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyLocation(REPLY_TOKEN, {
title: 'my location',
address: '〒150-0002 東京都渋谷区渋谷2丁目21−1',
latitude: 35.65910807942215,
longitude: 139.70372892916203,
});
replySticker(token, sticker, options)
- Official Docs
Responds sticker message using specified reply token.
For a list of stickers that can be sent with the Messaging API, see the sticker list.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
sticker.packageId | String |
Package ID. |
sticker.stickerId | String |
Sticker ID. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });
Reply Imagemap Messages
replyImagemap(token, altText, imagemap, options)
- Official Docs
Responds imagemap message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
imagemap | Object |
Object contains imagemap's parameters. |
imagemap.baseUrl | String |
Base URL of image. |
imagemap.baseSize | Object |
Base size object. |
imagemap.baseSize.width | Number |
Width of base image. |
imagemap.baseSize.height | Number |
Height of base image. |
imagemap.video | Object |
Video object. |
imagemap.video.originalContentUrl | String |
URL of the video file (Max: 1000 characters). |
imagemap.video.previewImageUrl | String |
URL of the preview image (Max: 1000 characters). |
imagemap.video.area.x | Number |
Horizontal position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.y | Number |
Vertical position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.width | Number |
Width of the video area. |
imagemap.video.area.height | Number |
Height of the video area. |
imagemap.video.externalLink.linkUri | String |
Webpage URL. Called when the label displayed after the video is tapped. |
imagemap.video.externalLink.label | String |
Label. Displayed after the video is finished. |
imagemap.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {
baseUrl: 'https://example.com/bot/images/rm001',
baseSize: {
width: 1040,
height: 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,
},
},
],
});
Reply Template Messages
replyTemplate(token, altText, template, options)
- Official Docs
Responds template message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
template | Object |
Object with the contents of the template. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyTemplate(REPLY_TOKEN, 'this is a 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',
},
],
});
replyButtonTemplate(token, altText, buttonTemplate, options)
- Official Docs
Alias: replyButtonsTemplate
.
Responds button template message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
buttonTemplate | Object |
Object contains buttonTemplate's parameters. |
buttonTemplate.thumbnailImageUrl | String |
Image URL of buttonTemplate. |
buttonTemplate.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
buttonTemplate.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
buttonTemplate.imageBackgroundColor | String |
Background color of image. Specify a RGB color value. The default value is #FFFFFF (white). |
buttonTemplate.title | String |
Title of buttonTemplate. |
buttonTemplate.text | String |
Message text of buttonTemplate. |
buttonTemplate.defaultAction | Object |
Action when image is tapped; set for the entire image, title, and text area. |
buttonTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {
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',
},
],
});
replyConfirmTemplate(token, altText, confirmTemplate, options)
- Official Docs
Responds confirm template message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
confirmTemplate | Object |
Object contains confirmTemplate's parameters. |
confirmTemplate.text | String |
Message text of confirmTemplate. |
confirmTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {
text: 'Are you sure?',
actions: [
{
type: 'message',
label: 'Yes',
text: 'yes',
},
{
type: 'message',
label: 'No',
text: 'no',
},
],
});
replyCarouselTemplate(token, altText, carouselItems, options)
- Official Docs
Responds carousel template message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for carousel. |
options | Object |
Object contains options. |
options.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
options.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [
{
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',
},
],
},
]);
replyImageCarouselTemplate(token, altText, carouselItems, options)
- Official Docs
Responds image carousel template message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for image carousel. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyImageCarouselTemplate(
REPLY_TOKEN,
'this is an image carousel template',
[
{
imageUrl: 'https://example.com/bot/images/item1.jpg',
action: {
type: 'postback',
label: 'Buy',
data: 'action=buy&itemid=111',
},
},
{
imageUrl: 'https://example.com/bot/images/item2.jpg',
action: {
type: 'message',
label: 'Yes',
text: 'yes',
},
},
{
imageUrl: 'https://example.com/bot/images/item3.jpg',
action: {
type: 'uri',
label: 'View detail',
uri: 'http://example.com/page/222',
},
},
]
);
Reply Flex Messages
replyFlex(token, altText, contents, options)
- Official Docs
Responds flex message using specified reply token.
Param | Type | Description |
---|---|---|
token | String |
replyToken received via webhook. |
altText | String |
Alternative text. |
contents | Object |
Flex Message container object. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.replyFlex(REPLY_TOKEN, 'this is a flex', {
type: 'bubble',
header: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Header text',
},
],
},
hero: {
type: 'image',
url: 'https://example.com/flex/images/image.jpg',
},
body: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Body text',
},
],
},
footer: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Footer text',
},
],
},
styles: {
comment: 'See the example of a bubble style object',
},
});
Official Docs
Push API -Sends messages to a user, group, or room at any time.
push(userId, messages)
Sends messages using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
messages | Array<Object> |
Array of objects which contains the contents of the message to be sent. |
Example:
client.push(USER_ID, [
{
type: 'text',
text: 'Hello!',
},
]);
pushText(userId, text, options)
- Official Docs
Sends text message using ID of the receiver.
You can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the emoji list.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
text | String |
Text of the message to be sent. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushText(USER_ID, 'Hello!');
pushImage(userId, image, options)
- Official Docs
Sends image message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
image.originalContentUrl | String |
Image URL. |
image.previewImageUrl | String |
Preview image URL. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushImage(USER_ID, {
originalContentUrl: 'https://example.com/original.jpg',
previewImageUrl: 'https://example.com/preview.jpg',
});
pushVideo(userId, video, options)
- Official Docs
Sends video message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
video.originalContentUrl | String |
URL of video file. |
video.previewImageUrl | String |
URL of preview image. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushVideo(USER_ID, {
originalContentUrl: 'https://example.com/original.mp4',
previewImageUrl: 'https://example.com/preview.jpg',
});
pushAudio(userId, audio, options)
- Official Docs
Sends audio message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
audio.originalContentUrl | String |
URL of audio file. |
audio.duration | Number |
Length of audio file (milliseconds). |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushAudio(USER_ID, {
originalContentUrl: 'https://example.com/original.m4a',
duration: 240000,
});
pushLocation(userId, location, options)
- Official Docs
Sends location message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
location | Object |
Object contains location's parameters. |
location.title | String |
Title of the location. |
location.address | String |
Address of the location. |
location.latitude | Number |
Latitude of the location. |
location.longitude | Number |
Longitude of the location. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushLocation(USER_ID, {
title: 'my location',
address: '〒150-0002 東京都渋谷区渋谷2丁目21−1',
latitude: 35.65910807942215,
longitude: 139.70372892916203,
});
pushSticker(userId, sticker, options)
- Official Docs
Sends sticker message using ID of the receiver.
For a list of stickers that can be sent with the Messaging API, see the sticker list.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
sticker.packageId | String |
Package ID. |
sticker.stickerId | String |
Sticker ID. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });
Push Imagemap Messages
pushImagemap(userId, altText, imagemap, options)
- Official Docs
Sends imagemap message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
imagemap | Object |
Object contains imagemap's parameters. |
imagemap.baseUrl | String |
Base URL of image. |
imagemap.baseSize | Object |
Base size object. |
imagemap.baseSize.width | Number |
Width of base image. |
imagemap.baseSize.height | Number |
Height of base image. |
imagemap.video | Object |
Video object. |
imagemap.video.originalContentUrl | String |
URL of the video file (Max: 1000 characters). |
imagemap.video.previewImageUrl | String |
URL of the preview image (Max: 1000 characters). |
imagemap.video.area.x | Number |
Horizontal position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.y | Number |
Vertical position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.width | Number |
Width of the video area. |
imagemap.video.area.height | Number |
Height of the video area. |
imagemap.video.externalLink.linkUri | String |
Webpage URL. Called when the label displayed after the video is tapped. |
imagemap.video.externalLink.label | String |
Label. Displayed after the video is finished. |
imagemap.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushImagemap(USER_ID, 'this is an imagemap', {
baseUrl: 'https://example.com/bot/images/rm001',
baseSize: {
width: 1040,
height: 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,
},
},
],
});
Push Template Messages
pushTemplate(userId, altText, template, options)
- Official Docs
Sends template message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
template | Object |
Object with the contents of the template. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushTemplate(USER_ID, 'this is a 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',
},
],
});
pushButtonTemplate(userId, altText, buttonTemplate, options)
- Official Docs
Alias: pushButtonsTemplate
.
Sends button template message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
buttonTemplate | Object |
Object contains buttonTemplate's parameters. |
buttonTemplate.thumbnailImageUrl | String |
Image URL of buttonTemplate. |
buttonTemplate.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
buttonTemplate.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
buttonTemplate.imageBackgroundColor | String |
Background color of image. Specify a RGB color value. The default value is #FFFFFF (white). |
buttonTemplate.title | String |
Title of buttonTemplate. |
buttonTemplate.text | String |
Message text of buttonTemplate. |
buttonTemplate.defaultAction | Object |
Action when image is tapped; set for the entire image, title, and text area. |
buttonTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushButtonTemplate(USER_ID, 'this is a template', {
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',
},
],
});
pushConfirmTemplate(userId, altText, confirmTemplate, options)
- Official Docs
Sends confirm template message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
confirmTemplate | Object |
Object contains confirmTemplate's parameters. |
confirmTemplate.text | String |
Message text of confirmTemplate. |
confirmTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushConfirmTemplate(USER_ID, 'this is a confirm template', {
text: 'Are you sure?',
actions: [
{
type: 'message',
label: 'Yes',
text: 'yes',
},
{
type: 'message',
label: 'No',
text: 'no',
},
],
});
pushCarouselTemplate(userId, altText, carouselItems, options)
- Official Docs
Sends carousel template message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for carousel. |
options | Object |
Object contains options. |
options.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
options.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushCarouselTemplate(USER_ID, 'this is a carousel template', [
{
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',
},
],
},
]);
pushImageCarouselTemplate(userId, altText, carouselItems, options)
- Official Docs
Sends image carousel template message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for image carousel. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushImageCarouselTemplate(
USER_ID,
'this is an image carousel template',
[
{
imageUrl: 'https://example.com/bot/images/item1.jpg',
action: {
type: 'postback',
label: 'Buy',
data: 'action=buy&itemid=111',
},
},
{
imageUrl: 'https://example.com/bot/images/item2.jpg',
action: {
type: 'message',
label: 'Yes',
text: 'yes',
},
},
{
imageUrl: 'https://example.com/bot/images/item3.jpg',
action: {
type: 'uri',
label: 'View detail',
uri: 'http://example.com/page/222',
},
},
]
);
Push Flex Messages
pushFlex(userId, altText, contents, options)
- Official Docs
Sends flex message using ID of the receiver.
Param | Type | Description |
---|---|---|
userId | String |
ID of the receiver. |
altText | String |
Alternative text. |
contents | Object |
Flex Message container object. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.pushFlex(USER_ID, 'this is a flex', {
type: 'bubble',
header: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Header text',
},
],
},
hero: {
type: 'image',
url: 'https://example.com/flex/images/image.jpg',
},
body: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Body text',
},
],
},
footer: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Footer text',
},
],
},
styles: {
comment: 'See the example of a bubble style object',
},
});
Official Docs
Multicast API -Sends messages to multiple users at any time.
multicast(userIds, messages)
Sends messages to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
messages | Array<Object> |
Array of objects which contains the contents of the message to be sent. |
Example:
client.multicast(
[USER_ID],
[
{
type: 'text',
text: 'Hello!',
},
]
);
multicastText(userIds, text, options)
- Official Docs
Sends text message to multiple users.
You can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the emoji list.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
text | String |
Text of the message to be sent. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastText([USER_ID], 'Hello!');
multicastImage(userIds, image, options)
- Official Docs
Sends image message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
image.originalContentUrl | String |
Image URL. |
image.previewImageUrl | String |
Preview image URL. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastImage([USER_ID], {
originalContentUrl: 'https://example.com/original.jpg',
previewImageUrl: 'https://example.com/preview.jpg',
});
multicastVideo(userIds, video, options)
- Official Docs
Sends video message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
video.originalContentUrl | String |
URL of video file. |
video.previewImageUrl | String |
URL of preview image. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastVideo([USER_ID], {
originalContentUrl: 'https://example.com/original.mp4',
previewImageUrl: 'https://example.com/preview.jpg',
});
multicastAudio(userIds, audio, options)
- Official Docs
Sends audio message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
audio.originalContentUrl | String |
URL of audio file. |
audio.duration | Number |
Length of audio file (milliseconds). |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastAudio([USER_ID], {
originalContentUrl: 'https://example.com/original.m4a',
duration: 240000,
});
multicastLocation(userIds, location, options)
- Official Docs
Sends location message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
location | Object |
Object contains location's parameters. |
location.title | String |
Title of the location. |
location.address | String |
Address of the location. |
location.latitude | Number |
Latitude of the location. |
location.longitude | Number |
Longitude of the location. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastLocation([USER_ID], {
title: 'my location',
address: '〒150-0002 東京都渋谷区渋谷2丁目21−1',
latitude: 35.65910807942215,
longitude: 139.70372892916203,
});
multicastSticker(userIds, sticker, options)
- Official Docs
Sends sticker message to multiple users.
For a list of stickers that can be sent with the Messaging API, see the sticker list.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
sticker.packageId | String |
Package ID. |
sticker.stickerId | String |
Sticker ID. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastSticker([USER_ID], {
packageId: '1',
stickerId: '1',
});
Multicast Imagemap Messages
multicastImagemap(userIds, altText, imagemap, options)
- Official Docs
Sends imagemap message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
imagemap | Object |
Object contains imagemap's parameters. |
imagemap.baseUrl | String |
Base URL of image. |
imagemap.baseSize | Object |
Base size object. |
imagemap.baseSize.width | Number |
Width of base image. |
imagemap.baseSize.height | Number |
Height of base image. |
imagemap.video | Object |
Video object. |
imagemap.video.originalContentUrl | String |
URL of the video file (Max: 1000 characters). |
imagemap.video.previewImageUrl | String |
URL of the preview image (Max: 1000 characters). |
imagemap.video.area.x | Number |
Horizontal position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.y | Number |
Vertical position of the video area relative to the top-left corner of the imagemap area. |
imagemap.video.area.width | Number |
Width of the video area. |
imagemap.video.area.height | Number |
Height of the video area. |
imagemap.video.externalLink.linkUri | String |
Webpage URL. Called when the label displayed after the video is tapped. |
imagemap.video.externalLink.label | String |
Label. Displayed after the video is finished. |
imagemap.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastImagemap([USER_ID], 'this is an imagemap', {
baseUrl: 'https://example.com/bot/images/rm001',
baseSize: {
width: 1040,
height: 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,
},
},
],
});
Multicast Template Messages
multicastTemplate(userIds, altText, template, options)
- Official Docs
Sends template message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
template | Object |
Object with the contents of the template. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastTemplate([USER_ID], 'this is a 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',
},
],
});
multicastButtonTemplate(userIds, altText, buttonTemplate, options)
- Official Docs
Alias: multicastButtonsTemplate
.
Sends button template message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
buttonTemplate | Object |
Object contains buttonTemplate's parameters. |
buttonTemplate.thumbnailImageUrl | String |
Image URL of buttonTemplate. |
buttonTemplate.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
buttonTemplate.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
buttonTemplate.imageBackgroundColor | String |
Background color of image. Specify a RGB color value. The default value is #FFFFFF (white). |
buttonTemplate.title | String |
Title of buttonTemplate. |
buttonTemplate.text | String |
Message text of buttonTemplate. |
buttonTemplate.defaultAction | Object |
Action when image is tapped; set for the entire image, title, and text area. |
buttonTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastButtonTemplate([USER_ID], 'this is a template', {
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',
},
],
});
multicastConfirmTemplate(userIds, altText, confirmTemplate, options)
- Official Docs
Sends confirm template message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
confirmTemplate | Object |
Object contains confirmTemplate's parameters. |
confirmTemplate.text | String |
Message text of confirmTemplate. |
confirmTemplate.actions | Array<Object> |
Action when tapped. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {
text: 'Are you sure?',
actions: [
{
type: 'message',
label: 'Yes',
text: 'yes',
},
{
type: 'message',
label: 'No',
text: 'no',
},
],
});
multicastCarouselTemplate(userIds, altText, carouselItems, options)
- Official Docs
Sends carousel template message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for carousel. |
options | Object |
Object contains options. |
options.imageAspectRatio | String |
Aspect ratio of the image. Specify one of the following values: rectangle , square
|
options.imageSize | String |
Size of the image. Specify one of the following values: cover , contain
|
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [
{
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',
},
],
},
]);
multicastImageCarouselTemplate(userIds, altText, carouselItems, options)
- Official Docs
Sends image carousel template message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
carouselItems | Array<Object> |
Array of columns which contains object for image carousel. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastImageCarouselTemplate(
[USER_ID],
'this is an image carousel template',
[
{
imageUrl: 'https://example.com/bot/images/item1.jpg',
action: {
type: 'postback',
label: 'Buy',
data: 'action=buy&itemid=111',
},
},
{
imageUrl: 'https://example.com/bot/images/item2.jpg',
action: {
type: 'message',
label: 'Yes',
text: 'yes',
},
},
{
imageUrl: 'https://example.com/bot/images/item3.jpg',
action: {
type: 'uri',
label: 'View detail',
uri: 'http://example.com/page/222',
},
},
]
);
Multicast Flex Messages
multicastFlex(userIds, altText, contents, options)
- Official Docs
Sends flex message to multiple users.
Param | Type | Description |
---|---|---|
userIds | Array<String> |
IDs of the receivers. |
altText | String |
Alternative text. |
contents | Object |
Flex Message container object. |
options | Object |
Optional options. |
options.quickReply | Object |
Quick reply object to attach to the message. |
options.quickReply.items | Array |
Quick reply items. |
Example:
client.multicastFlex([USER_ID], 'this is a flex', {
type: 'bubble',
header: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Header text',
},
],
},
hero: {
type: 'image',
url: 'https://example.com/flex/images/image.jpg',
},
body: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Body text',
},
],
},
footer: {
type: 'box',
layout: 'vertical',
contents: [
{
type: 'text',
text: 'Footer text',
},
],
},
styles: {
comment: 'See the example of a bubble style object',
},
});
Official Docs
Quick Replies -Sends message with buttons appear at the bottom of the chat screen.
context.replyText(
REPLY_TOKEN,
'Select your favorite food category or send me your location!',
{
quickReply: {
items: [
{
type: 'action',
imageUrl: 'https://example.com/sushi.png',
action: {
type: 'message',
label: 'Sushi',
text: 'Sushi',
},
},
{
type: 'action',
imageUrl: 'https://example.com/tempura.png',
action: {
type: 'message',
label: 'Tempura',
text: 'Tempura',
},
},
{
type: 'action',
action: {
type: 'location',
label: 'Send location',
},
},
],
},
}
);
Official Docs
Content API -
retrieveMessageContent(messageId)
Retrieves image, video, and audio data sent in specified message.
Param | Type | Description |
---|---|---|
messageId | String |
Message ID. |
Example:
client.retrieveMessageContent(MESSAGE_ID).then((buffer) => {
console.log(buffer);
// <Buffer 61 61 73 64 ...>
});
Official Docs
Profile API -
getUserProfile(userId)
Gets user profile information.
Param | Type | Description |
---|---|---|
userId | String |
ID of the user. |
Example:
client.getUserProfile(USER_ID).then((profile) => {
console.log(profile);
// {
// displayName: 'LINE taro',
// userId: USER_ID,
// pictureUrl: 'http://obs.line-apps.com/...',
// statusMessage: 'Hello, LINE!',
// }
});
Official Docs
Group/Room Member Profile API -
getGroupMemberProfile(groupId, userId)
- Official Docs
Gets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.
Param | Type | Description |
---|---|---|
groupId | String |
ID of the group. |
userId | String |
ID of the user. |
Example:
client.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {
console.log(member);
// {
// "displayName":"LINE taro",
// "userId":"Uxxxxxxxxxxxxxx...",
// "pictureUrl":"http://obs.line-apps.com/..."
// }
});
getRoomMemberProfile(roomId, userId)
- Official Docs
Gets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.
Param | Type | Description |
---|---|---|
roomId | String |
ID of the group. |
userId | String |
ID of the user. |
Example:
client.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {
console.log(member);
// {
// "displayName":"LINE taro",
// "userId":"Uxxxxxxxxxxxxxx...",
// "pictureUrl":"http://obs.line-apps.com/..."
// }
});
Official Docs
Group/Room Member IDs API -
getGroupMemberIds(groupId, start)
- Official Docs
Gets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.
This feature is only available for LINE@ Approved accounts or official accounts.
Param | Type | Description |
---|---|---|
groupId | String |
ID of the group. |
start | String |
continuationToken . |
Example:
client.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {
console.log(res);
// {
// memberIds: [
// 'Uxxxxxxxxxxxxxx...',
// 'Uxxxxxxxxxxxxxx...',
// 'Uxxxxxxxxxxxxxx...'
// ],
// next: 'jxEWCEEP...'
// }
});
getAllGroupMemberIds(groupId)
Recursively gets the ID of the users of the members of a group that the bot is in using cursors.
This feature is only available for LINE@ Approved accounts or official accounts.
Param | Type | Description |
---|---|---|
groupId | String |
ID of the group. |
Example:
client.getAllGroupMemberIds(GROUP_ID).then((ids) => {
console.log(ids);
// [
// 'Uxxxxxxxxxxxxxx..1',
// 'Uxxxxxxxxxxxxxx..2',
// 'Uxxxxxxxxxxxxxx..3',
// 'Uxxxxxxxxxxxxxx..4',
// 'Uxxxxxxxxxxxxxx..5',
// 'Uxxxxxxxxxxxxxx..6',
// ]
});
getRoomMemberIds(roomId, start)
- Official Docs
Gets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.
This feature is only available for LINE@ Approved accounts or official accounts.
Param | Type | Description |
---|---|---|
roomId | String |
ID of the room. |
start | String |
continuationToken . |
Example:
client.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {
console.log(res);
// {
// memberIds: [
// 'Uxxxxxxxxxxxxxx...',
// 'Uxxxxxxxxxxxxxx...',
// 'Uxxxxxxxxxxxxxx...'
// ],
// next: 'jxEWCEEP...'
// }
});
getAllRoomMemberIds(roomId)
Recursively gets the ID of the users of the members of a room that the bot is in using cursors.
This feature is only available for LINE@ Approved accounts or official accounts.
Param | Type | Description |
---|---|---|
roomId | String |
ID of the room. |
Example:
client.getAllRoomMemberIds(ROOM_ID).then((ids) => {
console.log(ids);
// [
// 'Uxxxxxxxxxxxxxx..1',
// 'Uxxxxxxxxxxxxxx..2',
// 'Uxxxxxxxxxxxxxx..3',
// 'Uxxxxxxxxxxxxxx..4',
// 'Uxxxxxxxxxxxxxx..5',
// 'Uxxxxxxxxxxxxxx..6',
// ]
});
Official Docs
Leave API -
leaveGroup(groupId)
- Official Docs
Leave a group.
Param | Type | Description |
---|---|---|
groupId | String |
ID of the group. |
Example:
client.leaveGroup(GROUP_ID);
leaveRoom(roomId)
- Official Docs
Leave a room.
Param | Type | Description |
---|---|---|
roomId | String |
ID of the room. |
Example:
client.leaveRoom(ROOM_ID);
Official Docs
Rich Menu API -
getRichMenuList()
- Official Docs
Gets a list of all uploaded rich menus.
Example:
client.getRichMenuList().then((richMenus) => {
console.log(richMenus);
// [
// {
// richMenuId: 'RICH_MENU_ID',
// size: {
// width: 2500,
// height: 1686,
// },
// selected: false,
// name: 'Nice richmenu',
// chatBarText: 'Tap here',
// areas: [
// {
// bounds: {
// x: 0,
// y: 0,
// width: 2500,
// height: 1686,
// },
// action: {
// type: 'postback',
// data: 'action=buy&itemid=123',
// },
// },
// ],
// },
// ]
});
getRichMenu(richMenuId)
- Official Docs
Gets a rich menu via a rich menu ID.
Param | Type | Description |
---|---|---|
richMenuId | String |
ID of an uploaded rich menu. |
Example:
client.getRichMenu(RICH_MENU_ID).then((richMenu) => {
console.log(richMenu);
// {
// richMenuId: 'RICH_MENU_ID',
// size: {
// width: 2500,
// height: 1686,
// },
// selected: false,
// name: 'Nice richmenu',
// chatBarText: 'Tap here',
// areas: [
// {
// bounds: {
// x: 0,
// y: 0,
// width: 2500,
// height: 1686,
// },
// action: {
// type: 'postback',
// data: 'action=buy&itemid=123',
// },
// },
// ],
// }
});
createRichMenu(richMenu)
- Official Docs
Creates a rich menu.
Param | Type | Description |
---|---|---|
richMenu | RichMenu |
A rich menu object. |
Example:
client
.createRichMenu({
size: {
width: 2500,
height: 1686,
},
selected: false,
name: 'Nice richmenu',
chatBarText: 'Tap here',
areas: [
{
bounds: {
x: 0,
y: 0,
width: 2500,
height: 1686,
},
action: {
type: 'postback',
data: 'action=buy&itemid=123',
},
},
],
})
.then((richMenu) => {
console.log(richMenu);
// {
// richMenuId: "{richMenuId}"
// }
});
deleteRichMenu(richMenuId)
- Official Docs
Deletes a rich menu.
Param | Type | Description |
---|---|---|
richMenuId | String |
ID of an uploaded rich menu. |
Example:
client.deleteRichMenu(RICH_MENU_ID);
getLinkedRichMenu(userId)
- Official Docs
Gets the ID of the rich menu linked to a user.
Param | Type | Description |
---|---|---|
userId | String |
ID of the user. |
Example:
client.getLinkedRichMenu(USER_ID).then((richMenu) => {
console.log(richMenu);
// {
// richMenuId: "{richMenuId}"
// }
});
linkRichMenu(userId, richMenuId)
- Official Docs
Links a rich menu to a user.
Param | Type | Description |
---|---|---|
userId | String |
ID of the user. |
richMenuId | String |
ID of an uploaded rich menu. |
Example:
client.linkRichMenu(USER_ID, RICH_MENU_ID);
unlinkRichMenu(userId)
- Official Docs
Unlinks a rich menu from a user.
Param | Type | Description |
---|---|---|
userId | String |
ID of the user. |
Example:
client.unlinkRichMenu(USER_ID);
downloadRichMenuImage(richMenuId)
- Official Docs
Downloads an image associated with a rich menu.
Param | Type | Description |
---|---|---|
richMenuId | String |
ID of an uploaded rich menu. |
Example:
client.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {
console.log(imageBuffer);
// <Buffer 61 61 73 64 ...>
});
uploadRichMenuImage(richMenuId, buffer)
- Official Docs
Uploads and attaches an image to a rich menu.
Param | Type | Description |
---|---|---|
richMenuId | String |
ID of an uploaded rich menu. |
buffer | Buffer |
Image buffer which must be jpeg or png format. |
Example:
const fs = require('fs');
client.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));
getDefaultRichMenu()
- Official Docs
Gets the ID of the default rich menu set with the Messaging API.
Example:
client.getDefaultRichMenu().then((richMenu) => {
console.log(richMenu);
// {
// "richMenuId": "{richMenuId}"
// }
});
setDefaultRichMenu(richMenuId)
- Official Docs
Sets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.
Param | Type | Description |
---|---|---|
richMenuId | String |
ID of an uploaded rich menu. |
Example:
client.setDefaultRichMenu('{richMenuId}');
The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.
deleteDefaultRichMenu()
- Official Docs
Cancels the default rich menu set with the Messaging API.
Example:
client.deleteDefaultRichMenu();
Official Docs
Account Link API -
issueLinkToken(userId)
- Official Docs
Issues a link token used for the account link feature.
Param | Type | Description |
---|---|---|
userId | String |
ID of the user. |
Example:
client.issueLinkToken(USER_ID).then((result) => {
console.log(result);
// {
// linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',
// }
});
Official Docs
LINE Front-end Framework API -
createLiffApp(view)
Adds an app to LIFF. You can add up to 10 LIFF apps on one channel.
Param | Type | Description |
---|---|---|
view.type | String |
Size of the LIFF app view. |
view.url | String |
URL of the LIFF app. Must start with HTTPS. |
Example:
client.createLiffApp({
type: 'compact',
url: 'https://example.com/liff-app',
});
View type can be specified one of the following values:
-
compact
: 50% of the screen height of the device. This size can be specified only for the chat screen. -
tall
: 80% of the screen height of the device. This size can be specified only for the chat screen. -
full
: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.
updateLiffApp(liffId, view)
Updates LIFF app settings.
Param | Type | Description |
---|---|---|
liffId | String |
ID of the LIFF app to be updated. |
view.type | String |
Size of the LIFF app view. |
view.url | String |
URL of the LIFF app. Must start with HTTPS. |
Example:
client.updateLiffApp(LIFF_ID, {
type: 'compact',
url: 'https://example.com/liff-app',
});
getLiffAppList
Gets information on all the LIFF apps registered in the channel.
Example:
client.getLiffApps().then((apps) => {
console.log(apps);
// [
// {
// liffId: '{liffId}',
// view: {
// type: 'full',
// url: 'https://example.com/myservice',
// },
// },
// {
// liffId: '{liffId}',
// view: {
// type: 'tall',
// url: 'https://example.com/myservice2',
// },
// },
// ]
});
deleteLiffApp(liffId)
Deletes a LIFF app.
Param | Type | Description |
---|---|---|
liffId | String |
ID of the LIFF app to be deleted. |
Example:
client.deleteLiffApp(LIFF_ID);
Line Pay
Initialize
const { LinePay } = require('messaging-api-line');
const linePay = new LinePay({
channelId: CHANNEL_ID,
channelSecret: CHANNEL_SECRET,
sandbox: true, // default false
});
getPayments(options)
Gets payment information from LINE Pay.
Param | Type | Description |
---|---|---|
options.transactionId | String |
ID of the transaction. |
options.orderId | String |
A unique number managed by a Merchant. |
Example:
linePay
.getPayments({
transactionId: '20140101123123123',
orderId: '1002045572',
})
.then((result) => {
console.log(result);
// [
// {
// transactionId: 1020140728100001997,
// transactionDate: '2014-07-28T09:48:43Z',
// transactionType: 'PARTIAL_REFUND',
// amount: -5,
// productName: '',
// currency: 'USD',
// orderId: '20140101123123123',
// originalTransactionId: 1020140728100001999,
// },
// ]
});
getAuthorizations(options)
Gets authorization information from LINE Pay.
Param | Type | Description |
---|---|---|
options.transactionId | String |
ID of the transaction. |
options.orderId | String |
A unique number managed by a Merchant. |
Example:
linePay
.getAuthorizations({
transactionId: '20140101123123123',
orderId: '1002045572',
})
.then((result) => {
console.log(result);
// [
// {
// transactionId: 201612312312333401,
// transactionDate: '2014-07-28T09:48:43Z',
// transactionType: 'PAYMENT',
// payInfo: [
// {
// method: 'BALANCE',
// amount: 10,
// },
// {
// method: 'DISCOUNT',
// amount: 10,
// },
// ],
// productName: 'tes production',
// currency: 'USD',
// orderId: '20140101123123123',
// payStatus: 'AUTHORIZATION',
// authorizationExpireDate: '2014-07-28T09:48:43Z',
// },
// ]
});
reserve(payment)
Reserves payment information in LINE Pay.
Param | Type | Description |
---|---|---|
payment.productName | Number |
Product name. |
payment.amount | Number |
Payment amount. |
payment.currency | String |
Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |
payment.confirmUrl | String |
Merchant's URL that buyer is redirected to. |
payment.orderId | String |
A unique number managed by a Merchant. |
payment.productImageUrl | String |
Product image URL. 84 x 84. Optional. |
payment.mid | String |
LINE member ID. Optional. |
payment.oneTimeKey | String |
One time key. Optional. |
payment.confirmUrlType | String |
confirmUrl type. Optional. |
payment.checkConfirmUrlBrowser | Boolean |
Whether to check browser or not. Optional. |
payment.cancelUrl | String |
Payment cancellation page URL. Optional. |
payment.packageName | String |
Information to avoid phishing in Android. Optional. |
payment.deliveryPlacePhone | String |
Recipient contact. Optional. |
payment.payType | String |
Payment types. Optional. |
payment.langCd | String |
Language code. Optional. |
payment.capture | String |
Whether to capture or not. Optional. |
payment.extras | String |
Optional. |
Example:
linePay
.reserve({
productName: 'test product',
amount: 10,
currency: 'USD',
orderId: '20140101123456789',
confirmUrl:
'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',
})
.then((result) => {
console.log(result);
// {
// transactionId: 123123123123,
// paymentUrl: {
// web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',
// app: 'line://pay/payment/blahblah',
// },
// paymentAccessToken: '187568751124',
// }
});
confirm(transactionId, payment)
Completes the payment when capture
parameter is false
on payment reservation. Otherwise, authorize the payment.
Param | Type | Description |
---|---|---|
transactionId | String |
ID of the transaction. |
payment.amount | Number |
Payment amount. |
payment.currency | String |
Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |
Example:
linePay
.confirm(TRANSACTION_ID, {
amount: 1000,
currency: 'TWD',
})
.then((result) => {
console.log(result);
// {
// orderId: 'order_210124213',
// transactionId: 20140101123123123,
// payInfo: [
// {
// method: 'BALANCE',
// amount: 10,
// },
// {
// method: 'DISCOUNT',
// amount: 10,
// },
// ],
// }
});
capture(transactionId, payment)
Completes a payment that was only authorized by calling confirm API.
Param | Type | Description |
---|---|---|
transactionId | String |
ID of the transaction. |
payment.amount | Number |
Payment amount. |
payment.currency | String |
Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |
Example:
linePay
.capture(TRANSACTION_ID, {
amount: 1000,
currency: 'TWD',
})
.then((result) => {
console.log(result);
// {
// transactionId: 20140101123123123,
// orderId: 'order_210124213',
// payInfo: [
// {
// method: 'BALANCE',
// amount: 10,
// },
// {
// method: 'DISCOUNT',
// amount: 10,
// },
// ],
// }
});
void(transactionId)
Voids an authorized transaction.
Param | Type | Description |
---|---|---|
transactionId | String |
ID of the transaction. |
Example:
linePay.void(TRANSACTION_ID);
refund(transactionId, options)
Requests refund of the payment.
Param | Type | Description |
---|---|---|
transactionId | String |
ID of the transaction. |
options.refundAmount | Number |
Refund amount. |
Example:
linePay.refund(TRANSACTION_ID).then((result) => {
console.log(result);
// {
// refundTransactionId: 123123123123,
// refundTransactionDate: '2014-01-01T06:17:41Z',
// }
});
Debug Tips
Log Requests Details
To enable default request debugger, use following DEBUG
env variable:
DEBUG=messaging-api:request
If you want to use a custom request logging function, just provide your own onRequest
:
const client = new LineClient({
accessToken: ACCESS_TOKEN,
channelSecret: CHANNEL_SECRET,
onRequest: ({ method, url, headers, body }) => {
/* */
},
});
Testing
Point Requests to Your Dummy Server
To avoid sending requests to real LINE server, specify the origin
option when constructing your client:
const { LineClient } = require('messaging-api-line');
const client = new LineClient({
accessToken: ACCESS_TOKEN,
channelSecret: CHANNEL_SECRET,
origin: 'https://mydummytestserver.com',
});
Warning: Don't do this on your production server.