> ## 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.

# Peppol 端口

> 知行之橋Peppol 端口的配置和使用指南，用於透過 Peppol 網路安全、自動地交換電子發票和業務文件。

export const CommonProxySettings = () => <>
    <p>這是一組用於識別連線所經代理並對其進行身分驗證的設定。預設情況下，本節使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/security">安全設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/proxy-settings">代理設定</a> 部分中的全域設定。清除此核取方塊可為您的端口提供特定的設定。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>代理型別</strong></td>
          <td>基於代理的防火牆使用的協議。</td>
        </tr>
        <tr>
          <td><strong>代理主機</strong></td>
          <td>基於代理的防火牆的名稱或 IP 地址。</td>
        </tr>
        <tr>
          <td><strong>代理端口</strong></td>
          <td>基於代理的防火牆的 TCP 端口。</td>
        </tr>
        <tr>
          <td><strong>代理使用者</strong></td>
          <td>用於透過基於代理的防火牆進行身分驗證的使用者名稱。</td>
        </tr>
        <tr>
          <td><strong>代理密碼</strong></td>
          <td>用於對基於代理的防火牆進行身分驗證的密碼。</td>
        </tr>
        <tr>
          <td><strong>身分驗證方案</strong></td>
          <td>保留預設值 <strong>None</strong> 或選擇以下身分驗證方案之一：<strong>Basic</strong>、<strong>Digest</strong>、<strong>Proprietary</strong> 或 <strong>NTLM</strong>。</td>
        </tr>
      </tbody>
    </table>
  </>;

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 Performance = () => <>
    <p><em>與端口資源分配相關的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>最大工作執行緒數</strong></td>
          <td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
        <tr>
          <td><strong>最大檔案數</strong></td>
          <td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

Peppol 端口支援透過 Peppol (Pan-European Public Procurement Online) 網路安全、自動地交換電子發票和其他業務文件。此端口允許組織直接在 {siteNameShort} 中將其系統與 Peppol eDelivery 基礎設施整合，從而簡化歐洲及其他地區電子採購和電子發票法規要求的合規工作。該網路透過標準化的 Universal Business Language (UBL) 格式和安全的 [AS4](./as4) 協議訊息傳輸關鍵業務文件。

Peppol 網路採用四角模型架構，由傳送方、傳送方存取點 (AP)、接收方 AP 和最終接收方組成。此分散式基礎設施為跨國電子採購流程提供可靠且標準化的通訊路徑，存取點作為認證閘道器，負責在網路參與方之間安全傳輸文件。

## 核心功能

* 使用基於 AS4 的四角模型架構整合泛歐電子發票和電子採購網路
* 支援 Universal Business Language (UBL) 格式，並可基於參與方識別碼自動路由訊息
* 整合 SMP 以動態發現端點，並支援基於憑證的加密和數字簽章

## 概觀

Peppol 連線需要在兩個位置配置。首先在 Peppol [個人設定](../getting-started/administration/profiles)頁面中配置本地參與方識別碼和私有憑證。然後為每個交易夥伴配置單獨的 Peppol 端口及其連線設定。當 Peppol 端口處理輸入檔案時，該檔案會被打包並傳送給指定的交易夥伴。

當 {siteNameShort} 透過 Peppol 接收到檔案時，會嘗試將該檔案路由到特定的 Peppol 端口。應用程式使用 Peppol 訊息中的 Peppol 參與方識別碼來確定哪個 Peppol 端口應接收該檔案。當檔案被路由到 Peppol 端口時，該檔案會放入端口的交易索引標籤，並傳遞給工作流程中下一個連線的端口（如果存在）。

### 必要條件

在配置和使用 Peppol 端口之前，必須完成以下操作：

1. 轉到 [https://Peppol.org/](https://Peppol.org/) 註冊並完成認證，以成為 Peppol 存取點。

2. 向外部 SMP (Service Metadata Publisher) 註冊。你必須註冊到現有 SMP，或自行託管 SMP。

## 個人設定配置

必須先配置 Peppol 個人設定，才能與各個 Peppol 端口建立連線。單擊導覽列上的**個人設定**，然後單擊 **Peppol** 索引標籤。

### Peppol 個人設定索引標籤

#### 個人資訊

*用於標識本地個人設定的設定。*

| 設定         | 說明                                                  |
| ---------- | --------------------------------------------------- |
| **參與方識別碼** | {siteNameShort} 在 AS4 Peppol 交換中使用的參與方 ID。識別碼區分大小寫。 |

#### 個人憑證

*與私有解密和簽章憑證相關的設定。*

| 設定         | 說明                                                                                                  |
| ---------- | --------------------------------------------------------------------------------------------------- |
| **私有憑證**   | 用於解密傳入訊息並簽署傳出訊息的憑證。切勿與外部方共享此憑證。單擊**建立憑證**按鈕可生成可在 Peppol 交易中直接使用的自簽章憑證：系統也會生成同名且副檔名為 `.cer` 的對應公開金鑰。 |
| **私有憑證密碼** | 存取**私有憑證**所需的密碼。                                                                                    |

#### 應用程式 URL

*與從公共 Web 存取 {siteNameShort} 相關的設定和顯示值。*

| 設定         | 說明                                                                                                 |
| ---------- | -------------------------------------------------------------------------------------------------- |
| **接收 URL** | {siteNameShort} 監聽傳入 Peppol 訊息的 URL。請將此 URL 分享給所有交易夥伴。格式為：`<application_base_URL>/pub/Peppol.rsb`。 |

## 端口配置

配置全域 Peppol 個人設定後，在[工作流程](../flows/flows)頁面為每個交易夥伴建立並配置單獨的 Peppol 端口。

### 設定索引標籤

#### 配置

| 設定            | 說明                                                |
| ------------- | ------------------------------------------------- |
| **端口 ID**     | 端口的靜態唯一識別碼。                                       |
| **端口型別**      | 顯示端口名稱及其功能說明。                                     |
| **端口說明**      | 可選欄位，用於自由描述端口及其在工作流程中的角色。                         |
| **Peppol ID** | 與你交換文件的交易夥伴的唯一識別碼。它用於連線到 Peppol 網路，以實現安全且定向的訊息交換。 |

#### 進階設定

| 設定         | 說明                                                          |
| ---------- | ----------------------------------------------------------- |
| **本地檔案方案** | 為端口輸出的訊息分配檔名的方案。可以在檔名中使用宏，動態包含識別碼和時間戳等資訊。有關更多資訊，請參見[宏](#宏)。 |

### 進階選項卡

#### 其他設定

*不屬於前述類別的設定。*

| 設定         | 說明                                                                                    |
| ---------- | ------------------------------------------------------------------------------------- |
| **重複訊息操作** | 當端口接收到 Message Id 之前已出現過的 Peppol 訊息時應如何處理。端口會記住在**重複間隔**指定分鐘數內收到的 Message Id，以檢測重複訊息。 |
| **重複間隔**   | 具有相同 Message Id 的訊息被視為重複訊息的分鐘數。如果設定為 0，則 Message Id 會一直儲存到伺服器重新啟動。                    |

#### 代理設定

<CommonProxySettings />

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他設定

<MiscConnector />

### 自動化索引標籤

#### 自動化設定

*與端口自動處理檔案相關的設定。*

| 設定       | 說明                                                               |
| -------- | ---------------------------------------------------------------- |
| **傳送**   | 到達端口的檔案是否會自動作為 Peppol 訊息傳送。                                      |
| **重試間隔** | 傳送失敗後重試前等待的分鐘數。當伺服器未回應傳送嘗試，或以否定回應表示未收到檔案時，會觸發重試。                 |
| **最大次數** | 端口處理輸入檔案的最大次數。成功與否取決於伺服器成功確認以及（同步請求時）對收據的驗證。如果設定為 0，端口會無限期重試該檔案。 |

#### 效能

<Performance />

### 告警索引標籤

<AlertsTab />

### SLA 索引標籤

<SlasTab />

### 交易索引標籤

此索引標籤列出與端口關聯的所有訊息。使用搜尋欄查詢特定訊息，或單擊漏斗圖示應用篩選器。可以按時間、訊息方向和/或狀態進行篩選。

## 傳送文件

傳送文件時，會發生以下操作：

* 端口使用 **Peppol Id** 查詢具有該 ID 的夥伴的中繼資料（例如端點和憑證）。
* 出站訊息的 Standard Business Document Header (SBDH) 中定義的接收方必須與傳送訊息所在端口的 **Peppol Id** 匹配。
  * 當 [XML Map](./xml-map/xml-map) 端口作為 Peppol 端口的輸入連線時，可以使用它配置 SBDH。
* 端口使用查詢傳回的中繼資料將文件傳送給夥伴。

## 接收文件

接收文件時，[傳送](#傳送文件)中描述的步驟會反向執行：

* 夥伴的 Peppol AP 查詢你提供給註冊 SMP 的中繼資料詳細資訊。
* 夥伴的 Peppol AP 使用該中繼資料向你傳送訊息。當訊息到達 {siteNameShort} 時，引擎會檢視訊息 SBDH 中定義的傳送方 **Peppol Id**，然後將訊息路由到配置了該 **Peppol Id** 的 Peppol 端口。

## 宏

<MacrosTable />

### 範例

<MacrosExamples />
