؟ SDK لـ LINE Messaging API لـ 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
لمعالجة أحداث 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 ) { } ) ;
الرد على رسالة.
انظر: حدث.رد(رسالة)
أرسل رسالة دفع.
to
هو معرف المستخدم، أو مجموعة من معرف المستخدم. يمكن حفظ معرف المستخدم من event.source.userId
عند إضافته كصديق (حدث المتابعة)، أو أثناء الدردشة (حدث الرسالة).
يمكن أن تكون message
عبارة عن سلسلة، أو مصفوفة من السلسلة، أو كائن إرسال رسالة، أو مصفوفة من كائنات إرسال الرسالة.
إرسال رسالة دفع إلى عدة مستخدمين (الحد الأقصى: 150 مستخدمًا). يعد هذا أكثر كفاءة من push
لأنه سيقوم باستدعاء واجهة برمجة التطبيقات مرة واحدة فقط.
to
عبارة عن مجموعة من معرف المستخدم.
يمكن أن تكون message
عبارة عن سلسلة، أو مصفوفة من السلسلة، أو كائن إرسال رسالة، أو مصفوفة من كائنات إرسال الرسالة.
إرسال رسالة دفع لجميع المستخدمين. يعد هذا أكثر كفاءة من push
لأنه سيقوم باستدعاء واجهة برمجة التطبيقات مرة واحدة فقط.
يمكن أن تكون message
عبارة عن سلسلة، أو مصفوفة من السلسلة، أو كائن إرسال رسالة، أو مصفوفة من كائنات إرسال الرسالة.
احصل على بيانات الصور والفيديو والصوت التي يرسلها المستخدمون ككائن مؤقت.
انظر: Event.message.content()
الحصول على معلومات الملف الشخصي للمستخدم.
انظر: Event.source.profile()
الحصول على ملف تعريف المستخدم لعضو في المجموعة.
الحصول على معرف المستخدم لجميع الأعضاء في المجموعة.
انظر: Event.source.member()
اترك مجموعة.
الحصول على ملف تعريف المستخدم للعضو في غرفة الدردشة.
احصل على معرف المستخدم لجميع الأعضاء في غرفة الدردشة.
انظر: Event.source.member()
اترك غرفة.
احصل على عدد المستخدمين الذين أضافوا برنامج Linebot هذا في تاريخ محدد أو قبله.
التاريخ الافتراضي هو الأمس (UTC+9).
انظر: احصل على عدد من المتابعين
احصل على حصة عدد الرسائل في الشهر الحالي.
راجع: الحصول على الحد المستهدف للرسائل الإضافية
احصل على عدد الرسائل التي يرد عليها هذا الخط، أو يرسلها، أو يبثها، أو يبثها بشكل متعدد.
التاريخ الافتراضي هو الأمس (UTC+9).
انظر: الحصول على عدد رسائل الرد المرسلة
قم بتوفير اختصارات ملائمة لاستدعاء وظائف LineBot التي تتطلب معلمة من كائن حدث مصدر.
الرد على الحدث.
يمكن أن تكون message
عبارة عن سلسلة، أو مصفوفة من السلسلة، أو كائن إرسال رسالة، أو مصفوفة من كائنات إرسال الرسالة.
قم بإرجاع كائن وعد من وحدة 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:1LineBot.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 ) ;
} ) ;
احصل على بيانات الصور والفيديو والصوت التي يرسلها المستخدمون ككائن مؤقت.
هذا اختصار لـ: LineBot.getMessageContent(event.message.messageId)
event . message . content ( ) . then ( function ( content ) {
console . log ( content . toString ( 'base64' ) ) ;
} ) ;
معهد ماساتشوستس للتكنولوجيا