LINE 群組機器人製作完整步驟:從申請帳號到自動回覆功能設定教學

Published on: | Last updated:

嗯...今天要來聊聊怎麼自己做一個 LINE 群組的機器人

最近...很多人在問這個。感覺好像很複雜,要寫很多程式碼。但老實說,嗯,最難的部分其實不是寫程式,而是...把帳號那些東西設定好。

所以...今天我想說,就一步一步來,從頭開始。把怎麼申請帳號,然後...怎麼讓機器人可以在群組裡面回話,都講清楚。對,目標就是...你就算不是很懂程式,也能大概知道是怎麼一回事,然後照著做,做出一個...至少會跟你說哈囉的機器人。

先說結論:到底要準備什麼?

簡單講,你需要三樣東西:一個 LINE 帳號、一個叫做「LINE Developers Console」的開發者後台帳號,還有...一個地方放你的程式碼,這個地方要有一個公開的網址,也就是所謂的 Webhook。

聽起來很複雜嗎?...嗯,沒關係,我們一個一個來。整個流程就像是...你要開一間店。LINE Developers Console 就是去政府登記、申請營業執照。然後,Channel ID 跟 Channel Secret 就像是你的店的統一編號跟鑰匙。最後,那個 Webhook,就是你店面的地址,LINE 才知道要去哪裡找你。

LINE Bot 運作的基本流程圖
LINE Bot 運作的基本流程圖

第一步:去 LINE Developers Console 把帳號辦好

這一步...嗯,是最多人卡關的地方。主要是因為 LINE 的介面有時候會變來變去。最近又有一次更新,從 2024 年 9 月開始,建立的方式有點不一樣了。

你得先去一個叫做「LINE Official Account Manager」的地方建立一個官方帳號,然後再從那邊啟用 Messaging API 功能。 以前是可以直接在開發者後台(LINE Developers Console)裡面一次做完的。

我把它拆成幾個小步驟好了:

  1. 登入 LINE Developers Console:你直接用你自己的 LINE 帳號登入就可以了。 第一次登入,它會要你填一個開發者名稱,就隨便取一個你喜歡的。
  2. 建立 Provider:這個 Provider...你可以把它想像成一個公司或工作室的名稱,用來管理你旗下的各種機器人。 就...也是取個名字而已。
  3. 建立 Channel (頻道):這才是重點。現在你點「Create a Messaging API channel」的時候,它會引導你去 LINE Official Account Manager 的頁面。 在那邊把官方帳號的資料填一填,像是帳號名稱、業種之類的。
  4. 啟用 Messaging API:建立好官方帳號之後,要記得在它的後台「設定」裡面,找到「Messaging API」這個選項,然後按「啟用」。 這個動作才會真的把你的官方帳號跟開發者後台串起來。
  5. 取得關鍵金鑰:回到 LINE Developers Console,找到你剛剛建立的那個 Channel。點進去之後,你會看到兩個...非常重要的東西:「Channel secret」和「Channel access token」。 這兩串字...就是你程式碼跟 LINE 溝通的鑰匙,要收好。我通常會直接把它們複製出來,貼在記事本上。

對了,有個地方要特別注意。在 Channel 設定裡面的「Messaging API」頁籤,要確認「Webhook」是「使用中」。 然後,在「LINE Official Account Manager」的後台,要把「回應模式」設定成「聊天機器人」,然後關閉「自動回應訊息」。 這樣...你傳訊息給機器人時,LINE 平台才會把訊息轉發到你的程式,而不是用它內建的功能回你。

機器人要怎麼在「群組」裡動起來?

這是一個小細節,但很多人會漏掉。預設情況下,你把機器人拉進群組,它是...不會有反應的。

你必須到官方帳號後台的「帳號設定」,把「加入群組或多人聊天室的功能」切換成「接受邀請」。 這樣一來,別人才能把你的機器人加到群組裡,它也才能讀取裡面的訊息。

在 LINE Official Account Manager 後台啟用群組功能的設定畫面
在 LINE Official Account Manager 後台啟用群組功能的設定畫面

怎麼寫程式讓它回話? (一個簡單的 Python 範例)

終於...要寫程式了。不過別怕,我們只是做一個最簡單的「鸚鵡機器人」,你跟它說什麼,它就回什麼。 這樣可以先測試前面帳號設定、Webhook 那些有沒有成功。

現在比較流行的 Python 網站框架大概是 Flask 或 FastAPI。 我們用 Flask 當例子好了,因為它...嗯,比較單純。

你需要先安裝幾個 Python 套件:

pip install flask line-bot-sdk

然後,寫一個叫做 `app.py` 的檔案,內容大概長這樣:

# 引用需要的套件
from flask import Flask, request, abort
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

# 這邊要換成你自己的 Channel Access Token 跟 Channel Secret
line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')

# 這個是 Webhook 的路徑
@app.route("/callback", methods=['POST'])
def callback():
    # 取得 X-Line-Signature 標頭的值
    signature = request.headers['X-Line-Signature']

    # 取得請求的內容
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # 處理 webhook 事件
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        print("Invalid signature. Please check your channel access token/channel secret.")
        abort(400)

    return 'OK'

# 處理文字訊息事件
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    # 鸚鵡機器人:回覆一樣的訊息
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
    app.run()

你看到了嗎?...程式碼裡面有兩個地方要填上你剛剛記下來的 `YOUR_CHANNEL_ACCESS_TOKEN` 跟 `YOUR_CHANNEL_SECRET`。

這段程式碼做的事情很簡單:它會啟動一個小小的網站伺服器。當 LINE 平台收到使用者傳來的訊息時,它會把訊息內容 POST 到 `/callback` 這個網址。 程式收到後,會先驗證簽章,確認是 LINE 送來的沒錯,然後...就把一樣的文字用 `reply_message` 的方式送回去。

所以,Webhook 網址到底是什麼?

嗯...這是最後一步,也是最關鍵的一步。你剛剛寫的 Python 程式是在你自己的電腦上跑,LINE 根本找不到它。你需要一個工具,幫你在你家電腦跟公開的網際網路之間,挖一條通道。這個工具最常用的就是 `ngrok`。

你下載 `ngrok` 之後,在終端機執行,它就會給你一個公開的 `https` 網址。然後,你把這個網址,加上 `/callback`,例如 `https://xxxxxxxx.ngrok.io/callback`,貼回到 LINE Developers Console 的 Webhook URL 欄位裡。

貼上去之後,記得按一下旁邊的「Verify」按鈕。如果出現「Success」,就代表...恭喜你,你的機器人跟 LINE 平台接上線了! 現在,你把機器人加到群組,然後傳個訊息給它,它應該就會回你一樣的話了。

不過要注意,`ngrok` 每次重啟,網址都會變,所以你每次都要回去 LINE 後台更新 Webhook 網址。 這是在本機測試的作法。如果你要讓它 24 小時運作,就要把程式放到像是 Google Cloud 或 Heroku 這樣的雲端平台上。

成功在群組中與機器人互動的畫面
成功在群組中與機器人互動的畫面

要注意的幾個...嗯...小陷阱

免費的,但有限制

很多人以為做這個機器人是完全免費的。帳號申請是免費的沒錯,但...能傳的訊息數量不是無限的。 LINE 官方帳號有分不同的收費方案,免費方案每個月能「主動推送」的訊息數量很少,大概幾百則而已。 所謂主動推送 (Push API),就是沒人理你,你自己主動發訊息,像是發廣告、通知。

不過,我們今天做的這種「使用者傳一句、你回一句」的,叫做 Reply API,它的免費額度是...比較高的,基本上個人玩玩都夠用。 但如果你要做的功能很複雜,需要主動發訊息,那就要注意費用問題了。

OA Manager 跟 Developer Console 到底差在哪?

這個問題...我也困惑過。我自己的理解是這樣:

LINE Official Account Manager (OA) Messaging API (我們用的)
適合誰用? 這個嘛...比較像是給行銷人員、小編用的。就是點一點滑鼠,設定好關鍵字回覆、圖文選單那些。 嗯...這個就是給我們這種...想自己寫程式,做一些客製化功能的人用的。
需要寫程式嗎? 完全不用。它就是個圖形化介面。 對,一定要。所有邏輯都要自己寫。
客製化程度 有限。就是 LINE 給你什麼功能,你就用什麼。 幾乎無限。你想得到的、API 有支援的,你都能做。像是串接資料庫、做個投票系統什麼的。
成本呢? 帳號本身免費,但訊息費...看你用量。 訊息費跟 OA 一樣的規則,但你還要多一個伺服器的費用,就是放你程式碼的地方。雖然很多平台有提供免費方案。

結語

呼...大概就是這樣。從申請帳號、設定,到寫一個超簡單的程式,然後讓它在網路上跑起來。每一步都有一些小細節要注意。特別是帳號申請流程,LINE 官方最近的調整,確實讓第一次接觸的人會有點...不知所措。

但只要照著步驟,把 Channel Secret 那些金鑰放對地方,然後 Webhook 網址設定成功,你的第一個 LINE 機器人就誕生了。雖然它只會學你說話,但...這已經是很大的一步了。

接下來,你就可以在 `handle_message` 那個函式裡面,開始寫你自己的邏輯。例如,判斷使用者輸入的文字是不是「+1」,然後把報名人數記錄下來之類的。 這就是好玩的地方了。


那你呢?你想用 LINE Bot 來解決什麼問題?是想做個自動記帳工具、還是定時提醒喝水的助理,或只是單純好玩?可以在下面留言分享你的想法。

Related to this topic:

Comments

撥打專線 LINE免費通話