[ChatBot] 創造自己的 Line bot,第一次就上手!(3) — Python 範例程式

本篇主要配合 ChatBot 系列文(2),提供 python Linebot 範例程式,以及可以簡易修改程式的教學。

環境前提

程式碼範例

這邊使用Python語言,基本上就只要把整個程式複製過去,特別要修改這兩個資訊,即可跑。機器人會在你說hi時回你hello,你說你好時他回你哈囉,其餘機器人聽不懂,所以會學你講話。

你也可以嘗試在文字那邊做修改,嘗試看看你想讓機器人聽懂和回你的話。

當然還有很多很多功能和官方sdk可以使用,這邊主要是讓你可以在不用修改程式碼的情況下,建立一支機器人。

官方SDK有很多功能,像是回覆訊息、主動推播訊息、傳送圖片訊息、按鈕介面訊息、貼圖訊息等等等,基本上就是你平常在Line所看到有的功能,裡面都有提供怎麼使用的方式。

歐別忘了,當你修改好程式時,一樣需要在更新到Heroku上面喔

# Channel Access Token
line_bot_api = "你的Channel access token"')
# Channel Secret
handler = WebhookHandler('"你的Channel secret"')
#from _future_ import print_function
#from apiclient.discovery import build
#from httplib2 import Http
#from oauth2client import file, client, tools

#import time
#import re
#import datetime
#import random
#import codecs
#import sys
#import json

from flask import Flask, request, abort
from urllib.request import urlopen
#from oauth2client.service_account import ServiceAccountCredentials

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError,LineBotApiError
)

################################

from linebot.models import *

app = Flask(__name__)

# Channel Access Token
line_bot_api = "你的Channel access token"')
# Channel Secret
handler = WebhookHandler('"你的Channel secret"')

# 監聽所有來自 /callback 的 Post Request
@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):
    print(event)
    text=event.message.text

    if (text=="Hi"):
        reply_text = "Hello"
        #Your user ID

    elif(text=="你好"):
        reply_text = "哈囉"
    elif(text=="機器人"):
        reply_text = "叫我嗎"
    else:
        reply_text = text
#如果非以上的選項,就會學你說話

    message = TextSendMessage(reply_text)
    line_bot_api.reply_message(event.reply_token, message)

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