> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook 端口

> 公開公共 API 端點以接收 HTTP POST 和 PUT 資料，支援 HMAC 身分驗證、速率限制、CORS 及自定義回應指令碼。

export const CommonCors = () => <>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>啟用跨源資源共享 (CORS)</strong></td>
          <td>是否啟用 CORS。僅當選中此框時，其餘選項才可用。</td>
        </tr>
        <tr>
          <td><strong>允許所有不帶 '*' 的域</strong></td>
          <td>如果啟用，域來源不限於特定清單。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Origin</strong></td>
          <td>要允許的以逗號分隔的域來源清單。作為 HTTP 回應訊息頭包含在內。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Credentials</strong></td>
          <td>跨域請求中是否允許使用者憑據（例如 cookie）。作為 HTTP 回應訊息頭包含在內。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Methods</strong></td>
          <td>允許的以逗號分隔的方法清單。作為 HTTP 回應訊息頭包含在內。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Headers</strong></td>
          <td>允許的訊息頭的逗號分隔清單。作為 HTTP 回應訊息頭包含在內。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Max-Age</strong></td>
          <td>可以快取 Access-Control 回應訊息頭值的最大持續時間（以秒為單位）。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const TrustedIp = () => <>
    <p><strong>可信 IP 地址</strong> 部分提供以下功能：</p>

    <table>
      <thead>
        <tr><th>功能</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr><td><strong>新增</strong></td><td>輸入新的 IP 地址範圍。</td></tr>
        <tr><td><strong>編輯</strong></td><td>修改選定的 IP 地址範圍。</td></tr>
        <tr><td><strong>刪除</strong></td><td>從清單中刪除選定的 IP 地址範圍。</td></tr>
      </tbody>
    </table>

    <p>以下限制適用於此功能：</p>

    <ul style={{
  listStyleType: 'disc',
  paddingLeft: '1.5rem'
}}>
      <li style={{
  display: 'list-item'
}}><code>localhost</code> 不能被修改或從清單中刪除。</li>
      <li style={{
  display: 'list-item'
}}>任何超出定義範圍的 IP 地址都將被拒絕。</li>
      <li style={{
  display: 'list-item'
}}>支援 IP 範圍。例如，項目 <code>100.10.100.1-15</code> 表示允許 <code>100.10.100.1</code> 和 <code>100.10.100.15</code> 之間的 IP 地址。</li>
      <li style={{
  display: 'list-item'
}}>支援無類別域間路由 (CIDR) 表示法。例如，項目 <code>100.10.100.0/24</code> 表示允許 <code>100.10.100.0</code> 和 <code>100.10.100.255</code> 之間的 IP 地址。</li>
      <li style={{
  display: 'list-item'
}}>支援萬用字元模式。例如，項目 <code>100.10.100.*</code> 表示允許以 <code>100.10.100</code> 開頭的 IP 地址。</li>
    </ul>

    <Note>
      <p>為了讓用戶端能夠存取伺服器，需要有清晰的網路路徑。在雲環境中，可能需要在三個地方進行更改：</p>
      <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>• 雲控制檯中的網路規則。</p>
      <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>• 託管應用程式的機器上的防火牆規則。例如，在使用 Amazon AMI 時，可以使用 <em>簡單防火牆</em>（UFW）來允許所需端口上的流量。Linux 環境中的常見策略是將流量從低於 1024 的端口轉寄到高於 1024 的非標準端口，同時將應用程式配置為使用非標準端口。這可以避免與非 root 使用者繫結到低於 1024 的端口相關的權限問題。</p>
      <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>• <a href="/26.3/self-hosted/zh/getting-started/administration/settings/security">安全</a> 索引標籤的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/network-access">網路存取</a> 部分。</p>
    </Note>
  </>;

export const SlasTab = ({siteName = "知行之桥"}) => <>
    <p><em>與配置服務級別協議 (SLA) 相關的設定。</em></p>
    <p>
      SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，{siteName} 會傳送電子郵件警告使用者，並將 SLA 標記為 <em>存在風險</em>，這意味著如果 SLA 未能儘快達到，則會被標記為 <em>已違反</em>。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。
    </p>
    <p>
      要定義 SLA，請啟用 <strong>預期資料量</strong>，然後點選 <strong>設定</strong> 索引標籤。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
      <li>在視窗的 <strong>預計至少</strong> 部分中：
        <ul>
          <li>設定預計處理的最小交易數量（交易量）</li>
          <li>使用 <strong>每個</strong> 欄位指定時間範圍</li>
          <li>指示 SLA 生效的時間。如果選擇 <strong>開始於</strong>，請填寫日期和時間欄位。</li>
          <li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 <strong>每天</strong>。</li>
        </ul>
      </li>
      <li>在視窗的 <strong>將狀態設定為“有風險”</strong> 部分中，指定應將 SLA 標記為有風險的時間。
        <ul>
          <li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 <strong>傳送“有風險”通知</strong>。</li>
        </ul>
      </li>
    </ul>
    <p>
      以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 <strong>設定</strong>，然後跳轉到 <strong>通知 &gt; 通用通知</strong>。點選平板和鉛筆圖示進行編輯，並取消勾選 <strong>SLA 通知</strong> 設定。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "知行之桥"}) => <>
    <p><em>與配置通知相關的設定。</em></p>
    <p>
      在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，{siteNameShort} 使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/alerts">通知</a> 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 <strong>覆蓋全域設定</strong>。
    </p>
    <p>
      預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 <strong>啟用</strong> 核取方塊。
    </p>
    <p>
      輸入 <strong>主題</strong>（必填）。勾選<strong>允許在主題中使用 ArcScript</strong>，即可在<strong>主題</strong>欄位中使用 ArcScript。選中後會顯示 <strong>ArcScript 編輯器</strong>按鈕（<img src="/public/images/rest_arcscript_editor.png" alt="ArcScript 編輯器按鈕" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      （可選）輸入以逗號分隔的<strong>收件人</strong>電子郵件地址清單。
    </p>
  </>;

export const Message = () => <>
    <p><em>訊息設定確定端口如何搜尋訊息並在處理後管理它們。</em></p>
    <p><strong>注意：</strong>以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇<strong>顯示成功路徑</strong>，然後將成功路徑連線到 <a href="/26.3/self-hosted/zh/connectors/file">File 端口</a>。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>儲存到已傳送資料夾</strong>（已棄用）</td>
          <td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受<a href="/26.3/self-hosted/zh/getting-started/administration/settings/encryption-at-rest">靜態加密</a>保護。</td>
        </tr>
        <tr>
          <td><strong>已傳送資料夾方案</strong>（已棄用）</td>
          <td>按所選時間間隔對 <strong>Sent</strong> 資料夾中的檔案進行分組。僅在啟用<strong>儲存到已傳送資料夾</strong>時適用。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MiscConnector = () => <>
    <p><em>特殊設定適用於特定用例。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>其他設定</strong></td>
          <td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 <code>setting1=value1;setting2=value2</code>。正常的端口用例和功能不需要使用這些設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Logging = () => <>
    <p><em>用於管理日誌建立和儲存的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>日誌級別</strong></td>
          <td>指定要記錄在端口日誌目錄中的資訊型別：
            <ul>
              <li><b>None</b> - 不建立任何日誌。</li>
              <li><b>Error</b> - 僅當端口遇到錯誤時才建立日誌。</li>
              <li><b>Warning</b> - 僅當端口發出警告時才建立日誌。</li>
              <li><b>Info</b> - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
              <li><b>Debug</b> - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
              <li><b>Trace</b> - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li>
            </ul>
            <strong>請注意：</strong><strong>Debug</strong> 和 <strong>Trace</strong> 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td>
        </tr>
        <tr>
          <td><strong>日誌資料夾結構</strong></td>
          <td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，<strong>Weekly</strong> 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td>
        </tr>
        <tr>
          <td><strong>保留訊息副本</strong></td>
          <td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MacrosExamples = ({extraMacros = []}) => <>
    <p>
      某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：<code>%Macro:argument%</code>
    </p>

    <p>以下是帶有參數的宏的一些範例：</p>

    <ul>
      <li>%Header:headername%：其中 <code>headername</code> 是訊息上訊息頭的名稱。</li>
      <li>%Header:mycustomheader% 解析為輸入訊息上設定的 <code>mycustomheader</code> 訊息頭的值。</li>
      <li>%Header:ponum% 解析為輸入訊息上設定的 <code>ponum</code> 訊息頭的值。</li>
      <li>%RegexFilename:pattern%：其中 <code>pattern</code> 是規則運算式模式。例如，<code>%RegexFilename:^([\w][A-Za-z]+)%</code> 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（<code>test_file.xml</code> 解析為 <code>test</code>）。</li>
      <li>%Vault:vaultitem%：其中 <code>vaultitem</code> 是 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/global-settings-vault">vault</a> 中專案的名稱。例如，<code>%Vault:companyname%</code> 解析為儲存在保管庫中的 <code>companyname</code> 項的值。</li>
      <li>%DateFormat:format%：其中 <code>format</code> 是可接受的日期格式（有關詳細資訊，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#sample-date-formats">範例日期格式</a>）。例如，<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code> 解析為檔案上的日期和時間戳。</li>
      {extraMacros.filter(item => item.example).map(item => <li key={`ex-${item.name}`}>{item.example}</li>)}
    </ul>

    <p>還可以建立更復雜的宏，如以下範例所示：</p>

    <ul>
      <li>將多個宏組合在一個檔名中：<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%</code></li>
      <li>包括宏之外的文字：<code>MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code></li>
      <li>在宏中包含文字：<code>%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%</code></li>
    </ul>
  </>;

export const MacrosTable = ({siteName = "知行之桥", extraMacros = []}) => <>
    <p>
      在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。
    </p>

    <p>{siteName} 支援這些宏，它們都使用以下語法：<code>%Macro%</code>。</p>

    <table>
      <thead>
        <tr><th>宏</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
        <tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
        <tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
        <tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
        <tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
        <tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
        <tr><td>RegexFilename:<em>pattern</em></td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
        <tr><td>Header:<em>headername</em></td><td>替換為端口正在處理的當前訊息的目標訊息頭（<code>headername</code>）的值。</td></tr>
        <tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
        <tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
        <tr><td>DateFormat:<em>format</em></td><td>以指定格式（<code>format</code>）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#date-formats-with-literal-characters">範例日期格式</a>。</td></tr>
        <tr><td>Vault:<em>vaultitem</em></td><td>計算指定保管庫專案的值。</td></tr>
        {extraMacros.map(item => <tr key={item.name}>
            <td>{item.name}</td>
            <td>{item.description}</td>
          </tr>)}
      </tbody>
    </table>
  </>;

export const companyName = "知行軟件";

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

Webhook 端口支援公開公共的 API 介面。

## 核心功能

* 公開 API 端點，支援透過 HTTP POST 和 PUT 進行資料攝取，並採用現代身分驗證機制
* 基於使用者的速率限制和並行請求管理，並支援 CORS
* 採用 HMAC 簽章身分驗證以增強安全性，並支援自定義回應事件指令碼
* 提供範例請求範本，用於 [XML Map](./xml-map/xml-map) 端口整合和工作流程自動化

## 概觀

Webhook 端口使資料能夠透過 HTTP POST 和 PUT 進入 {siteName} 工作流程。每個 Webhook 端口在應用程式中公開一個介面，外部用戶端可以向該介面傳送 XML 和 JSON 負載。這些負載將寫入輸出檔案，並傳送到工作流程中下一連線的端口。

可以在 Webhook 端口中指定範例請求，以簡化 POST 到端點的資料轉換流程。指定 XML 範例後，將 Webhook 端口連線到流程中的 [XML Map](./xml-map/xml-map) 端口，XML Map 端口會自動檢測釋出到端點的 XML 檔案的預期結構。然後，可以使用 XML Map 端口的[節點值編輯器](../mapping/mapping-node-value-editor)將此結構對映到目標 XML 結構。

## 端口配置

本節包含所有可配置的端口屬性。

### 設定索引標籤

#### 端口設定

*與端口的核心操作相關的設定。*

| 設定             | 描述                        |
| -------------- | ------------------------- |
| **端口 ID**      | 端口的靜態唯一識別碼。               |
| **端口型別**       | 顯示端口名稱及其功能描述。             |
| **端口描述**       | 可選欄位，用於對端口及其在流中的角色進行自由描述。 |
| **Webhook 端點** | 介面所在的生成的 URL（基於端口名）。      |

#### 進階設定

| 設定               | 描述                                                                                        |
| ---------------- | ----------------------------------------------------------------------------------------- |
| **本地檔名方案**       | 用於為端口輸出訊息分配檔名的方案。可在檔名中使用宏動態包含識別碼和時間戳等資訊。更多資訊請參閱[宏](#宏)。                                   |
| **啟用 HMAC 身分驗證** | 勾選**啟用**以使用 HMAC（基於雜湊的訊息認證碼）簽章身分驗證來驗證 Webhook 請求的真實性和完整性。詳細資訊請參閱 [HMAC 身分驗證](#hmac-身分驗證)。 |
| **HMAC 簽章標頭**    | 簽章標頭值。預設值為 `x-cdata-hmac-signature`，但可以自定義。                                               |

### 請求詳情索引標籤

提供一個 XML 或 JSON 範本，表示傳入資料的預期結構。指定範例請求的主要好處是將 Webhook 端口連線到工作流程中的 [XML Map](./xml-map/xml-map) 端口。當 API 資料需要轉換為其他格式（例如 EDI 報文或資料庫插入）時，應使用 XML Map 端口。

XML Map 端口會檢測範例請求的 XML 結構，並將其用作 XML Map 端口的**來源檔案**。將代表目標格式的 XML 結構上傳為**目的檔案**，然後使用節點值編輯器將源結構轉換為目標結構。

### 使用者索引標籤

**使用者**索引標籤可讓您：

* 建立使用者及其關聯的 authtoken 和 OAuth 2.0 憑據
* 定義 POST 和/或 PUT 權限
* 指定每個使用者每小時可以發出多少個請求
* 指定允許多少個並行請求

可以在此索引標籤上新增、編輯和刪除使用者。有關每個欄位的詳細資訊，請參閱"新增或編輯使用者"。

<Note>此處的請求設定會覆蓋**伺服器**索引標籤的[預設速率限制](#預設速率限制使用者)部分中的設定。</Note>

### 伺服器索引標籤

#### 受信任的 IP 地址

<TrustedIp />

#### 預設速率限制／使用者

*如果"使用者"索引標籤上未提供值，則限制允許的請求數量的設定。*

| 設定           | 描述                     |
| ------------ | ---------------------- |
| **每小時最大請求數** | 單個使用者在一小時內可以發出的請求數的限制。 |
| **最大並行請求數**  | 使用者可以發出的並行請求數的限制。      |

#### 跨域資源共享 (CORS)

*管理使用 CORS 來服務跨域資源的設定。*

<CommonCors />

#### 進階設定

| 設定                   | 描述                                                                                  |
| -------------------- | ----------------------------------------------------------------------------------- |
| **URL 中的 Authtoken** | 選中此項以允許端口在查詢字串參數中傳遞 authtoken 以進行身分驗證。更多資訊請參閱[使用身分驗證權杖作為查詢字串參數](#使用身分驗證權杖作為查詢字串參數)。 |

### 進階選項卡

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他

<MiscConnector />

### 告警索引標籤

<AlertsTab />

### SLA 索引標籤

<SlasTab />

## HMAC 身分驗證

HMAC（基於雜湊的訊息認證碼）簽章身分驗證是一種加密方法，用於驗證 Webhook 請求的真實性和完整性。它使用共享金鑰為每個請求生成唯一的簽章，從而確保：

* 請求真實性：確認請求來自可信來源
* 資料完整性：驗證請求負載在傳輸過程中未被篡改
* 重放攻擊防護：防止攔截的請求被惡意重用

與基本身分驗證或 API 金鑰等更容易被破解的傳統身分驗證方法相比，HMAC 身分驗證的安全性顯著增強。

擁有專業版或企業版[許可證](../getting-started/administration/settings/license-settings)的使用者可以為傳入的 Webhook 請求啟用 HMAC 簽章身分驗證。

### 配置

<Warning>HMAC 身分驗證是一項全域設定，適用於所有獲得 Webhook 存取授權的使用者。</Warning>

1. 啟用 HMAC 身分驗證
   1. 在 Webhook 端口設定中勾選**啟用 HMAC 身分驗證**。
   2. （可選）自定義 HMAC 簽章標頭值（預設值為 `x-cdata-hmac-signature`）。

### 為使用者設定 HMAC 金鑰

啟用 HMAC 身分驗證後：

1. 導航至 Webhook 端口的**使用者**索引標籤。
2. 為每個授權的 Webhook 使用者配置 HMAC 金鑰：
   1. 系統會為每個使用者自動生成一個 HMAC 金鑰。您可以使用自定義值覆蓋自動生成的金鑰。每個使用者必須使用分配的 HMAC 金鑰為其 Webhook 請求生成有效的簽章。

## Auth Token 身分驗證

使用者可以透過在請求中提供 authtoken 來存取 Webhook 資源。透過在[使用者](#使用者索引標籤)索引標籤上新增或編輯使用者並導航到**身分驗證**索引標籤來管理使用者和 authtoken。

在使用者呼叫 Webhook 介面之前，還必須設定連線的受信任 IP 地址。在**伺服器**索引標籤的[受信任的 IP 地址](#受信任的-ip-地址)部分中進行設定。預設情況下，所有 IP 地址均受限制。

### 在基本身分驗證中使用身分驗證權杖

使用基本身分驗證時，應將使用者的 authtoken 用作密碼。

### 在 HTTP 標頭中使用認證權杖

將 HTTP 標頭 `x-{companyName}-authtoken` 與 authtoken 一起新增為 HTTP 請求的一部分。

### 使用身分驗證權杖作為查詢字串參數

要允許端口在查詢字串參數中傳遞 authtoken，請在**伺服器**索引標籤的[進階設定](#進階設定)部分中勾選 **Allow authtoken in URL**。

啟用此功能後，可以將 authtoken 指定為 `@authtoken` 參數的值，該參數可以作為 HTTP 表單資料或查詢參數的一部分提供。

## OAuth 2.0 身分驗證

使用者可以使用 OAuth 2.0 身分驗證來保護 Webhook 資源。透過在[使用者](#使用者索引標籤)索引標籤上新增或編輯使用者並導航到**身分驗證**索引標籤來管理使用者和 OAuth 憑據。

## 接收資料

將資料上傳到 Webhook 介面時，Web 請求的主體將作為輸出檔案寫入並傳送到工作流程中下一個連線的端口。這允許使用靈活的方法透過呼叫外部 API 來呼叫 {siteNameShort} 工作流程。

<Tip>在 Webhook 端口中未驗證上傳到介面的資料，如有必要，稍後應在工作流程中對其進行驗證。</Tip>

## 自定義回應

通常，Webhook 端口接受帶有請求已接受的權杖回應的釋出資料，但可以使用 `Response` 事件自定義回應，其中 `_request`、`_httpheaders`、`_response` 和 `_message` 特殊專案可用。指定後，端口期望透過 `_response` 項提供自定義回應。

您還可以使用 `Response` 事件，透過以下屬性推送自定義輸出項：

* **Filename**：傳遞到下游工作流程的輸出訊息檔名。
* **Data**：包含在傳遞到下游工作流程的訊息中的資料。對於二進位資料，請改用 Base64Data 屬性。
* **Base64Data**：包含在傳遞到下游工作流程的訊息中的 Base64 編碼資料。
* **HeaderNames#**：包含在傳遞到下游工作流程的訊息中的標頭名稱清單。使用 HeaderValues 屬性在匹配的索引處指定這些標頭的值。
* **HeaderValues#**：包含在傳遞到下游工作流程的訊息中的標頭值清單。這些值用於 HeaderNames 清單中相同索引處定義的標頭名稱。
* **Logs#**：包含在交易日誌中的日誌項目清單。

### 範例

若要將包含 Webhook 請求正文的檔案（帶有自定義檔名和標頭）推送到下游工作流程中，`Response` 事件中的 ArcScript 可能如下所示：

```xml theme={null}
<arc:set attr="out.Filename" value="MyCustomFilename.xml" />
<arc:set attr="out.Data" value="[_message.body]" />
<arc:set attr="out.HeaderNames#1" value="MyHeader1" />
<arc:set attr="out.HeaderValue#1" value="MyHeader1Value" />
<arc:push item="out" />
```

例如，要將傳入請求上的訊息頭顯示為向下傳遞的訊息上的訊息頭，`Response` 事件中的 ArcScript 可能如下所示：

```xml theme={null}
<arc:set attr="_message.header:MySpecialHeader" value="[_httpheaders.MyWebhookHeader]" />
<arc:set attr="_response.header:Content-Type" value="application/xml" />
<arc:set attr="_response.write" value="<Status>Successfully processed message with MySpecialHeader=[_message.header:MySpecialHeader]</Status>" />
```

使用上述 ArcScript 中的 `Response` 事件，用戶端可以傳送類似於以下內容的請求：

```http theme={null}
POST https://localhost/connector/Webhook1/webhook.rsb HTTP/1.1
content-type: application/xml
X-{siteNameShort}-Authtoken: 1s7U4w0a2P3l8v9W3l0q
MyWebhookHeader: Hello World!

<Items>
  <Webhook>Hello World!</Webhook>
</Items>
```

並收到以下回復：

```http theme={null}
HTTP/1.1 200 OK
Connection: close
Date: Tue, 31 Aug 2021 19:16:13 GMT
X-Frame-Options: SAMEORIGIN
Content-Type: application/xml
Content-Length: 81
Server: Jetty(9.4.z-SNAPSHOT)

<Status>Successfully processed message with MySpecialHeader=Hello World!</Status>
```

## 宏

<MacrosTable />

### 範例

<MacrosExamples />
