Bỏ qua, tới nội dung
Tài liệu APIv1

Tham chiếu

Chuyển từ hệ khác

Ánh xạ khái niệm chung của các bộ văn phòng trực tuyến sang API của O3O, khác biệt cần để ý và các bước chuyển.

Trong trang này

Các bộ văn phòng trực tuyến có nhiều khái niệm chung: cấu hình trình soạn thảo, định danh phiên bản tài liệu, callback khi lưu, dịch vụ chuyển đổi. Trang này ánh xạ các khái niệm đó sang API của O3O để việc chuyển sang O3O có lộ trình rõ ràng. Tên trường, cách ký và hành vi dưới đây là của riêng O3O.

Bảng ánh xạ khái niệm#

Khái niệm chungO3OGhi chú
Trình soạn thảo nhúng, khởi tạo bằng một đối tượng cấu hình trong trình duyệtnew O3O.Editor(id, config), nạp từ /o3o/api.jsapi.js tự suy địa chỉ máy chủ từ thẻ script.
URL để máy chủ tải tệp gốcdocument.urlMáy chủ O3O tải, không phải trình duyệt; chịu quy tắc chống SSRF.
Định danh phiên bản tài liệu, dùng để gom người cùng sửadocument.keyKhớp ^[A-Za-z0-9._-]{1,128}$; dùng key mới sau callback closed.
Loại tệp và tên hiển thịdocument.fileType, document.title12 đuôi tệp được nhận.
Chế độ sửa hoặc chỉ xemeditor.mode: edit / viewview không tính kết nối.
Người dùng hiện tại và ngôn ngữ giao diệneditor.user.id, editor.user.name, editor.lang
URL nhận thông báo khi tài liệu được lưueditor.callbackUrlXem Callback và webhook.
Cấu hình được ký bằng JWTtoken HS256, payload là chính configKhông có lớp bọc trung gian trong payload.
Trạng thái trong callback lưustatus: saved / closedKèm cờ final, autosave, modifiedByUser; không dùng mã số trạng thái.
Thân trả lời callback theo mẫu quy địnhBất kỳ mã 2xx nàoThân trả lời bị bỏ qua.
Xác thực callbackX-O3O-Signature, X-O3O-TimestampHMAC SHA-256
Tải bản đã lưuurl có chữ ký trong callback và trong onSavedSống O3O_EMBED_RETAIN_HOURS giờ.
Sự kiện phía trình duyệtonReady, onDocumentLoaded, onModified, onSaved, onClose, onLimitReached, onError
Phương thức của đối tượng trình soạn thảosave(), close(), destroy(), setReadOnly(), getInfo()
Tuỳ biến giao diệnuiKích thước, kiểu thanh công cụ, nút đóng, in, xuất, chép, danh sách người dùng. Logo, màu, giao diện tối: sắp có.
Dịch vụ chuyển đổi định dạng, có chế độ bất đồng bộPOST /v1/convertGET /v1/jobs/{id}GET /v1/files/{id}Nguồn là file (multipart) hoặc url (JSON).
Dựng tài liệu không cần trình duyệtPOST /v1/build + o3oscriptKịch bản là JSON khai báo, không phải mã thực thi.
Trộn thư, điền mẫuPOST /v1/template/render{{truong}} và lặp hàng bảng; chỉ bản doanh nghiệp.
Đấu nối kho tệp bằng WOPI/hosting/discovery, CheckFileInfo, GetFile, PutFileNextcloud qua ứng dụng richdocuments.
Giới hạn theo kết nối1 kết nối = 1 phiên soạn thảo đồng thờiXem Kết nối được đếm thế nào.
Kiểm tra sức khoẻGET /o3o/healthz, GET /v1/status

Khác biệt cần để ý#

  • Callback chỉ có hai trạng thái, savedclosed, và gửi kèm URL tải có chữ ký. Tải tệp về trước khi URL hết hạn.
  • Bộ nhận callback chỉ cần trả mã 2xx. O3O thử lại 3 lần (lần đầu, sau 10 giây, sau 60 giây), nên bộ nhận phải xử lý idempotent.
  • Sau callback closed, lần mở kế tiếp phải dùng document.key mới.
  • Chỉ nhận JWT HS256; thuật toán khác, kể cả none, bị từ chối.
  • Chuyển đổi chỉ trong cùng một họ tài liệu (văn bản, bảng tính, trình chiếu); chế độ đồng bộ trả thẳng tệp.
  • Kịch bản dựng tài liệu là JSON khai báo theo lược đồ o3oscript, không chạy mã do khách gửi.
  • Phiên chỉ đọc không tính kết nối; chạm trần không ngắt ai, phiên mới mở ở chế độ chỉ đọc.
Sắp có

Lớp tương thích /compat/* giúp chạy mã tích hợp cũ mà không sửa.

Các bước chuyển#

  1. Kiểm kê

    Liệt kê nơi mở trình soạn thảo, bộ nhận callback, lời gọi chuyển đổi và kịch bản dựng tài liệu trong hệ thống hiện tại.
  2. Dựng máy thử

    Chạy bản Docker theo Tự dựng máy chủ và thử trang /o3o/demo.
  3. Ánh xạ cấu hình

    Dựng config O3O.Editor theo bảng trên; ký bằng JWT ở máy chủ của bạn.
  4. Viết lại bộ nhận callback

    Kiểm chữ ký, xử lý idempotent, trả 2xx ngay, tải url ở nền.
  5. Chuyển lời gọi xử lý tài liệu

    Chuyển đổi sang /v1/convert, dựng tài liệu sang o3oscript, trộn thư sang /v1/template/render.
  6. Thử hạn mức

    Kiểm hành vi khi chạm trần bằng O3O_GATE_CONNECTION_CAP và xử lý 429 theo Hạn mức theo gói.
  7. Chuyển dần

    Chạy song song hai hệ, chuyển từng phân hệ; đối chiếu tệp đã lưu trước khi tắt hệ cũ.
Phía O3O sau khi chuyển
// Trình duyệt, sau khi nạp http://localhost:8080/o3o/api.js
const editor = new O3O.Editor("o3o-editor", {
  document: {
    url: "https://example.com/files/hop-dong.docx", // máy chủ O3O tải tệp này
    title: "Hợp đồng mẫu.docx",
    fileType: "docx",
    key: "hopdong-42-v7"                             // đổi key cho mỗi phiên bản nội dung
  },
  editor: {
    mode: "edit",
    lang: "vi",
    user: { id: "u-1001", name: "Nguyễn Văn A" },
    callbackUrl: "https://example.com/o3o/callback" // nhận saved và closed
  },
  token: tokenFromServer,                           // JWT do máy chủ của bạn ký
  events: {
    onSaved: (e) => console.log(e.version, e.url),
    onLimitReached: (e) => console.warn(e.message),
    onError: (e) => console.error(e.code, e.message)
  }
});
# Chuyển đổi đồng bộ: trả thẳng tệp PDF
curl -s http://localhost:8080/v1/convert \
  -H "Authorization: Bearer O3O_DEMO_KEY" \
  -F file=@bao-cao.docx -F to=pdf -o bao-cao.pdf

# Bất đồng bộ: nhận job, hỏi trạng thái, tải tệp
curl -s http://localhost:8080/v1/convert \
  -H "Authorization: Bearer O3O_DEMO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/files/bao-cao.docx", "to": "pdf", "async": true}'
curl -s http://localhost:8080/v1/jobs/job_4f1c2a9b0d3e5f6a7b8c9d0e -H "Authorization: Bearer O3O_DEMO_KEY"
curl -s http://localhost:8080/v1/files/file_9a8b7c6d5e4f3a2b1c0d9e8f -H "Authorization: Bearer O3O_DEMO_KEY" -o bao-cao.pdf