LINE Messaging API SDK 大改版
最近碰巧在升級一個 Chatbot 專案,意外發現官方的 Node.js LINE Bot SDK @line/bot-sdk 有重大改版,版本號躍進到了 8.x.x,也會在程式碼當中看到一些既有 API 被淘汰的訊息(Deprecation),在本文當中將說明如何升級與緣由。
SDK 升級指南,以 Node.js 為例
雖然目前過往的程式碼都能運作,但在 SDK 上最主要的修改有兩大部分:
初始化 SDK Client
首先在初始化 Client 的部分,會發現 Class 名稱已經有改變:
const line = require('@line/bot-sdk');
const clientConfig = {
channelAccessToken: 'YOUR_CHANNEL_ACCESS_TOKEN',
channelSecret: 'YOUR_CHANNEL_SECRET'
};
// SDK v8+ 新的做法
const client = new line.messagingApi.MessagingApiClient(clientConfig);
// 先前做法
const client = new line.Client(clientConfig);
呼叫 API 的參數格式
而在呼叫 function 所需要的參數,也有一些格式上的改變:
const message: TextMessage = {
type: 'text',
event.message.text, // 舉例
};
// SDK v8+ 新的做法
await client.replyMessage({
replyToken: replyToken,
messages: [message],
});
// 先前做法
await client.replyMessage(replyToken, message);
詳細各個 API 的格式改變,可以閱讀官方的 API 文件。其他語言 SDK 的修改也大多大同小異,可以透過專案 Changelog 來了解狀況。
日新月異的 LINE API
至於為什麼會有這麼大的變更?原因在於 LINE 本身 API 功能日新月異在進步,光是今年 2024 至今才過一個半月,就已經推出了:
那過往每次只要有新的 API 更新,SDK 也就得做出對應的功能調整,考慮到官方支援的語言相當的多(Node.js / Python / Ruby / Swift / Java / Go 等),其實這個過程往往會需要花上不少時間,使得開發者沒辦法在第一時間使用新功能。
作為 LINE API Expert 的我,在過去當中也數次針對不同語言的 SDK 做出貢獻,然而這真的是得花費非常多時間,且每次修改之後也都需要對應的測試與程式碼審查等等,最後才能夠真正發布新版。
LINE OpenAPI 的誕生
於是為了解決這個問題,LINE 官方推出了 line-openapi 的專案,此專案使用 OpenAPI 格式,以 API 文件紀錄了目前官方的最新 API 功能。
而 OpenAPI 作為一個業界通用的格式,其最大的優點是有豐富的生態系,除了可以自動化產生標準 API 文件之外,像是常用的 HTTP 開發工具 Postman 也有內建支援匯入 OpenAPI 文件的功能,就可以很快地開始做 API 的對應測試。
而回到本文的重點,官方也決定透過 OpenAPI 配合對應的自動化程式碼產生 API Client,也因此才會有了這次的升級需求。
Subscribe to my newsletter
Read articles from Richard Lee directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Richard Lee
Richard Lee
Integration Officer @ TNL Mediagene Google Developer Expert for Firebase & LINE API Expert.