--- title: 2020/3/23 (2/5) tags: LineChatbot, 筆記 --- # 2. Line chatbot ### Line 功能逐步體驗 --------- ### 雲原生 (Cloud Native) ### Colab google,Amazon 提供一個標準環境 無論是誰 甚麼時候連入 環境都是一樣的,python版本也會是一樣的,google出Colab 開發環境一樣,有顯卡(GPU) 資料分析深度學習都需要顯卡 #### 使用Colab 使用方式 * 1. [歡迎使用 Colaboratory - Colaboratory](https://colab.research.google.com/notebooks/intro.ipynb) - 2. 新增筆記本 ![](https://i.imgur.com/Gh9Wz23.png) - 3.若要選擇顯卡,可從:執行階段->變更執行階段類型->筆記本設定 做選擇 ![](https://i.imgur.com/7Lcf3ii.png) ![](https://i.imgur.com/7cWwvfJ.png) - 4. ------ ### 教材準備 到此網址 下載所有教材程式碼 * [GitHub - BingHongLi/ai-chatbot-tutorial](https://github.com/BingHongLi/ai-chatbot-tutorial) 解壓縮後 上傳到 google drive內 ### 教材體驗第一步 Flask line 與我溝通的方式: 用戶->Line->我方電腦 Line傳給我們的方式是網頁常用的協定:http 我們必須要讓我們的電腦變成http server 每一種程式語言都可以開發http server 我們用python寫,最常用的方式是使用Flask ![](https://i.imgur.com/7JIsiJt.png) ### 流程: 1. #### 啟動001程式碼 (右上方按下連線,連線成功會出現圖示:ex:ram..磁碟) ![](https://i.imgur.com/pLAeid2.png) 2. #### 修改一小段內容 -> (我改成hello python) 3. #### 執行(執行階段->全部執行) 4. #### 觀看結果 將此網址於新分頁開啟 ![](https://i.imgur.com/4ElaUIj.png) 5. #### 剛剛修改的東西會呈現在網頁上 ![](https://i.imgur.com/s3rRhOG.png) ### 流程圖示化 ![](https://i.imgur.com/fnBs2M5.jpg) ---- ### 001程式碼解釋 1. 安裝flask套件 ``` 在cotlab下指令時 前面會加! !表示命令列執行 ``` - flask -> python是http server框架 - line-bot-sdk ->python跟line溝通用的套件 - flask-ngrok-> ![](https://i.imgur.com/9KGz0jH.png) ### 程式碼示範 新增下列程式碼 ![](https://i.imgur.com/avDJxWH.png) 打完之後 停止執行colab 再重新執行 ![](https://i.imgur.com/iK6Eqbt.png) 執行階段->中斷執行 接著再重新 執行階段->全部執行 ![](https://i.imgur.com/hTeM93G.png) 新的的網址中打開 會發現是第一次修改的內容 ![](https://i.imgur.com/N29mLaf.png) 於此網址後面加上 -> /abc 會出現剛剛新增程式碼指令 的執行結果 ![](https://i.imgur.com/ASiF1s7.png) 由此延伸 解釋下列程式碼 ![](https://i.imgur.com/6b5uLwC.png) 於剛剛相同網址後面打上 ![](https://i.imgur.com/U1lLIXK.png) ``` 延伸提問: ?是什麼-> query string 查詢字串 給我們server使用的參數 ?變數1=變數內容&變數2=變數內容 example:xxxxxxxxx.ngrok.io/calculate?v1=123&v2=456 ``` 出現執行結果 ![](https://i.imgur.com/sB6Gwzy.png) --- 小結: 在人類的世界裡,會有很多的異性,為了要能夠談戀愛,我們必須要用一些共同的方式溝通,比如眼神,說話。在網際網路的世界裡,會有很多的網民消費者,為了要能夠有效跟們溝通,最常用的是http server的方式,於是我們展示了python編寫http server的方式,並希望大家能打一遍,從中發現它的規律。 --- ### 規律 * 安裝套件 * 引用套件 * 主程序建置 * 為主程序編寫入口,以及入口後面的方法 * 主程序執行 ![](https://i.imgur.com/a3sGhmH.jpg) #### 註解 ``` #單行註解 ‘’‘’‘’ 多行註解 (單雙引號6個) ”“””“”多行註解 ``` --- colab 一次只能執行五個檔案 若不執行需要終止執行 管理工作階段->終止 ![](https://i.imgur.com/PF6wlaA.png) ![](https://i.imgur.com/dZltaQ6.png) --- ### Line 開發者帳號 ![](https://i.imgur.com/bDZAht9.jpg) ### Line的溝通流程疏理: 消費者->訂單->郵局->公司地址->公司大門->總機->總機把消息轉發處理->回信人員->郵局->消費者 Line用戶->消息->Line平台->webhook(http網址)->app 的route ->webhookhandler收信->webhookhandler處理並轉發(專門收line發過來的消息 做文字圖片的處理)->LineBotApi(只有它能跟line互動)把消息傳回給Line->Line用戶 ---- 1.安裝套件 2.引用套件 3.設定app 4.建置line_bot_api,handler' 5.app.route()方法,消息稽核過濾,把那些消息都寫在log檔裡面,handler轉發 6.告知handler 如果收到關注事件(FollowEvent)就坐下面的方法 a.取個資 存起來 b.回話給用戶 7.運行APP 帳號沒辦就沒有channel_access_token,channel secret ### 辦帳號 google 搜尋 Line message api ---- 目標 做機器人 關注的時候 取個資 發歡迎詞 step1 Line的互動流程 生活案例 人類與資訊 line line機房 http server電腦 (PYTHON去開發)HTTP SERVER EMAIL->SMTP協定 共享檔案-ftp協定 網頁->http協定 1. 安裝套件 因為要做的是HTTP SERVER->FLASK example: 客戶 訂單 郵局 郵局 地址 公司大門 總機 專業單位處理 發信員 Create a channel Channel name 七天可以換名字 Channel secret Messaging API https://www.youtube.com/watch?v=5faH869bYZc ---- 機器人的 一 取個資 二 回傳文字圖片 三 回傳訊息 特殊功能 step 5 用戶發文字:我們回應文字 圖片 1. 發話 MessageEvent ->TextMessage->訊息的接收處理(HANDLER.ADD) 2. 用戶發話 為什麼要用特殊符號 第二件事情 用戶發來的TextMessage 官方建議加上特殊符號 NLP 用戶傳來 安安 我們跟他說 幾歲住哪 規則型 用戶傳來 安安 我們的機器人到底要做 規則 還是NLP 規則 → @安安 NLP → 安安 第三件事情 TextMessage 與 TextSendMessage TextMessage 用戶傳來的 TextSendMessage 我們傳給用戶的 回傳動作 最終展示 關注 取個資 QUICK REPLY只用一次 一次性輸入 範本訊息不適合 line REPLY 訊息 訊息 主動傳給用戶 就是push 推播有四種 1 to 1 -> push message 1 to all->broadcost 1 to list -> narrowcost 1 to 客製-> multicast 同一個Provider底下取得的同用戶user_id是一樣的 單體push 全體broadcast narrowcast 客製化推播multicast https://github.com/line/line-bot-sdk-perl