iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

Line Bot 以python及Django建構系列 第 7

DAY7 Ngrok運行原理&安裝Ngrok

Ngrok運行原理

其實ngrok有客戶端ngrok和服務端ngrokd,在用戶客戶端發起請求時,就是這兩個端起作用轉發請求

1.當服務端接收到連接,就讀取映射表,判斷接收的端口對應於哪一個客戶端,然後向客戶端評論數據。
2.客戶端收到數據,讀取本地映射表,判斷對應哪個內網地址,向內網地址發起連接。
3.客戶端和內網的服務器建立連接後,向服務端發起一個連接,作為評論通道。
4.服務端讀取請求數據,並通過轉發反饋到客戶端,客戶端讀取響應並通過反饋返回請求。

我們可以看到如果要轉發數據,一定要ngrok客戶端和服務端建立鏈路通道,這樣就可以將請求數據轉發到我們的內網服務器。


安裝Ngrok

LINE Bot應用程式(APP)都完備後,接下來就要讓網址能夠公開(Public)且具有HTTPS,LINE頻道(Channel)才有辦法連結。

這時候除了可以將LINE Bot應用程式(APP)部署到像Heroku雲端平台,擁有對外公開的HTTPS網址外,還可以使用一個非常強大的工具-Ngrok。

Ngrok簡單來說,就是能夠將你本機的IP埠號(http://127.0.0.1:8000),對應到一個隨機產生的HTTPS網址,並且這個HTTPS網址是對外公開的(Public)的,這時候外部使用者只要透過這個HTTPS網址,就能夠存取本機所運行的服務,是不是非常的強大阿。

首先,前往Ngrok官網,如下圖:

點擊「Get started for free」後,會需要註冊一個帳戶,接著就會看到如下圖的畫面:

依據作業系統進行下載即可,而這邊要特別注意的是,在下方會有專屬於你的憑證(Token),如下圖:

將下載的檔案解壓縮,並且執行後,需要輸入以下的指令進行驗證:

ngrok authtoken

接著,就可以透過Ngrok,將本機的埠號對外公開,以本文為例,Django在本機運行的埠號為8000,所以輸入以下的指令:

./ngrok http 8000

執行結果

Ngrok就會隨機產生一個HTTPS的網址,只要把這個網址填入LINE Webhook URL,以及LINE Bot應用程式(APP) settings.py檔案中的ALLOWED_HOSTS,如下範例,LINE頻道(Channel)就能夠與LINE Bot應用程式(APP)互相連結:

ALLOWED_HOSTS = [
    'cf3fb14f6910.ngrok.io'  #允許的網域名稱
]

接著,利用以下的指令執行LINE Bot應用程式(APP):

python manage.py runserver


今天的歌曲是 周杰倫-世界未末日 Not the End of the World
https://www.youtube.com/watch?v=IteE-HMVJ1M&list=PLFl6Na2uUoOZBEhBtQ_jeGA4P1V20JvpW&index=7&ab_channel=%E5%91%A8%E6%9D%B0%E5%80%ABJayChou


上一篇
DAY6 建立Messaging API channel
下一篇
DAY8 Linebot 自動回應-1
系列文
Line Bot 以python及Django建構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言