本篇主要配合 ChatBot 系列文(2),提供 python Linebot 範例程式,以及可以簡易修改程式的教學。
環境前提
- 申請Line Develpers帳號,並建立Line Bot頻道
- 申請Heroku 帳戶(可以免費創建一個),並建立應用程式
- 需要有可撰寫python語言的平台
- 如以上皆未完成,可參考系列文
[ChatBot]創造自己的Line bot,第一次就上手!(1)
[ChatBot]創造自己的Line bot,第一次就上手!(2)
程式碼範例
這邊使用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)