---
# System prepended metadata

title: 2020/3/23 (2/5)
tags: [' 筆記', LineChatbot]

---

---
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



