Tạo chuyến đi một điểm đến

Tài liệu này mô tả cách tạo một chuyến đi có một điểm đến, đặt các trường chính xác và chỉ định chuyến đi đó cho một xe để thực hiện. Hướng dẫn này giả định rằng bạn đã thiết lập Công cụ quản lý đội xe và đã tạo xe, có một ứng dụng dành cho tài xế đang hoạt động và có thể có một ứng dụng dành cho người tiêu dùng. Hãy xem các hướng dẫn liên quan sau đây để biết thêm thông tin:

Thông tin cơ bản về cách tạo chuyến đi

Phần này mô tả thông tin chi tiết về yêu cầu cần thiết để tạo chuyến đi trong Fleet Engine. Bạn đưa ra yêu cầu tạo bằng gRPC và REST.

  • Phương thức CreateTrip(): gRPC hoặc REST
  • Thông báo CreateTripRequest: chỉ gRPC

Trường chuyến đi

Sử dụng các trường sau để tạo chuyến đi trong Fleet Engine. Bạn có thể sử dụng các trường khác nhau cho các loại chuyến đi khác nhau: chuyến đi một hoặc nhiều điểm đến, chuyến đi liên tiếp hoặc chuyến đi chung. Bạn có thể cung cấp các trường tuỳ chọn khi tạo chuyến đi hoặc có thể đặt các trường đó sau khi cập nhật chuyến đi.

Trường chuyến đi
Tên Bắt buộc? Mô tả
parent Có Một chuỗi chứa mã dự án. Mã này phải giống với mã được dùng trong toàn bộ quá trình tích hợp Fleet Engine, với cùng vai trò tài khoản dịch vụ.
trip_id Có Một chuỗi do bạn tạo để xác định riêng biệt chuyến đi này. Mã chuyến đi có một số hạn chế nhất định, như được nêu trong tài liệu tham khảo.
trip_type Có Đặt TripType thành các giá trị sau cho loại chuyến đi mà bạn đang tạo:
  • Một đích đến: Đặt thành SHARED hoặc EXCLUSIVE.
  • Nhiều đích đến: Đặt thành EXCLUSIVE.
  • Back-to-back (Liên tiếp): Đặt thành EXCLUSIVE.
  • Gộp chung bộ nhớ dùng chung: Đặt thành SHARED.
pickup_point Có Điểm khởi hành của chuyến đi.
Điểm đến trung gian Có

Chỉ dành cho chuyến đi có nhiều điểm đến: Danh sách các điểm đến trung gian mà tài xế ghé thăm trong khoảng thời gian giữa lúc đón và trả khách. Giống như dropoff_point, bạn cũng có thể đặt trường này sau bằng cách gọi UpdateTrip, nhưng theo định nghĩa, chuyến đi có nhiều điểm đến sẽ chứa các điểm đến trung gian.

vehicle_waypoints Có

Chỉ những chuyến đi chung: Trường này hỗ trợ việc xen kẽ các điểm tham chiếu của nhiều chuyến đi. Danh sách này chứa tất cả các điểm tham chiếu còn lại cho xe được chỉ định, cũng như các điểm tham chiếu đón và trả khách cho chuyến đi này. Bạn có thể đặt trường này bằng cách gọi CreateTrip hoặc UpdateTrip. Bạn cũng có thể cập nhật điểm tham chiếu của xe thông qua trường waypoints bằng lệnh gọi đến UpdateVehicle. Dịch vụ này không trả về thông tin này trong các lệnh gọi GetTrip vì lý do quyền riêng tư.

number_of_passengers Không Số lượng hành khách trong chuyến đi.
dropoff_point Không Điểm đến của chuyến đi.
vehicle_id Không Mã của xe được chỉ định cho chuyến đi.

Ví dụ: chuyến đi đến một điểm đến

Ví dụ sau đây minh hoạ cách tạo một chuyến đi đến Grand Indonesia East Mall. Chuyến đi này có hai hành khách, là chuyến đi riêng và có trạng thái là NEW. provider_id của chuyến đi phải giống với mã dự án trên Google Cloud. Ví dụ này cho thấy một Dự án Google Cloud có mã dự án là my-rideshare-co-gcp-project. Dự án này cũng phải có một tài khoản dịch vụ để gọi Fleet Engine. Hãy xem phần Vai trò của tài khoản dịch vụ để biết thông tin chi tiết.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

// Trip initial settings.
String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE) // Use TripType.SHARED for carpooling.
    .setPickupPoint(                 // Grand Indonesia East Mall.
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setNumberOfPassengers(2)
    // Provide the drop-off point if available.
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId("trip-8241890")  // Trip ID assigned by the provider.
    .setTrip(trip)              // The initial state is NEW.
    .build();

// Error handling.
try {
  Trip createdTrip = tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

Bước tiếp theo