Thực thi

API /osc/commands/execute thực thi các lệnh được chỉ định trên camera. Dữ liệu đầu ra là một đối tượng lệnh.

Đầu vào

Tên Loại Mô tả
name Chuỗi Lệnh cần thực thi.
parameters Đối tượng Nhập các tham số lệnh theo quy cách định nghĩa lệnh. Vui lòng tham khảo Thông số kỹ thuật API OSC để biết ví dụ.

Đầu ra

Tên Loại Mô tả
name Chuỗi Lệnh cần thực thi.
state Chuỗi Trạng thái của lệnh. Phải là một trong các giá trị sau:
  • done – Hoàn tất, kết quả đã được trả về trong phản hồi này.
  • inProgress – Quá trình thực thi vẫn đang diễn ra.
  • error – Không thành công, hãy xem lỗi trong phản hồi.
id Chuỗi (không bắt buộc) Mã lệnh. Các lệnh trả về trạng thái inProgress là bắt buộc phải có giá trị này. Ví dụ: lệnh camera.takePicture mất vài giây do cần ghép. Xem phần "Trạng thái" để biết thêm chi tiết.
results Đối tượng (không bắt buộc) Kết quả lệnh. Giá trị này là bắt buộc đối với các lệnh trả về trạng thái done nếu lệnh dự kiến sẽ trả về kết quả; ví dụ: “results” : { "AAA": "BBB", ... } Vui lòng tham khảo Thông số kỹ thuật của API OSC để xem ví dụ.
error Đối tượng (không bắt buộc) Mô tả lỗi lệnh. Ví dụ: các lệnh trả về trạng thái error; phải có giá trị này
“error”: {
  “code”: “missingParameter”
}
progress Đối tượng (không bắt buộc) Mô tả tiến trình lệnh. Các lệnh trả về trạng thái inProgress là bắt buộc phải có giá trị này; ví dụ:
“progress”: {
  “completion”: 0.8
}

Lỗi

Mã lỗi Mô tả
unknownCommand Lệnh được yêu cầu không xác định, ví dụ: nếu ứng dụng khách v2 (clientVersion được đặt thành 2, xem Tùy chọn) yêu cầu một lệnh không dùng nữa từ API cấp 1, thì yêu cầu sẽ không thành công với mã lỗi này.
disabledCommand Lệnh được thực thi hiện bị vô hiệu hoá, ví dụ: Lệnh "takeImage" bị tắt khi máy ảnh đang ở chế độ video, lệnh xử lý hình ảnh sẽ bị tắt khi máy ảnh không hỗ trợ chế độ trì hoãn việc xử lý. Mã lỗi này đã được thêm vào API cấp 2.
cameraInExclusiveUse Máy ảnh đã được sử dụng độc quyền, nên bạn không thể bắt đầu phiên mới. Mã lỗi này không còn được dùng trong API cấp 2.
missingParameter Bạn chưa chỉ định một hoặc nhiều thông số bắt buộc.
invalidParameterName Có ít nhất một tham số đầu vào hay tên tuỳ chọn không nhận dạng được hoặc không được hỗ trợ.
invalidParameterValue Thông số hoặc tên tùy chọn đã được công nhận, nhưng một hoặc nhiều giá trị không hợp lệ; ví dụ: giá trị nằm ngoài phạm vi.

Ví dụ:

Yêu cầu (API 1)
POST /osc/commands/execute HTTP/1.1
Host: [camera ip address]:[httpPort]
Content-Type: application/json;charset=utf-8
Accept: application/json
Content-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "name": "camera.setOptions",
    "parameters": {
        "sessionId": "12ABC3",
        "options": {
            "iso": 200,
            "exposureCompensation": -2
        }
    }
}
Yêu cầu (API 2)
POST /osc/commands/execute HTTP/1.1
Host: [camera ip address]:[httpPort]
Content-Type: application/json;charset=utf-8
Accept: application/json
Content-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "name": "camera.setOptions",
    "parameters": {
        "options": {
            "iso": 200,
            "exposureCompensation": -2
        }
    }
}
Đáp
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "name": "camera.setOptions",
    "state": "done"
}
Yêu cầu (API 1)
POST /osc/commands/execute HTTP/1.1
Host: [camera ip address]:[httpPort]
Content-Type: application/json;charset=utf-8
Accept: application/json
Content-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "name": "camera.takePicture",
    "parameters": {
        "sessionId": "12ABC3"
    }
}
Yêu cầu (API 2)
POST /osc/commands/execute HTTP/1.1
Host: [camera ip address]:[httpPort]
Content-Type: application/json;charset=utf-8
Accept: application/json
Content-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "name": "camera.takePicture"
}
Đáp
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "name": "camera.takePicture",
    "state": "inProgress",
    "id": "90ABCD",
    "progress": {
        "completion": 0
    }
}