傳一個範本給一個人,不必開啟收件匣。像跟同事說話一樣,在與 Octo 的聊天中打出你的 請求,Octo 就會找到範本並填好變數。它不會馬上傳送:它會把即將送出的內容原樣給你 看,只有你按下 確認 之後才會送出。這次傳送走的是和收件匣、API 相同的路徑,所以會 經過同樣的檢查,也會落在同一個對話裡。
這是給一次一位收件人用的。要傳給整份名單,請用 行銷活動。WhatsApp 為什麼 需要範本,請見 什麼時候 WhatsApp 訊息必須是範本。
一個請求範例
潮汐洗衣店有一個已核准的實用類範本 pickup_confirmation,內文是
{{1}}您好,您的收件已確認在{{2}}。如需更改,請直接回覆。
安娜上週來問過洗棉被的事,說晚點再聯絡,之後就再也沒有來訊息。你輸入:
傳收件確認給林安娜,時間是週二上午 9–11 點。
Octo 被設定為依這個順序處理:
- 找到安娜。 名字會在你的聯絡人裡查找;電話號碼可以直接使用。不論哪一種,最後
都必須是國際格式(
+14255550123)—— 其他格式都會被傳送拒絕。 - 查看她上次聯絡的時間。 安娜上次在 WhatsApp 上傳訊息的時間,告訴 Octo 24 小時 視窗是否開啟,以及今天是否已經有人傳過訊息給她。
- 找到範本。 Octo 依名稱和顯示名稱搜尋你的範本,只看已核准的。
- 填寫變數 ——
{{1}}=安娜,{{2}}=週二上午 9–11 點—— 並準備好這次 傳送。Octo 會說它已經準備好、等你確認;它不會說「已傳送」。 - 等你。 聊天中會出現一張卡片 —— 見下文。在你按下 確認 之前,安娜什麼都 收不到。
每一步 Octo 都會用自己的話來描述。本篇其餘部分說明的檢查,每次都由傳送本身執行。
說清楚用哪個範本,以及每一個值
你的請求說得越具體,Octo 需要替你選的就越少:
傳
pickup_confirmation範本給 +14255550123。名字:安娜。時段:週二上午 9–11 點。
如果你只描述訊息內容,Octo 會挑最合適的已核准範本,並告訴你它選了哪一個。如果你的 請求裡缺了某個變數,要嘛補上,要嘛等它來問 —— 範本永遠不會帶著空位送出去(見下文)。
帶按鈕的範本也可以。潮汐洗衣店那個附 複製代碼 按鈕的行銷類範本,會把優惠碼當作 一個值:
傳
duvet_promo範本給王浩,優惠碼是 FRESH20。
傳送前先確認
在主控台的聊天中,準備好的傳送會顯示為一張卡片,標題是 要傳送這個 WhatsApp 範本嗎?:
| 行 | 顯示內容 |
|---|---|
| 收件人 | 要傳往的號碼 —— +14255550123 |
| 範本 | 範本及其語言 —— pickup_confirmation(zh_TW) |
| 變數值 | 每個值和它填入的位置,依順序:先頁首,再內文,再按鈕 —— 內文 1 → 安娜、內文 2 → 週二上午 9–11 點 |
| … 到期 | 這個請求何時失效:Octo 準備好之後 24 小時 |
然後是 確認 或 取消。
- 確認 就會傳送。卡片變成 已傳送,聊天中會出現一則備註:Done ✅ — Template “pickup_confirmation” sent to +14255550123 via WhatsApp. 如果 WhatsApp 或下面某項 檢查拒絕了它,卡片會顯示 未傳送 並附上原因。
- 取消 不會傳送任何東西。卡片顯示 已取消 — 未傳送任何內容。
- 什麼都不做 也不會傳送任何東西。24 小時後卡片顯示 已過期 — 未傳送任何內容。
幾個要緊的細節:
- 看值,不要只看號碼。 卡片是發現填錯位置或打錯字的最後機會。要改什麼,就取消後 重新提出請求。
- 按鈕會等 Octo。 Octo 還在寫回覆時,卡片會顯示 請等 Octo 回覆完畢後再確認。
- 幾個範本,就有幾張卡片。 在一個聊天中請求兩次傳送,你會得到兩張卡片;每張都 單獨確認或取消。
- 之後再回來也是安全的。 重新整理頁面,卡片會顯示實際發生了什麼。已經傳送、已 取消或已過期的請求,再也不會顯示可用的按鈕,連按兩次 確認 也不會傳兩次。
- 誰能確認。 只有向 Octo 提出請求的人,或是工作區的擁有者或管理員,才能確認或 取消它。
透過電子郵件、WhatsApp 或 Slack 與 Octo 對話時
Octo 在那裡也會先問。訊息會說明它要做什麼,並附一個短代碼。透過電子郵件時,你回覆這個 代碼;在 WhatsApp 和 Slack 上,還有 Confirm 和 Cancel 按鈕。你核准的那一行會 寫明範本、號碼和各個值:
Send WhatsApp template "pickup_confirmation" (en_US) to +14255550123 — body 1: "Ana", body 2: "Tuesday, 9–11am"
名稱看起來像驗證碼的位置 —— otp、pin、token —— 它的值在這一行裡會顯示為
••••。無人回應的請求在 24 小時後到期,不會傳送任何東西。
Octo 會拒絕什麼
所有拒絕都發生在聯繫 WhatsApp 之前,而且 Octo 會被告知原因。
| 情況 | 結果 |
|---|---|
| 範本處於待處理、已拒絕、已暫停或已停用狀態 | 拒絕:只有已核准的範本才能傳送。 |
| 缺少某個變數,或是給了空值 | 拒絕,並指出是哪個位置 —— 例如 body is missing variable “customer_name”,或是內文需要 2 個值卻只收到 1 個。 |
| 某個值太長 | 拒絕。複製碼最多 15 個字符。 |
| 範本帶圖片、影片或檔案頁首 | Octo 無法提供檔案,所以傳送會被拒絕。請從你自己的系統傳送,它接受 Meta 完整的範本 payload。 |
| 範本所屬的 WhatsApp 號碼已不再啟用 | 拒絕。 |
| 工作區還沒有設定計費 | 以 Billing setup required 拒絕。 |
| 號碼傳送得太快,或已達到每日上限 | 拒絕,並給出需要等待的時間。Octo 會拿到這個等待時間,告訴你什麼時候再試;它並不會自己去重試。請見一個號碼能傳多快。 |
下面這些拒絕會在對話裡留下一則沒送出去的訊息,作為這次嘗試的紀錄:
- 顧客已取消訂閱 WhatsApp 訊息。 記錄為已攔截。Octo 無法繞過取消訂閱。
- WhatsApp 號碼仍在等待驗證。
- 工作區已被停權,或是目的地沒有為它開通。 記錄為失敗。
- Meta 拒絕了這則訊息。 記錄為失敗;Octo 會拿到 Meta 的錯誤,可以換別的值重試。
用自由格式文字代替範本
如果視窗是開啟的,Octo 可以原樣傳送你的話。說一句 「用 WhatsApp 告訴安娜:司機再 十分鐘到」,如果安娜在過去 24 小時內在這個號碼上傳過訊息,這段文字就會作為一般訊息 送出。
如果沒有,自由格式文字的傳送會以視窗已關閉為理由被拒絕。Octo 不會矇混過關:它 必須改用已核准的範本,沒有合適的範本時,它會直接告訴你。它可以幫你建立一個,但新範本 也要先經過 Meta 核准,才能有人收到。 把 WhatsApp 範本匯入 Omni Octo 說明了這部分。
訊息落在哪裡
- 由哪個號碼送出。 範本屬於某一個 WhatsApp 號碼,所以範本決定了傳送號碼。如果 你有兩個號碼,請指名同步在你想用的那個號碼上的範本。
- 落在哪個對話。 顧客的訊息原本所在的同一個對話,和 從你自己的系統傳送 完全一樣。安娜回覆時,她的回覆會進入這個對話。
- 誰來回答回覆。 Octo 不會接手對話。如果原本是 AI 智慧體在處理,現在仍然是它; 如果你已經接手了,對話仍在你手上。這一點和 在對話中傳送 不同,那裡你要先接手。
- 顯示什麼。 對話裡的這則訊息顯示填入了值的內文,記錄為由你傳送。它一開始是已 傳送狀態;已送達、已讀或失敗會在之後由 Meta 回報。
Octo 回覆裡的「已傳送」表示 Meta 接受了這則訊息,不代表安娜已經收到 —— 而且行銷類 範本可能永遠不會送達。
請求兩次就會傳兩次
每個請求都是一張新卡片,每張確認過的卡片都是一次新的傳送。跨請求之間沒有「已經傳過」 的檢查:如果你再請求一次,或是在一次其實已經送出的傳送之後請 Octo「再試一次」,而且 兩張都確認了,安娜就會收到兩次範本 —— 每一次都計入這個號碼的上限。確認重傳之前,先 看看上一張卡片的狀態。
Octo 做不到的事
- 傳給一份名單。 一個請求對應一位收件人;請用 行銷活動。
- 傳送帶媒體頁首的範本。 它沒有辦法提供檔案。
- 繞過取消訂閱,或是傳送未核准的範本。
- 在視窗關閉時把自由格式文字混過去。
聊天之外的 Octo
當和 Octo 對話的是程式而不是人時,傳送仍然要等一個人:
| 程式連線的位置 | 結果 |
|---|---|
/mcp —— 用 send_message 把工作交給 Octo | 暫緩。結果裡帶一個含代碼的 pending_action。在有人於同一對話中回覆 YES <code> 之前,不會傳送任何東西。 |
/mcp/tools —— 直接呼叫 Octo 的工具 | 以 confirmation_required 拒絕。 |
/v1,會儲存的對話 | 同樣暫緩,等待 YES <code> 回覆。 |
/v1,不儲存任何內容的請求 | 根本不提供。 |
如果你自己的軟體需要在不經人工逐則核准的情況下傳送範本,請直接呼叫範本傳送端點 —— 從你自己的系統傳送範本。