知情同意 (Consent)
- 新提案
- →
- 封閉測試
- →
- 公開測試
- →
- 已穩定
成熟度說明
- 新提案:未完成開發、請勿使用。
- 封閉測試:開發暫時性完成,可使用。可能仍有親和力或其他使用上問題待透過實測發現。
- 公開測試:開發暫時性完成,歡迎使用。具有完整親和力報告。
- 已穩定:開發完成、歡迎使用。應無任何親和力或使用上問題。
使用時機
知情同意用於使用者提供對話資料前,告知蒐集目的、使用範圍與相關權益。流程為「告知 → 選擇 → 服務確認 → 開放訊息輸入區」,只選取「同意」不代表選擇已保存。它是開始對話前的事前告知,不是長期資料偏好(持續管理請改用資料授權 (Data Ownership)),也不能以網站的 Cookie Banner 代替。
基本範例
HTML
<!-- 請將 action、服務條件及政策連結換成實際服務內容。 -->
<form
class="consent"
method="post"
action="/conversations/example/consent"
aria-labelledby="consent-basic-title"
>
<h3 id="consent-basic-title" class="consent__title">開始對話前的知情同意</h3>
<p class="consent__example-note">以下為虛構服務條件,不是本網站的資料政策。採用前須換成可履行的事實,並連接服務後端。</p>
<p class="consent__intro">請先閱讀告知、選擇並送出;服務確認本次同意已保存後,才開放訊息輸入區。只選取「同意」不代表服務已取得可處理對話資料的許可。</p>
<p class="consent__description">本範例只處理您主動送出的對話資料。請勿提供個人資料、機密內容或未經授權的他人資料。</p>
<dl class="consent__details">
<dt>蒐集目的</dt>
<dd>處理您接下來主動送出的訊息,產生回覆並維持本次對話脈絡。</dd>
<dt>資料及使用範圍</dt>
<dd>只處理您在對話中主動送出的資料,由範例服務與受託 AI 供應商用於回覆;不對外分享,也不用於模型訓練。</dd>
<dt>保存</dt>
<dd>本範例假設在本次對話結束後刪除對話資料;正式服務必須改成實際可履行的保存方式。</dd>
<dt>相關權益</dt>
<dd>您可以不提供資料;提供前可更改選擇或離開;提供後可透過服務提出查詢、更正、刪除或停止後續處理的需求。實際處理範圍與結果依服務說明,停止後續處理不代表能消除先前已完成的處理。</dd>
</dl>
<p class="consent__alternative">不同意時,不提供對話資料;可改用服務說明、客服或臨櫃等其他服務管道。</p>
<p><a href="/conversations/example/data-policy">查看資料使用與權益說明</a></p>
<fieldset class="consent__choices" aria-describedby="consent-basic-hint">
<legend>是否同意提供對話資料供本次 AI 服務使用?(必填)</legend>
<p id="consent-basic-hint" class="consent__hint">請選擇一項,再送出選擇。選取本身不會傳送訊息,仍須明確送出。</p>
<div class="consent__choice">
<input id="consent-basic-agree" name="data_consent" type="radio" value="agree" required>
<label for="consent-basic-agree">同意並開始對話</label>
</div>
<div class="consent__choice">
<input id="consent-basic-decline" name="data_consent" type="radio" value="decline" required>
<label for="consent-basic-decline">不同意,改用其他服務管道</label>
</div>
</fieldset>
<p id="consent-basic-save-error" class="consent__error" hidden></p>
<div class="consent__actions">
<button class="button button-primary" type="submit">送出選擇</button>
</div>
</form>- 告知與不同意時的替代管道在選項前可見;初始不預選,改選也不會送出。
- 明確送出後顯示並聚焦對應的「下一步」標題。表單下方「示範設定」中的「模擬送出失敗」可檢查錯誤訊息與重試;本頁沒有真實對話服務。
範例資料說明
表單中的資料用途與保存方式都是虛構條件,並非本網站的資料政策。正式服務須提供實際處理範圍、保存方式與權益聯絡窗口。
停用 JavaScript 時
靜態示範只會以網址參數返回本頁,不會保存選擇;正式服務須由後端接收並保存。
採用方式
可採用的 HTML 以原生表單 POST 至服務後端(本頁示範改用 GET,只為了在沒有後端時返回本頁)。請把表單中的資料條件、提交網址與政策連結換成服務的實際內容。
- 表單
id在頁面中唯一,並有可區別的可見標題;保留name="data_consent"、agree/decline值與required,初始不預選,只依伺服器收到的合法選擇回填checked。 - 不同資料用途各自提供明確選擇,不把模型訓練等其他用途綁成開始對話的條件。
- 同意是否成立由服務端判斷:驗證實際提交的值與告知版本(使用者同意時所見告知內容的版本),確認已保存後才開放訊息輸入。未同意、選擇無效、版本過期或保存失敗時,不處理對話資料;訊息 API 也須自行確認同意狀態,不能只靠畫面鎖定。
- 保存失敗時保留先前實際提交的合法選擇,在表單內的
.consent__error顯示「選擇尚未保存,請重試。」並移除hidden,允許重試;這是表單層級錯誤,不要把選項標為aria-invalid。 .consent(含.consent__error)是可採用的樣式;.guide-demo-consent、consent.demo.js與表單外的示範結果區([data-consent-demo-result])只供本頁示範,正式服務不需要。
親和力
- 使用原生
form、fieldset/legend、radio、label 與 submit,避免選取時自動提交或導頁。 - Consent 應置於對話紀錄
role="log"之外;成功、失敗與第一則訊息的播報由服務協調,避免重複。 - 若以 JavaScript 在同一頁顯示保存結果、不重新載入頁面,可比照本頁示範:成功後將焦點移至下一步的標題,失敗時移至錯誤訊息。
參考
- Grouping Controls - W3C WAI
- Understanding Success Criterion 3.2.2: On Input - W3C WAI
- User Notification - W3C WAI