---
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. 新增筆記本

- 3.若要選擇顯卡,可從:執行階段->變更執行階段類型->筆記本設定 做選擇


- 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

### 流程:
1. #### 啟動001程式碼 (右上方按下連線,連線成功會出現圖示:ex:ram..磁碟)

2. #### 修改一小段內容
-> (我改成hello python)
3. #### 執行(執行階段->全部執行)
4. #### 觀看結果
將此網址於新分頁開啟

5. #### 剛剛修改的東西會呈現在網頁上

### 流程圖示化

----
### 001程式碼解釋
1. 安裝flask套件
```
在cotlab下指令時 前面會加!
!表示命令列執行
```
- flask -> python是http server框架
- line-bot-sdk ->python跟line溝通用的套件
- flask-ngrok->

### 程式碼示範
新增下列程式碼

打完之後 停止執行colab 再重新執行

執行階段->中斷執行
接著再重新 執行階段->全部執行

新的的網址中打開 會發現是第一次修改的內容

於此網址後面加上 -> /abc 會出現剛剛新增程式碼指令 的執行結果

由此延伸 解釋下列程式碼

於剛剛相同網址後面打上

```
延伸提問:
?是什麼-> query string 查詢字串
給我們server使用的參數
?變數1=變數內容&變數2=變數內容
example:xxxxxxxxx.ngrok.io/calculate?v1=123&v2=456
```
出現執行結果

---
小結:
在人類的世界裡,會有很多的異性,為了要能夠談戀愛,我們必須要用一些共同的方式溝通,比如眼神,說話。在網際網路的世界裡,會有很多的網民消費者,為了要能夠有效跟們溝通,最常用的是http server的方式,於是我們展示了python編寫http server的方式,並希望大家能打一遍,從中發現它的規律。
---
### 規律
* 安裝套件
* 引用套件
* 主程序建置
* 為主程序編寫入口,以及入口後面的方法
* 主程序執行

#### 註解
```
#單行註解
‘’‘’‘’ 多行註解 (單雙引號6個)
”“””“”多行註解
```
---
colab 一次只能執行五個檔案 若不執行需要終止執行
管理工作階段->終止


---
### Line 開發者帳號

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