和 AI 一起寫程式:創意生活應用 第 7 週 2026-10-19(一) 觀念頁

Webhook、雲端、通道、轉接站與密碼:用手點、用眼看

這頁是觀念,動手步驟在互動頁。這裡每一節都是一個觀念、一個可以按的東西、三句白話;全部在你瀏覽器裡假裝,不連網、不碰你的 bot。先玩這頁再去做步驟,第 3 段改程式時會比較知道自己在做什麼。

七個觀念
  1. Webhook:誰打給誰——按一下,看封包怎麼走;再看看改成 polling 會差在哪
  2. 雲端在哪——這週的東西各住在哪台電腦;W5、W6、W7 三種擺法
  3. 為什麼要通道——外面的箭頭撞牆;開通道、重開、網址換了改哪裡
  4. 轉接站與密碼——沒帶、帶錯、帶對;同時兩題、45 秒沒答完
  5. 金鑰放哪——八樣東西,程式碼還是指令碼屬性
  6. 小測驗——五題,馬上看對錯
  7. 名詞表——八個詞各一句

1 Webhook:誰打給誰

  1. Webhook 一句話:不是你去問 LINE,是 LINE 主動打到你給它的網址。
  2. 所以那個網址要「外面連得到、而且一直開著」——Apps Script 的 /exec 就是。
  3. 你的筆電沒有公開網址,LINE 打不到它,所以才需要通道(第 3 節)。
手機(LINE)你打了一句「明天下午三點要開會」
LINE 機房LINE 公司的電腦,永遠開著
你給它的網址Apps Script 的 /exec:外面連得到、一直開著

按「傳一句話」,看那一小點怎麼走。

Webhook=人家主動找你、要有公開網址;polling=你主動去問、不用公開網址但一直在問。這週的 bot 走 Webhook,所以接收端一定要住在雲端(第 2 節)。

2 雲端在哪:這週的東西各住在哪台電腦

  1. 雲端就是別人機房裡的電腦:永遠開著、有公開網址。
  2. 你的筆電躲在分享器後面:沒有公開網址,關了就不在。
  3. 這週把 bot 留在雲端,只有「查 …」那條路回到你的電腦——所以關掉轉接站,待辦照常。

你的手機

LINE 住在這裡

雲端=別人的機房

永遠開著、有公開網址

你的電腦

筆電,在分享器後面;關了就不在

點一個元件,看它做什麼、什麼時候醒著。

實線框=別人機房裡一直開著的;虛線框=你的電腦,關了就不在。

3 為什麼要通道

  1. 通道借你一個外面連得到的門牌(https://….trycloudflare.com),把打來的東西送進分享器後面的筆電。
  2. 門牌每次重開都會換:換了只要改指令碼屬性,不用重新部署。
  3. Webhook 不用動:LINE 還是打 Apps Script 的 /exec;是 Apps Script 走通道來找你的筆電。
通道給的門牌https://….trycloudflare.com
外面LINE 機房、Apps Script:都在雲端
分享器外面看不到裡面
你的筆電轉接站只聽 127.0.0.1:8787

先按「從外面打打看」。

Apps Script 的指令碼屬性 SEARCH_RELAY_URL = (還沒填)

門牌上的網址是假的示意,每次按「重開」會換一個,跟真的一樣。

4 轉接站與密碼:試著打打看

  1. 轉接站只聽 127.0.0.1:8787:外面只能從通道進來,而且要帶對密碼(x-relay-key)。
  2. 一次一題(429)、最多想 45 秒(504):因為 LINE 的回覆碼只能用一次、而且很快就失效(官方沒給確切秒數)。
  3. 密碼不印在畫面上、只放剪貼簿和家目錄的 .line-search-relay.key 檔——螢幕可能正在投影。

全部是假的模擬、不連網:按鈕只是把轉接站(line-search-relay.mjs)真正會回的字印出來給你看。

(這裡會印出你送了什麼、轉接站回了什麼、它的視窗印了什麼、手機或 testSetup 會看到什麼。)
回應碼意思你該做什麼
200通了。對密碼回 {"ok":true,"model":"gemma4:e4b"};問問題回答案+來源+秒數沒事
401密碼不對(沒帶跟帶錯一樣)檢查指令碼屬性的 SEARCH_RELAY_KEY;密碼要再複製一次:轉接站視窗印的那行 Get-Content … | Set-Clipboard
429正在回答上一題(顯示卡一次只答一題)等十幾秒再問
504想太久了(超過 45 秒)換個簡單一點的問法
連不到電腦關了、轉接站視窗被關掉、或通道換了網址重開轉接站,把新網址改進指令碼屬性

5 金鑰放哪:程式碼,還是指令碼屬性?

  1. 會被偷走的(密碼、通行碼)、會換的(通道網址)、指著你資料的(試算表代號)→ 指令碼屬性。
  2. 規則與邏輯(「查 」才轉、分類五選一、等 50 秒)→ 程式碼。
  3. 程式碼會上 GitHub、會被截圖、會整份貼給 AI;指令碼屬性只有你看得到。

點一樣東西、再點它該去的格子(用滑鼠也可以直接拖過去)。放錯會馬上告訴你為什麼。

程式碼 Code.gs

會上 GitHub、會被截圖、會整份貼給 AI

指令碼屬性

專案設定最下面那張表;只有你看得到、換了不用重新部署

先點一樣東西。

放對 0/8 

6 小測驗:五題,馬上看對錯

答案都在上面五節裡。分數只存在這台瀏覽器。

1. Webhook 是誰打給誰?

2. 為什麼 Apps Script 的 bot 不用通道?

3. 下課按 Ctrl+C 關掉轉接站之後,bot 哪些還在?

4. 重開轉接站、通道網址換了,要改哪裡?

5. 密碼為什麼不寫進程式?

答對 0/5 

7 名詞表

Webhook
不是你去問 LINE,是 LINE 主動打到你給它的網址;那個網址要外面連得到、而且一直開著。
polling(輪詢)
你的程式每隔幾秒去問一次有沒有新訊息;不用公開網址,但一直在問。
雲端(cloud)
別人機房裡的電腦——永遠開著、有公開網址;LINE 機房、Apps Script、Gemini 都在那裡。
通道(tunnel)
借一個外面連得到的門牌(https://….trycloudflare.com),把打來的東西送進分享器後面的電腦;每次重開門牌會換。
轉接站(relay)
你電腦上的一支小程式(line-search-relay.mjs):只聽本機 127.0.0.1:8787、對密碼、叫本地模型查、一次一題、最多想 45 秒。
指令碼屬性
Apps Script「專案設定」最下面的一張表,放網址與密碼;程式用 PROPS.getProperty 讀,不寫進程式、換了不用重新部署。
本地模型
跑在你電腦上的模型(Ollama 的 gemma4:e4b):會上網搜、附來源;電腦關了就沒了。
JSON
電腦之間傳資料用的大括號寫法,一個名字配一個值(例如 {"question":"問題"}),轉接站收的、回的都是這種。

看完了?回互動頁做步驟 | 回到頂端

↑