透過Python Line Chatbot 建立聊天機器人 - 基礎篇。

使用Line Develop SDK 的Python Line bot sdk 建置一個簡單的 Line Chatbot的環境教學。

透過Line ChatBot實現一些推播以及回覆的功能

前言:主要是因為要教台科大電腦研習社的社課,想了想我覺得有趣又會想要學的應用, 於是就想到Line ChatBot 此部分只教到可以成功架起來,使用方式會寫在下一篇。

那我們看一下文件

https://developers.line.me/en/services/messaging-api/

我們希望要有發送訊息以及回覆訊息的功能,

因此我們要選擇使用 Message API 上圖轉載自Line Message API

前置條件

需要有一個https的Server

我在這提供幾個簡單的選項,那下面這兩個我都有寫過教學文章

Heroku 好處:

  • 有https的網址
  • 自己的主機可以不用開著
  • 可以將code丟上去,在開著他的伺服器跑你的程式碼

教學文章:Flask結合Heroku教學

Ngrok 好處:

  • 有https的網址
  • 可以直接從網址連結至本地端的主機
  • 部署簡單
  • 容易測試,不用每次修改都push上遠端主機 教學文章:Flask結合Ngrok教學

流程說明

1.至line申請develop帳號 2.結合Line Bot SDK Github 3.可用Line Chatbot複誦我傳過去的訊息

方案選擇

我們可以點進這頁面看看詳細的資訊方案介紹

那我們這邊可以看到

我要教社課一定會選擇免費的!!

那因為我們需要有發送訊息(Push API)以及回覆訊息(Reply API)的功能

因此我們就是選擇Developer Trial

註冊帳號

我們要進入Line Developer

然後點選 Start Using Message API

之後輸入你的帳號密碼

那接下來會進到這頁面

填一填之後,到下個頁面有個Start的按鈕按下去~

因為目前沒有provider

因此下面這邊我們點選左邊的Add new provider

然後點選 Message API

然後把你的資訊填進去

比較值得注意的是 下面的選項記得選Develop trial(預設就是這個)

之後會出現下圖

點擊你剛剛創建出來的Provider

然後會進入到這個頁面

這個頁面有幾個個重要的資訊是

  • Channel ID

  • Channel secret

  • QR Code

    先拿起你的手機掃描條碼成為好友,之後才能夠順利的進行測試。

  • Channel access token(long lived)

    這個token是之後串接Message API會需要的

Channel ID 以及 Channel access token 這兩組號碼要保存好,之後要填入到API中。

還有個要注意的點是 webhook 的選項要記得開啟 - Enabled

實際應用

在一切開始之前

我看了看文件

The Messaging API allows for data to be passed between the server of your bot application and the LINE Platform. When a user sends your bot a message, a webhook is triggered and the LINE Platform sends a request to your webhook URL. Your server then sends a request to the LINE Platform to respond to the user. Requests are sent over HTTPS in JSON format.

重點應該是這兩句拉

  • LINE Platform sends a request to your webhook URL
  • Requests are sent over HTTPS in JSON format.

你要給一個URL => webhook的服務

你的網址要是https

原來要server呢((廢話

然後再看下面這個Link

https://developers.line.me/en/docs/messaging-api/building-bot/

那官方是推薦使用 Heroku

接下來我們點擊進Line Bot SDK Github

看看文件怎麼寫

首先我們照著文件安裝

有兩種選擇

1.你已經有server 或是架設好 ngrok

>pip install line-bot-sdk
{:.message}

2.如果是使用Heroku架server的方式

要用pipenv

>pipenv install line-bot-sdk

>pipenv shell

將github上的Synopsis部分 複製貼上到一個.py檔案

假設檔名為 flask_test.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__)

line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # 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))


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

之後將 15, 16行的下方兩個參數,替換為自己的CHANNEL TOKEN

line_bot_api = LineBotApi(‘YOUR_CHANNEL_ACCESS_TOKEN’)

handler = WebhookHandler(‘YOUR_CHANNEL_SECRET’)

這兩個TOKEN是在下圖的這兩個位置

之後架起server

python flask_test.py

然後要了解目前的https的網址

之後去line chatbot設定我們的server的網址

以heroku示範

這次我的heroku的名稱為

mysterious-stream-19548

所以在line的這個頁面要這樣設定

記得網址後面要加/callback如下圖

接下來會用此示範

至於 Webhook URL Requires SSL 的Verify 其實可以不用管他 Line chatbot issue 31

只要可以像下面這樣正常回答你說過的話就好

其他的使用方法會寫在Line chatbot 應用篇

參考連結

Line Message API - https://developers.line.me/en/services/messaging-api/


© XiaoSean 2018. All rights reserved.

Powered by Hydejack v7.5.1