? SDK pour l'API de messagerie LINE pour Node.js
Veuillez vous référer aux documents officiels de l'API pour plus de détails.
$ 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 ) ;
Voir le dossier examples
pour plus d'exemples.
Créez une instance LineBot avec la configuration spécifiée.
var bot = linebot ( {
channelId : CHANNEL_ID ,
channelSecret : CHANNEL_SECRET ,
channelAccessToken : CHANNEL_ACCESS_TOKEN ,
verify : true // Verify 'X-Line-Signature' header (default=true)
} ) ;
Démarrez le serveur http intégré sur le port
spécifié et acceptez le rappel de la demande POST sur le webHookPath
spécifié.
Cette méthode est fournie pour plus de commodité. Vous pouvez écrire votre propre serveur et utiliser des méthodes verify
et parse
pour traiter les événements de webhook. Voir examples/echo-express-long.js
par exemple.
Créez un middleware Express.js pour analyser la demande.
L'analyseur suppose que le corps de la requête n'a jamais été analysé par un analyseur de corps auparavant, il doit donc être placé AVANT tout analyseur de corps générique, par exemple app.use(bodyParser.json());
Vérifiez l’en-tête X-Line-Signature
.
Traitez la demande de webhook entrante et déclenchez un événement.
Déclenché lorsqu'un événement Webhook est reçu.
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 ) { } ) ;
Répondez à un message.
Voir : Event.reply(message)
Envoyer un message push.
to
est un userId ou un tableau de userId. Un identifiant utilisateur peut être enregistré à partir de event.source.userId
lorsqu'il est ajouté en tant qu'ami (événement de suivi) ou pendant le chat (événement de message).
message
peut être une chaîne, un tableau de chaînes, un objet Envoyer un message ou un tableau d'objets Envoyer un message.
Envoyer un message push à plusieurs utilisateurs (Max : 150 utilisateurs). C'est plus efficace que push
car cela n'appellera l'API qu'une seule fois.
to
est un tableau de userId.
message
peut être une chaîne, un tableau de chaînes, un objet Envoyer un message ou un tableau d'objets Envoyer un message.
Envoyer un message push à tous les utilisateurs. C'est plus efficace que push
car cela n'appellera l'API qu'une seule fois.
message
peut être une chaîne, un tableau de chaînes, un objet Envoyer un message ou un tableau d'objets Envoyer un message.
Obtenez des données image, vidéo et audio envoyées par les utilisateurs en tant qu'objet Buffer.
Voir : Event.message.content()
Obtenez les informations de profil utilisateur de l’utilisateur.
Voir : Event.source.profile()
Obtenez le profil utilisateur d'un membre d'un groupe.
Obtenez l'ID utilisateur de tous les membres d'un groupe.
Voir : Event.source.member()
Quittez un groupe.
Obtenez le profil utilisateur d'un membre dans une salle de discussion.
Obtenez l’ID utilisateur de tous les membres d’une salle de discussion.
Voir : Event.source.member()
Quittez une pièce.
Obtenez le nombre d’utilisateurs qui ont ajouté ce linebot au plus tard à une date spécifiée.
La date par défaut est hier (UTC+9).
Voir : Obtenir le nombre d'abonnés
Obtenez le quota de nombre de messages pour le mois en cours.
Voir : Obtenir la limite cible pour les messages supplémentaires
Obtenez le nombre de messages auxquels ce linebot répond, pousse, diffuse ou multidiffuse.
La date par défaut est hier (UTC+9).
Voir : Obtenir le nombre de messages de réponse envoyés
Fournissez des raccourcis pratiques pour appeler les fonctions de LineBot qui nécessitent un paramètre à partir d'un objet événement source.
Répondez à l'événement.
message
peut être une chaîne, un tableau de chaînes, un objet Envoyer un message ou un tableau d'objets Envoyer un message.
Renvoie un objet Promise à partir du module node-fetch
.
Ceci est un raccourci pour : 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'
} ]
} ]
}
} ) ;
Obtenez les informations de profil utilisateur de l’expéditeur.
Il s'agit d'un raccourci pour :
LineBot.getUserProfile(event.source.userId)
s'il s'agit d'un chat 1:1LineBot.getGroupMemberProfile(event.source.groupId, event.source.userId)
si le bot est dans un groupeLineBot.getRoomMemberProfile(event.source.roomId, event.source.userId)
si le bot est dans une salle de discussion event . source . profile ( ) . then ( function ( profile ) {
event . reply ( 'Hello ' + profile . displayName ) ;
} ) ;
Obtenez l'ID utilisateur de tous les membres d'un groupe ou d'une salle de discussion.
Il s'agit d'un raccourci pour :
LineBot.getGroupMember(event.source.groupId)
si le bot est dans un groupeLineBot.getRoomMember(event.source.roomId)
si le bot est dans une salle de discussion event . source . member ( ) . then ( function ( member ) {
console . log ( member . memberIds ) ;
} ) ;
Obtenez des données image, vidéo et audio envoyées par les utilisateurs en tant qu'objet Buffer.
Il s'agit d'un raccourci pour : LineBot.getMessageContent(event.message.messageId)
event . message . content ( ) . then ( function ( content ) {
console . log ( content . toString ( 'base64' ) ) ;
} ) ;
MIT