iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
自我挑戰組

第12 屆IT鐵人賽 -Python新手玩玩Web應用系列 第 20

{Day20 }Line Message API

  • 分享至 

  • xImage
  •  

還是line~~但今天是核心文件討論

圖片來源 LINE MESSAGING
LINE 怎麼運作的?
參照官方的圖片如下,我們可以得知
圖片來源 LINE MESSAGING

圖片來源 LINE官方

使用者透過LINE APP 向伺服器送出一段文字,這時候會存到LINE的後端,後端再幫你推送到對應的使用者ID
一來一回的過程就成了我們現在日常使用的LINE對話嚕

談談收訊息事件吧

引述官方的文字

events
Array of webhook event objects
List of webhook events. An empty list may be sent from the LINE Platform to confirm
communication.
白話的說法是當使用者傳送出訊息之後,在LINE 的伺服器上就會建立一筆資料物件,裡面可以包含這件型態

  • Text
  • Image
  • Video
  • Audio
  • File
  • Location
  • Sticker

LINE 收訊息的同時會觸發WEBHOOK REQUEST EVENT
裡頭包函了完整的使用者傳送過來的資料以及訊息內容以及保密的TOKEN,LINE SERVER 就是以這個Requestbody
去辧識如何讓後續的程式可以對應回應方式.

談談設計傳送事件吧

設計LINE BOT 的時候,我們常常會遇到也經常會使用的訊息事有這些

  • Text message =>文字訊息
  • Sticker message貼圖訊息
  • Image message圖片訊息
  • Video message影片訊息
  • Audio message聲音訊息
  • Location message使用者位置訊息
    我們可以在撰寫/開發機器人的時候去決定使用者的訊息,可以用什麼訊息回應.例如查詢優惠卷,回覆圖片以及用文字回應優惠期限等等......應用開發

我們再把昨天的程式碼加入一個新功能取得台北目前的溫度吧!
把elif 插入if ... else 之間的程式區段,記得把requests套件載入進來

import requests
......
......
......
elif User_MSG == "現在幾度" or User_MSG == "溫度":
        Rdata = requests.get(
            'https://opendata.cwb.gov.tw/api/v1/rest/datastore/O-A0003-001?Authorization=你的氣象局app api token&locationName=%E8%87%BA%E5%8C%97,&elementName=TEMP&parameterName=CITY').json()
        Temp = Rdata["records"]["location"][0]["weatherElement"]
        Mdict = dict(enumerate(Temp))
        output = Mdict[0]['elementValue']
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=f'現在「台北」的目前溫度是:{output}'))

程式中text=f'現在「台北」的目前溫度是:{output}')的區段
大家有沒有發現這裡躲著FLASK 樣板的影子呢? 沒錯就是{output} ,還記得嗎?變數的傳遞是用{}包起來的方式進行的.這樣的設計一方面符合JSON的寫法,另一方面也是符合樣板傳遞變數的條件.

其他強化的設計,例如:

  1. 多執行緒的帶入各個Model,讓回應不會因會等待過久,造成使用者體驗不佳甚至是被伺服器直接TIMEOUT。
  2. 透過資料庫的界接,強化資料的取出和使用,豐富你的LINE CHATBOT 內容。
  3. NLP的加入更貼近和真人聊天的感覺。

關於我不講如何部署的原因

因為有很多資料可以查到,而且距離發表這篇文章的時間也差不遠,所以line bot 部署流程在此就不再多作介紹,就請大家自行GOOGLE 吧。

作為line 小主題的結尾

line bot 其實有很多可以延伸的主題,例如生活提醒,股匯巿指標提醒,優惠卷處理等等...
就看大家如何去運用它~


上一篇
{Day 19}Line! 告訴我現在幾點?
下一篇
{Day21}Django GO~
系列文
第12 屆IT鐵人賽 -Python新手玩玩Web應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言