和 AI 一起寫程式:創意生活應用 第 7 週 2026-10-19(一) 觀念頁
Webhook、雲端、通道、轉接站與密碼:用手點、用眼看
這頁是觀念,動手步驟在互動頁。這裡每一節都是一個觀念、一個可以按的東西、三句白話;全部在你瀏覽器裡假裝,不連網、不碰你的 bot。先玩這頁再去做步驟,第 3 段改程式時會比較知道自己在做什麼。
1 Webhook:誰打給誰
- Webhook 一句話:不是你去問 LINE,是 LINE 主動打到你給它的網址。
- 所以那個網址要「外面連得到、而且一直開著」——Apps Script 的
/exec就是。 - 你的筆電沒有公開網址,LINE 打不到它,所以才需要通道(第 3 節)。
手機(LINE)你打了一句「明天下午三點要開會」
LINE 機房LINE 公司的電腦,永遠開著
你給它的網址Apps Script 的
/exec:外面連得到、一直開著按「傳一句話」,看那一小點怎麼走。
Webhook=人家主動找你、要有公開網址;polling=你主動去問、不用公開網址但一直在問。這週的 bot 走 Webhook,所以接收端一定要住在雲端(第 2 節)。
2 雲端在哪:這週的東西各住在哪台電腦
- 雲端就是別人機房裡的電腦:永遠開著、有公開網址。
- 你的筆電躲在分享器後面:沒有公開網址,關了就不在。
- 這週把 bot 留在雲端,只有「查 …」那條路回到你的電腦——所以關掉轉接站,待辦照常。
你的手機
LINE 住在這裡
雲端=別人的機房
永遠開著、有公開網址
你的電腦
筆電,在分享器後面;關了就不在
點一個元件,看它做什麼、什麼時候醒著。
實線框=別人機房裡一直開著的;虛線框=你的電腦,關了就不在。
3 為什麼要通道
- 通道借你一個外面連得到的門牌(
https://….trycloudflare.com),把打來的東西送進分享器後面的筆電。 - 門牌每次重開都會換:換了只要改指令碼屬性,不用重新部署。
- Webhook 不用動:LINE 還是打 Apps Script 的
/exec;是 Apps Script 走通道來找你的筆電。
通道給的門牌
https://….trycloudflare.com外面LINE 機房、Apps Script:都在雲端
分享器外面看不到裡面
你的筆電轉接站只聽
127.0.0.1:8787先按「從外面打打看」。
Apps Script 的指令碼屬性
SEARCH_RELAY_URL = (還沒填)門牌上的網址是假的示意,每次按「重開」會換一個,跟真的一樣。
4 轉接站與密碼:試著打打看
- 轉接站只聽
127.0.0.1:8787:外面只能從通道進來,而且要帶對密碼(x-relay-key)。 - 一次一題(
429)、最多想 45 秒(504):因為 LINE 的回覆碼只能用一次、而且很快就失效(官方沒給確切秒數)。 - 密碼不印在畫面上、只放剪貼簿和家目錄的
.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 金鑰放哪:程式碼,還是指令碼屬性?
- 會被偷走的(密碼、通行碼)、會換的(通道網址)、指著你資料的(試算表代號)→ 指令碼屬性。
- 規則與邏輯(「查 」才轉、分類五選一、等 50 秒)→ 程式碼。
- 程式碼會上 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":"問題"}),轉接站收的、回的都是這種。