Download pdf - First line messaging bot

Transcript
Page 1: First line messaging bot

Line Messaging Bot練習實作一個簡單的回話機器人

Ethan.Y

Page 2: First line messaging bot

介紹

● Line在前陣子有提供(開發帳號),可以測試Bot的功能,現在算是(正式)提供給大家使用。

● 因為是要開發一個機器人,可以針

對使用者所發送的內容進行回應,

所以我們在這裡需要用的的服務

為(Messaging API)。

2

Page 3: First line messaging bot

帳號種類

● 免費的帳號種類有兩種:

○ Developer Trial和免費版。

○ 兩種在功能及限制上有一些

不同,(Push api)和(好友人數)是兩個帳號上有差異的部分。

3

Page 4: First line messaging bot

建立帳號

● 在這裡就跳過建立帳號的過程,因

為我原本就有用Line@,當初開發

帳號的時候我也有申請,所以可能

不太準。

● 申請好帳號之後,回到(Business Center)→(帳號清單),就可以看到

我們剛剛申請的帳號。

● 接著我們就來看看Messaging API是什麼東西!

4

Page 5: First line messaging bot

Take a Look!

5

Page 6: First line messaging bot

帳號管理畫面

● 進到(Messaging api)的管理畫面,

可以在(Basic Information)當中看

到一些設定。

● 在這裡需要注意的東西有兩個,在

我們要實作一個簡單的回話機器

人會用到:

○ Webhook URL○ Channel Access Token

6

Page 7: First line messaging bot

Webhook URL● 在使用這類API的時候,必須要有

一個Server,當使用者發送訊息的

時候,可以去(接收)並且作區適當

的回應。

● 在使用Facebook的Messenger Bot也有同樣的機制(有關facebook的使用介紹會在別的地方介紹)

● 官方對訂定一些規範,Webhook URL要確認那些訊息,以及給予什

麼樣的回應,都會在官方的文件裡

面去定義。

7

Page 8: First line messaging bot

Webhook URL cont. 會傳送一個HTTPS的POST Request

8

Page 9: First line messaging bot

Webhook URL cont.

須回傳Status Code(200)

9

Page 10: First line messaging bot

Channel Access Token● 在中文的翻譯上,Token稱作權杖

,其代表的意思大概就如何鑰匙一

樣。

● 當Webhook URL的Server要呼叫

Line的API的時候,要一同傳送手

上所持有的Token,這樣一來Line便會知道傳過來的資訊要給誰。

10

Page 11: First line messaging bot

Channel Access Token cont.

11

Page 12: First line messaging bot

Code Explanation● 必要的套件有(flask、requests及json)。● flask:python的web framework。● requests:對Line的API進行呼叫。

● json:將要回傳的data轉換成json格式。

12

Page 13: First line messaging bot

Code Explanation cont.● 在前面的步驟有提到,Webhook URL會收到一個HTTPS POST Request。● 要取出(replyToken),在之後進行reply的時候需要用到。

13

Page 14: First line messaging bot

Code Explanation cont.● 依照Line Messaging API Document所規範的格式,將準備回呼Line API的

Headers和Data準備好。

14

Page 15: First line messaging bot

Code Explanation cont.● 準備好相關的資料後,利用(requests)對Line API進行回呼。

● data要利用json.dumps()進行處理,因為回傳要是json格式。

15

Page 16: First line messaging bot

Discussion● 在前面的部分,主要是介紹Line Messaging API的使用流程。

● 但實在實作的時候,還有幾個部分是需要注意的,否則沒辦法成功。

○ 因為使用Webhook的時候,Line會針對我們設定的(Webhook URL)進行

HTTPS POST的呼叫,也就是說,我們執行程式碼的Sserver,是需要支援

HTTPS。○ 在我的實作過程當中,我練習了兩種方式:

■ flask和ngrok的搭配(Server是在local)。■ heroku和flask的搭配(Server是在雲端)。

● Keywords: ngrok, heroku, flask, git

16

Page 17: First line messaging bot

Future● 有關ngrok, heroku, flask, git,希望接下來都能整理出一些自己使用上的心得。

● 這次練習Line API的過程是蠻順利的,有鑑於之前已經先對(Facebook Messager Bot)、(Heroku)、(flask)做了一些研究及練習,所以在官方文件的閱讀、環境的架

設上順利許多。

● 本次練習的程式碼放在gist上,如果有需要參考:

https://gist.github.com/ctosib/4a671fe6f73ae9168a9d24d7740d5304

17

Page 18: First line messaging bot

Note● flask● json● requests● beautifulsoup● git● heroku● ngrok

18

Page 19: First line messaging bot

End by [email protected]

19