iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
DevOps

30天的社群機器人之旅系列 第 2

Day 02 Line Bot 準備

  • 分享至 

  • xImage
  •  

要進入 Line 的世界,首先需要先做以下的準備,

  1. LINE Developers 註冊開發者,建立開發人員帳號。
  2. 建立新的 Provider 。(Provider 指的是提供服務的個人或公司)
  3. 建立 Message Channel。(Channel name不要亂填)
  4. 取得 Channel access token & Channel secret
  5. 最後安裝 Line 的 Python 套件 line-bot-sdk。
    $ pip install line-bot-sdk
    

接著我們就可以開啟一個新的專案資料夾,結構如下:

linebot_test
├── .env
├── app.py
├── Pipfile
└── Pipfile.lock

接著在 .env 檔裡面加入以下內容,順便將剛剛複製的Channel access token 及 Channel secret 貼上去。

.env

CHANNEL_ACCESS_TOKEN = <channel access token>
CHANNEL_SECRET = <channel secret>

注意一下這兩組不要外流了,要好好保管好,不然別人就可以操控你的機器人了。

接著將以下的程式貼到 app.py 中,我們先將環境處理好,明天再來解釋我們做了什麼事。

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
import os


app = Flask(__name__)

line_bot_api = LineBotApi(os.environ['CHANNEL_ACCESS_TOKEN'])  # 可在無法取得值時返回異常
handler = WebhookHandler(os.environ['CHANNEL_SECRET'])  # 可在無法取得值時返回異常


@app.route("/callback", methods=['POST'])
def callback():
    # 抓 X-Line-Signature 標頭的值
    signature = request.headers['X-Line-Signature']
    # 抓 request body 的文字
    body = request.get_data(as_text=True)
    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        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)
    )
    return


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))

接著下載 ngrok ,解壓縮後執行以下指令。

$ ngrok http 5000

然後複製這邊的 URL (注意,這邊每次都會不一樣,所以不要照 Copy 我的)。

然後將我們的 app.py run 起來。

$ python app.py

接著回到 LINE Developers 進入我們剛剛建立的機器人,再進入 Messaging API ,下方有個 Webhook URL 按下 edit ,將剛剛複製的 URL 貼上之後,後方加上 /callback,按下 Update ,最後記得將下方 Usb Webhook 的開關打開。

如果沒意外的話,應該到這邊都不會有意外,只要加入剛剛產生的機器人,並且對他發送文字,機器人應該就會回復同樣的文字給你,這樣就代表成功了。

那麼就先到這邊,各位應該做到這邊都有點矇,不知道剛剛做了什麼東西,不過沒關係,明天會進行講解。

大家掰~掰~


上一篇
Day 01 旅程開始
下一篇
Day 03 Line Bot 說明
系列文
30天的社群機器人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言