LineBot開源教學

第一章、 前言
在現在這時代,最多人使用的通訊軟體就是LINE了。我們想做一些服務或展示,比起生一個APP,使用網頁或者其他軟體內嵌服務可能更快速。而AI能應用的東西很廣,如果有一個可以結合我們上述提到的那些小系統的方案,顯然是個不錯的展示平台。
而我們想到的就是LINE了,LINE提供了一個開發者介面,讓開發者可以將LINE連結自己的API來做一些有趣的應用,而其中一個就是聊天機器人,許多的明星或者公司會利用這個技術做類似客服的LINE帳號。這類機器人通常會對特定的語句做出反應,高階一點的則是語句有些許變化也能容忍──這剛好是我們前面NLP部分的應用。而LINE也有接收聲音、圖片的事件,可以結合智慧音箱和影像辨識。
我們利用Heroku提供的雲端API執行平台,連結Line開發者帳號來嘗試製作一個對話機器人Kotori(吉祥物教阿的日文名字)。

第二章、 前置準備
要將我們設計的機器人架在LINE上面得先做一點準備,第一步,我們先申請一個Heroku帳號,從官方網站https://www.heroku.com/點選右上角的SignUp註冊。
註冊完成後,登入點選右上角的New->Create New App,建立一個自己喜歡的App專案(請記住專案的名稱)。完成之後依以下網址下載Heroku CLI並安裝:https://devcenter.heroku.com/articles/heroku-cli。
第二步,安裝git:https://git-scm.com/downloads。
第三步:申請Line的開發者專案,詳情可以參考https://developers.line.me/en/docs/messaging-api/getting-started/。
以上,先期的準備大致完成,接著進入程式碼撰寫的部分。由於程式本身要在雲端執行,故main裡面和一般的程式寫法有一點差異。另外本程式基於line-bot-sdk開發而成。

第三章、 文字訊息事件
在linebot之中有許多的事件類型,當你需要針對某個類型事件作處理的時候就要先宣告它的接收體,@handler.add幫助各位建立各種不同的接收體,以下我們將為各位說明幾個比較常用的大類
文字訊息是LINE上面最常見的訊息,大致上就是純文字所構成,偶爾可能混一些符號:

LineBot_1

這類訊息我們可以使用

@handler.add(MessageEvent, message=TextMessage)

來宣告接收體,並在handle_message(event)中對訊息做處理。處理LINE訊息時,第一個要記起來的物件是event.message.text,如字面翻譯,就是當有人傳訊息給這個機器人時訊息的主體。如上圖,我傳送給教阿後,教阿透過event.message.text取得我傳送的訊息(”C4cat是什麼”,以及”?”),並分析後回應。

而第二個重要的物件是event.reply_token,這個物件決定你收到這條訊息要回應的對象。event.reply_token是一次性的,即使是同一個人,第二次傳訊過來你收到的event.reply_token也不會一樣。

而文字訊息分析我們前面提過幾個方法,比方說全句對應型或者是斷詞後對特定詞作反應:

        第1節. 全句符合
包含了全句式的回應(智慧居家管家系統、智慧講桌系統)以及占卜系統(占卜球),占卜球因為強制要求日期格式,劃分至全句符合的區塊。具體內容前面章節皆有說明,不再贅述。


        第2節. 關鍵詞符合
包含股票查詢系統和WikiQA系統,股票查詢系統利用twstock函式庫取得資料,要求有股票關鍵字,以及上市代號或名稱。
twstock在本系統主要利用它的幾個功能:即時交易價查詢、最高最低點查詢(前二皆為twstock.realtime.get取得)以及四大買賣點分析(BestFourPoint)。
WikiQA系統則需要有5W(什麼、誰、哪裡之類)疑問詞,以及最好有介系詞(是、在之類)來幫助教阿利用wikipedia函式庫尋找答案並回答


        第3節. 子字串符合
本機器人已經上線一段時間了,觀察使用者使用紀錄以及程式歷程,訊息無法正確回應的一大原因是斷詞系統錯誤,造成以關鍵詞為準的分析無法觸發。
依照此現象,一個想法是將詞的概念去除,單純以子字串作為觸發來做為最後防線。字串物件的find方法可以達成這件事情。
子字串方法由於不受斷詞正確率影響,通常做為檢查的最後手段,注意它雖然不受斷詞干擾,但容易被誤觸發──比方說以上面例子,萬一用戶說的是”這個公式老師沒有教阿!”這種句子就會誤觸發,雖然正常來說作為語尾助詞「阿」應該是選「啊」這個字,但很遺憾的是,其實LINE用戶在打字時選字是很隨便的。

第四章、 貼圖訊息事件
在LINE上第二多的應該算是貼圖訊息,某些人在好友群組甚至可以光依靠貼圖就完成對話和意見交流。因此我們也會稍微對貼圖訊息做處理,但LineBot本身只能回應前4組Line內建的普通貼圖。
第一件事情當然是建立貼圖的接收器,和文字訊息類似,使用@handler.add(MessageEvent, message=StickerMessage)宣告接收器,再從之後的handle_sticker_message(event)編寫對應。
貼圖在LINE之中是以兩組號碼代表,第一組號碼是該貼圖屬於那個系列的貼圖,在event物件中為event.message.package_id,第二組號碼是該貼圖在系列中的第幾張,為event.message.sticker_id物件。因為版權問題,此處不方便截圖說明建立的貼圖,但可以藉由自行發送貼圖給Line機器人,再請它回傳的方式得到這些號碼。

第五章、 PostBack事件
PostBack事件是一種比較特殊的事件,用戶不會因為打字或傳送什麼東西而觸發它,比較常見的觸發方法是用了LINE提供的內建選單,像底下這種:

LineBot_2

這種清單當你按下按鈕,有可能是傳回PostBack到LINE Bot的伺服器,LINE Bot再根據PostBack做回應,類似我們一般程式傳變數的感覺。我們將在回應部分說明如何生出這種選單式的LINE訊息。
而要接收PostBack使用的是@handler.add(PostbackEvent),一樣使用後面的handle_postback(event)定義接收到的反應。
我們的系統中,PostBack基本上只對列表或按鈕做出反應,而其中包含了兩個列表:說明文件和IoT列表。原理相同都是分析PostBack傳回的變數。

第六章、 回應
回應部分雖然分為四片,但實質上就只是更動一些物件及變數,主要方法並沒有變更,故合併一起說明。
回應的基本函式都是基於以下函式:

line_bot_api.reply_message(event.reply_token, message)

差別只在message的種類差別。


 

        第1節. 文字訊息

TextSendMessage(text=message)

最常見的回應,單純回一個文字字串回去:

LineBot_3


 

        第2節. 貼圖訊息

StickerSendMessage(
package_id=event.message.package_id,
sticker_id=event.message.sticker_id)

參考前面有關貼圖事件,發送一樣也是兩個id組成。前面也提到過只能使用前四組普通貼圖,很無聊就不示範了

LineBot_4


 

        第3節. 圖形訊息

message = ImageSendMessage(
original_content_url=’https://i.imgur.com/Hn6lBtg.jpg’,
preview_image_url=’https://i.imgur.com/Hn6lBtg.jpg’)

圖形訊息必須從url傳送,且格式限制為jpg。程式接受自己製作縮圖,縮圖和原圖的大小有其限制(請參考line-sdk)。
預防各種版權問題,這邊不呈現運作結果。


        第4節. Template訊息
Template訊息可以視為是Line的互動功能,按下列表會有特定反應,也可以讓點列表的用戶說出特定訊息:

LineBot_5

在電腦版上不能顯示列表時就是顯示替代文字:

LineBot_6

其他部分對應程式碼大略可以推出是哪部分的參數,比較麻煩的是actions部分。actions有許多種類,PostbackTemplateAction可以在點選之後傳一個Postback,觸發我們前面提到的Postback事件。另外也有MessageTemplateAction事件,點選之後使用者會發出選單指定的訊息──再使用一般文字訊息事件做回應。

第七章、 發佈
最後就是架到雲端執行的部分。如果各位還記得我們開始寫程式前的步驟(申請帳號等等),那些都是為了現在所做的前期工作。
開啟聊天機器人python檔放置之資料夾,並在路徑列輸入cmd:
就會直接開啟命令提示字元,在底下依序輸入指令:
heroku login
git config –global user.name 你的名字
git config –global user.email 你的信箱
git init
heroku git:remote -a 前面步驟你為APP取的專案名稱
git add .
git commit -m “任意名字” 以後更新程式時下最後這三行藍字指令即可
git push heroku master
上傳完成,可以到Line添加你的開發者專案產生的機器人好友,開始測試。

Read More

Basic Stamp 教學專區

< Stamp in Class > 以下版權為 飆機器人_普特企業有限公司(PlayRobot) 所有

未經授權不得翻印或販售及從事任何商業行為與規範。

<繁體中文>

書名連結
智慧型機電整合 第一單元:
"WAM 什麼是微處理器?" 2.2版 (337頁)
Parallax / PlayRobot,台灣。
下載
智慧型機電整合 第二單元:
"機器人Boe - Bot " 2.2版 (384頁)
Parallax / PlayRobot,台灣
下載
智慧型機電整合 第三單元:
" 智慧型感測器及其應用 " 1.0版 (447頁)
Parallax / PlayRobot,台灣
下載
進階單元
" StampWorks BS2 專案開發手冊" 2.1版 (233頁)
Parallax / PlayRobot,台灣。
下載
BASIC Stamp 指令集_精簡版 (PBASIC)
歡迎email索取
Email

download

<英文版下載>
歡迎大專教師來此挖寶,學生的最愛,集結教學與生活應用的活用課程

Stamps in Class&Trade TitleLink
"What's a Microcontroller?" (v3.0) (354pp.)
智慧型機電整合 第一單元
Downloads
Robotics with the Boe-Bot (v3.0) (310pp.)
智慧型機電整合 第二單元
Downloads
"Smart Sensors and Applications" v1.0 (340pp.)
智慧型機電整合 第三單元
Downloads
IR Remote for the Boe-Bot robot (v1.1) (200pp.)Downloads
"Applied Robotics with the SumoBot" v1.0 (266 pp.)Downloads
"Basic Analog and Digital" v1.4 (176 pp.)
如何加深訊號處理的概念與實做應用? 跟著這本書做就OK!!
Downloads
"Process Control" v1.0 (330 pp.)
藉由溫度實驗導入PID等控制的程序控制課程,由淺入深從實驗中導入控制觀念,加強學生學習效果!
Downloads

 

Read More

Basic Stamp 下載專區

BASIC Stamp 軟體下載資源

BASIC Stamp Windows 開發編輯器 是一款操作於Windows 作業系統的編譯軟體,支援所有的BASIC Stamp® 系列模組亦包含BASIC Stamp® 1 的系列產品(此部分假設你已經擁有開發BS1所需的BS1 Serial Adapter 或 BS1 Project Board).

PBASIC 2.5 最大的特色在於語法簡單明瞭, IF…THEN…ELSE, 等邏輯判斷指令,如同一般口語化的方式來編寫程式,大大降低了初學者學習程式語言的難度,使此語法的最大特色。PBASIC 2.5只支援BS2系列的控制器模組, BASIC Stamp 1 模組需要使用PBASIC 1.0.的語法來編輯。

系統需求:

  • PC: Pentium 133MHz或更高等級, 32MB RAM, VGA 顯示
  • MAC: G3 或更高等級 64MB RAM, Color display.

 

- Windows 作業系統相容軟體 -
PBASIC_BASIC Stamp Windows開發編輯器v2.5.3-R2
(支援 Windows 2K/XP/Vista/7/8/8.1)
包含軟體, USB驅動程式, 範例程式及全系列的BASIC Stamp 模組協助資訊
連結
BASIC Stamp Windows 開發編輯器v2.3.9
(建議作業系統為 Windows 98/ME/NT4 的使用者)
這是BASIC Stamp Editor 最終版的程式開發環境,完全支援早期至現今的Win2K 的Windows作業系統。
連結
- Mac 作業系統相容軟體 -
BASIC Stamp Macintosh 開發編輯器 - v3.0.6
支援新的 tokenizer ,因此 PBASIC 2.0 and 2.5. 由英國的使用者Murat 自行開發,本公司不提供任何技術上的支援,請參考右邊的連結資訊。
連結
- Linux 作業系統相容軟體 -
BASIC Stamp Linux Solution
由玩家 Randy Hootman分享,本公司不提供任何技術上的支援。
連結
PBASIC Editor for Linux part 1連結
PBASIC Editor for Linux part 2連結
- 進階擴充的軟體資訊 -
Parallax USB Oscilloscope Software v4.0.0 - (只支援 Windows 2K 及 XP)
提供您獲得波形訊號量測與易於使用的游標及讀出數值。
連結
Parallax USB Oscilloscope Software v5.1.1 - (完全支援 Windows 2K/XP/Vista/7)
提供您獲得波形訊號量測與易於使用的游標及讀出數值。
連結
PLX-DAQ Real-Time Data Acquisition for Microsoft Excel
PARALLAX的數據採集工具軟體(PLX-DAQ)可將任何一款PARALLAX微控制器輸出的數據轉置到 Microsoft Excel中已列的方式做資料排列,最多可獲得26組的通道數據。 PLX-DAQ提供了方便的電子表格可在數據採集現場分析收集到的數據,並進行圖表分析或數據分析。
連結
StampPlot Lite
Version: 1.7 圖像圖形工具是一款數位條狀圖表記錄器,讓你可將BASIC Stamp輸出的資料轉換成視覺圖形並將資料記錄起來。
連結
StampPlot Pro
Version: 8.5 完整版且可由BASIC Stamp控制的GUI圖像圖形工具,個人或教育使用者可免費註冊使用,由Selmaware 所開發。
連結
BASIC Stamp Tokenizer
Version: 1.23 你想創造自己的BASIC Stamp開發環境嗎?你想要提供相同的軟件在其他平台上嗎?那您可以參考此部分的資料。
連結
綠色能源實驗與解析巨集
StampPlot Pro Energy Manual macros
連結
     

 

Read More

Propeller 下載專區

Propeller 軟體下載資源

Propeller具有8個核心,能夠達到完全多工。這八個核心是完全相同的,他們可以同時控制Propeller上的32支I/O Pin,所以每個核心都具有獨立完成工作的能力。這八個核心都具有屬於自己的一塊獨立記憶體,同時也能夠輪流存取一塊八個核心共享的主記憶體,讓他們能夠交換彼此的資訊。

- Propeller Spin語法 -
Propeller/Spin Tool Software v1.3.2
Propeller編譯軟體, USB 驅動程式, Propeller 手冊, PE Kit Labs 文件及範例程式, 電路圖, 快速指引參考, Propeller Help 及教學範例。
下載 (.zip)
Propellent (Library and Executable) v1.6
提供相當完整的資料庫讓軟體開發商及一般使用者用戶可以更完整的應用於他們的專案。
下載 (.zip)
Parallax Serial Terminal v1.2.4
一個方便的工具是款簡單方便的串口程式,方便與Propeller這類串列通訊導向微控制器做溝通,該軟體包含已含在Propeller安裝程式中,並廣泛使用於 Propeller PE Lab 套件裡(見下文)。
下載 (.zip)
ICCV 7.04 for Propeller Demo
此為免費的ICCV7 45 天試用版,45 天之後會將程式碼限制在 10 K 大小的容量給供非商業用的使用者使用,亦可以向本公司訂購非商業用版本或標準版。
試用版
- Propeller GCC 語法 -
SimpleIDE Software 1.0 RC2 (windows) 安裝說明下載 (.exe)
SimpleIDE Software 1.0 RC2 (mac) 安裝說明下載 (.pkg)
SimpleIDE Software 1.0 RC1 (Linux) 安裝說明64 bit (.deb)
32 bit (.deb)
SimpleIDE Software 0.9.45 (RaspberryPi) 安裝說明下載 (.bz2)
- Propeller 手冊 -
Propeller Manual v1.2 (.pdf)連結
Propeller Data Sheet v1.4 (.pdf)連結
Propeller Manual v1.0 - 簡體中文譯本 (.pdf)連結
更多Propeller 教育學習資訊 原廠學習頁面
- Propeller 應用說明及物件資料庫 -
AN001 - Propeller Counters ( v2.0 )連結
The Propeller Object Exchange
由Propeller用戶及原廠Parallax工程師所建立並認可可使用的物件資料庫,擁有相當豐富的物件資訊。
連結
          

 

Read More

Arduino 軟體下載資源

  Arduino的開發環境是基於Java與Processing程式語言為基礎,以AVR-GCC編譯器與avr-libc、AVRlib函式庫所構成的開放原始碼開發環境,它讓使用者可以很輕易的上手編寫程式並將程式上傳到I/O板上,它可以運行於市面上各種作業軟體如:Windows的Mac OS X,Linux….等等。

- Arduino 基本開發軟體 -
請記得下載最新軟體喔!下載頁面
Arduino IDE 開發環境(Windows)下載 (.exe)
下載 (.zip)
Arduino IDE 開發環境(Mac OS X)下載 (.zip)
Arduino IDE 開發環境(Linux: 32 bit, 64 bit)32 bit64 bit (.tgz)
Arduino IDE source連結
Arduino 舊版本IDE開發環境下載連結
- Arduino 手冊及語法參考說明 -
Arduino 指令解示參考說明連結
函式庫說明與應用連結
原廠指令詳解手冊下載 (.pdf)
- 各介面應用範例 -
各種介面參考範例程式連結連結
各種介面參考應用手冊下載 (.pdf)
- 應用教學資訊 -
Arduino 應用教學網頁1連結
Quarkstream應用教學網頁2連結
tronixstuff 應用教學網頁3-具有相當豐富的教學資源連結
Arduino Playground應用教學資訊連結
ArduBlock 圖控程式新增功能方塊_設計說明連結

Read More