知情同意 (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>
  • 告知與不同意時的替代管道在選項前可見;初始不預選,改選也不會送出。
  • 明確送出後顯示並聚焦對應的「下一步」標題。表單下方「示範設定」中的「模擬送出失敗」可檢查錯誤訊息與重試;本頁沒有真實對話服務。

採用方式

可採用的 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 在同一頁顯示保存結果、不重新載入頁面,可比照本頁示範:成功後將焦點移至下一步的標題,失敗時移至錯誤訊息。

參考