Thêm dịch vụ trực tuyến (Không dùng nữa)

Dịch vụ trực tuyến được định nghĩa là các dịch vụ được tổ chức hoàn toàn trực tuyến thông qua một nền tảng được lưu trữ, mà không yêu cầu khách hàng phải tham gia dịch vụ trực tiếp. Một số ví dụ về các dịch vụ trực tuyến có thể bao gồm:

  • Lớp học yoga trực tuyến qua Zoom
  • Lớp học trang điểm trực tuyến qua Google Meet
  • Báo giá dịch vụ sửa ống nước trực tuyến qua Skype

Điều kiện tham gia đối với dịch vụ trực tuyến

Trước khi bắt đầu triển khai, vui lòng xem xét các phương pháp hay nhất và chính sách về dịch vụ trực tuyến.

Triển khai dịch vụ trực tuyến

Dịch vụ tích hợp trực tuyến là tiện ích bổ sung cho dịch vụ Cuộc hẹn hoàn chỉnh hiện có tích hợp và yêu cầu một số thay đổi đối với cách triển khai hiện tại. Nhìn chung, bạn có thể thấy những thay đổi sau:

  • Nguồn cấp dữ liệu: thêm type, VirtualSession , DirectMerchantPaymentCancellationPolicy (nếu chưa được thêm) vào nguồn cấp dữ liệu Dịch vụ
  • Máy chủ đặt chỗ: thêm VirtualSessionInfo vào phương thức Createbooking, gửi email kèm thông tin thiết lập ảo đến người dùng
  • Nội dung cập nhật theo thời gian thực (hoạt động hiện tại): xử lý các thay đổi đối với khoảng không quảng cáo ảo thông qua RTU InventoryUpdate, các sửa đổi đối với đặt trước qua BookingNotification RTU và thay đổi dịch vụ thông qua RTU dịch vụ

Nguồn cấp dữ liệu

Nguồn cấp dữ liệu dịch vụ

Các trường sau được thêm vào nguồn cấp dữ liệu Dịch vụ để hỗ trợ hoạt động trực tuyến luôn miễn phí.

Quy cách nguồn cấp dữ liệu dịch vụ

 enum ServiceType {
     SERVICE_TYPE_UNSPECIFIED = 0;
    // Service that provides dining reservation.
    SERVICE_TYPE_DINING_RESERVATION = 1;
    // Service that provides food ordering in general, could be either takeout
    // or delivery or both.
    SERVICE_TYPE_FOOD_ORDERING = 2;
    // Service that only provides food delivery.
    SERVICE_TYPE_FOOD_DELIVERY = 6;
    // Service that only provides food takeout.
    SERVICE_TYPE_FOOD_TAKEOUT = 7;

    // Service that provides appointments or classes. Recommended for (1) health
    // and fitness, (2) spa and beauty, and (3) financial consults and
    // evaluations services. Please see the supported service types:
    // https://developers.google.com/actions-center/guides/end-to-end-integration/overview
    SERVICE_TYPE_APPOINTMENT = 5;
    // Service that provides appointment for an online class or session which
    // will be fully virtual. Must be set if enabling virtual service bookings.
    SERVICE_TYPE_ONLINE_APPOINTMENT = 8;
  }
// Information about virtual/online session. E.g. Online yoga class, virtual
// cooking class etc.
message VirtualSession {
  // Instructions on how this virtual class is set up. If the partner does not
  // include the video URL with the booking, then this text must include when
  // the video URL will be shared with the user. Eg. “Zoom url will be mailed
  // 30 minutes prior to the class”. (Recommended)
  // Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.
  Text session_instructions = 1;

  // Requirements for the given virtual session. Eg. yoga mat,
  // cooking utensils etc. (Recommended)
  // Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.
  Text session_requirements = 2;

  // Information about the virtual platform used in this session. (Required to
  // enable virtual services)
  message VirtualPlatformInfo {
    // Enum to indicate which virtual platform would be used by the merchant.
    enum Platform {
      PLATFORM_UNSPECIFIED = 0;

      // The merchant is flexible in which video platform they use.
      FLEXIBLE = 1;
      GOOGLE_HANGOUTS = 2;
      GOOGLE_MEET = 3;
      ZOOM = 4;
      SKYPE = 5;
      YOUTUBE = 6;

      // Should be set if the video platform used is different from the ones
      // mentioned here.
      OTHER = 7;
    }

    Platform platform = 1;

    // The name of the platform if the platform is set to OTHER. (Required if
    // platform is set to OTHER)
    Text other_platform_name = 2;
  }

  VirtualPlatformInfo virtual_platform_info = 3;

  // Set this as true if the virtual session is not live and is pre-recorded.
  // (Optional)
  bool is_session_prerecorded = 4;
}

// Information about how the user can pay directly to the merchant instead of
// pre-paying for the service via RwG.
message DirectMerchantPayment {
  // Users would be advised to pay only via the payment methods mentioned below.
  repeated Text payment_methods = 1;
}

// Cancellation policy for a service.
message CancellationPolicy {
  // Defines a single refund condition. Multiple refund conditions could be
  // used together to describe "refund steps" as various durations before the
  // service start time.
  message RefundCondition {
    // Duration in seconds before the start time, until when the customer can
    // receive a refund for part of the service's cost specified in
    // `refund_percent`.
    // When set to 0 (default), the service can be cancelled at any time.
    int64 min_duration_before_start_time_sec = 1;

    // The percent that can be refunded, as long as the service booking is
    // cancelled at least `min_duration_before_start_time` before the service
    // start time, in the range of [0, 100]. When set to 0 (default), the
    // service is not refundable. When set to 100 this service is fully
    // refundable.
    uint32 refund_percent = 2;
  }

  // Zero or more refund conditions applicable to the policy.
  repeated RefundCondition refund_condition = 1;
}

Ví dụ về nguồn cấp dữ liệu dịch vụ

{
  "service": [
    {
      "merchant_id": "100",
      "service_id": "100-1",
      "type" : "SERVICE_TYPE_ONLINE_APPOINTMENT",
      "localized_service_name": {
        "value": "Makeup masterclass",
        "localized_value": [
          {
            "locale": "en",
            "value": "Makeup masterclass"
          }
        ]
      },
      "localized_description": {
        "value": "Learn how to do runway makeup from an award winning makeup artist.",
        "localized_value": [
          {
            "locale": "en",
            "value": "Learn how to do runway makeup from an award winning makeup artist."
          }
        ]
      },
      "virtual_session": {
        "session_instructions": {
          "value": "You must have access to a computer, and a solid internet connection. Class registration link will be sent to you 15 mins before the start of the class. The class link will be accessible 1 day after the class.  ",
          "localized_value": [
            {
              "locale": "en",
              "value": "You must have access to a computer, and a solid internet connection. Class registration link will be sent to you 15 mins before the start of the class. The class link will be accessible 1 day after the class.  "
            }
          ]
        },
        "session_requirements": {
          "value": "makeup brush, makeup palette, mirror",
          "localized_value": [
            {
              "locale": "en",
              "value": "makeup brush, makeup palette, mirror"
            }
          ]
        },
        "virtual_platform_info": {
          "platform": "OTHER",
          "other_platform_name": "Susan's hosted platform"
        }
      },
      "direct_merchant_payment": {
        "payment_methods": [
          {
            "value": "Venmo",
            "localized_value": [
              {
                "locale": "en",
                "value": "Venmo"
              }
            ]
          }
        ]
      },
      "price": {
        "price_micros": 75000000,
        "currency_code": "USD"
      },
      "rules": {
        "min_advance_booking": 0,
        "min_advance_online_canceling": 86400,
        "cancellation_policy": {
          "refund_condition": [
            {
              "min_duration_before_start_time_sec": 3600,
              "refund_percent": 100
            }
          ]
        }
      },
      "prepayment_type": "NOT_SUPPORTED",
      "tax_rate": {
        "micro_percent": 7750000
      }
    },
    {
      "merchant_id": "100",
      "service_id": "100-2",
      "type" : "SERVICE_TYPE_ONLINE_APPOINTMENT",
      "localized_service_name": {
        "value": "Advanced Vinyasa Yoga",
        "localized_value": [
          {
            "locale": "en",
            "value": "Advanced Vinyasa Yoga"
          }
        ]
      },
      "localized_description": {
        "value": "Learn the advanced techniques of vinyasa yoga taught by award winning yoga instructors.",
        "localized_value": [
          {
            "locale": "en",
            "value": "Learn the advanced techniques of vinyasa yoga taught by award winning yoga instructors."
          }
        ]
      },
      "virtual_session": {
        "session_instructions": {
          "value": "You must have access to a computer, and a solid internet connection. Class registration link will be included in an email from the merchant.",
          "localized_value": [
            {
              "locale": "en",
              "value": "You must have access to a computer, and a solid internet connection. Class registration link will be included in an email from the merchant."
            }
          ]
        },
        "session_requirements": {
          "value": "yoga mat, dumbbells",
          "localized_value": [
            {
              "locale": "en",
              "value": "yoga mat, dumbbells"
            }
          ]
        },
        "virtual_platform_info": {
          "platform": "ZOOM"
        }
      },
      "price": {
        "price_micros": 40000000,
        "currency_code": "USD"
      },
      "rules": {
        "min_advance_booking": 0,
        "min_advance_online_canceling": 86400,
        "cancellation_policy": {
          "refund_condition": [
            {
              "min_duration_before_start_time_sec": 86400,
              "refund_percent": 100
            },
            {
              "min_duration_before_start_time_sec": 3600,
              "refund_percent": 50
            }
          ]
        }
      },
      "prepayment_type": "REQUIRED",
      "tax_rate": {
        "micro_percent": 7750000
      },
      "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
    }
  ]
}
  • Nội dung mô tả đã bản địa hoá: Nội dung mô tả phải rõ ràng mục đích của dịch vụ. Vui lòng tham khảo hướng dẫn về các phương pháp hay nhất về cách tốt nhất để xây dựng cấu trúc cho các dịch vụ của bạn nội dung.
  • Hướng dẫn phiên: Hướng dẫn phiên phải mô tả tất cả chế độ thiết lập cần thiết và đáp ứng hướng dẫn nêu trong chính sách.
    • Nếu URL video trên nền tảng và mã cuộc họp không được tạo tự động như một phần của CreateĐặt chỗ (ví dụ: thông tin chi tiết không được gửi qua CreateBookingResponse), bạn nên nêu rõ trong session_instructions khi nào và từ ai người dùng phải đợi thông tin chi tiết về nền tảng được gửi đến cho họ.
  • Yêu cầu của phiên: Yêu cầu về phiên phải mô tả tất cả thiết bị hoặc tài liệu cần thiết mà người dùng cần tham gia trong lớp một cách hiệu quả. Bạn cũng có thể bao gồm tài liệu tuỳ chọn mà người dùng có thể cần thiết, nhưng hãy đánh dấu chúng là không bắt buộc.
  • Nền tảng: Nền tảng phải cho biết nền tảng mà người dùng sẽ đang sử dụng để truy cập vào dịch vụ trực tuyến.
    • Nếu sau này người bán quyết định nền tảng, đặt platform thành FLEXIBLE.
    • Nếu nền tảng mà người bán đang sử dụng không có trong danh sách, hãy đặt platform thành OTHER và chỉ định other_platform_name.
  • Chính sách huỷ: Điều quan trọng là bạn phải cung cấp thông tin huỷ chính xác Google Cloud. Đặt CancellationPolicy nếu hoàn tiền và huỷ được phép. Giả định mặc định nếu không được đặt là tiền hoàn lại không được đặt được phép.

Nguồn cấp dữ liệu về tình trạng còn hàng

  • Tổng số điểm: Đặt mục này thành tổng số người tham gia được phép cho nền tảng (đảm bảo trừ nhân viên)

Máy chủ đặt phòng

Không bắt buộc: Nếu hệ thống của bạn tạo mã cuộc họp và url thay mặt cho người bán, vui lòng đưa VirtualSessionInfo vào CreateBookingResponse.

Thông số CreateĐặt chỗ

message Booking {
// Information related to the virtual session which was booked.
message VirtualSessionInfo {
  // URL which was created for the virtual session. (optional)
  string session_url = 1;

  // The meeting id which was created for the virtual session. (optional)
  string meeting_id = 2;

  // Password required to access the session. (optional)
  string password = 3 [(datapol.semantic_type) = ST_ACCOUNT_CREDENTIAL];
}


 VirtualSessionInfo virtual_session_info = X;
}

CreateBookingRequest

{
  "idempotency_token": "10000000000",
  "payment_information": {
    "prepayment_status": "PREPAYMENT_NOT_PROVIDED"
  },
  "slot": {
    "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS",
    "duration_sec": "3600",
    "merchant_id": "10001",
    "service_id": "10001-1",
    "start_sec": "1586829600"
  },
  "user_information": {
    "email": "john.doe@gmail.com",
    "family_name": "John",
    "given_name": "Doe",
    "telephone": "+123 456 7890",
    "user_id": "110291237"
  }
}

CreateBookingResponse

{
  "booking": {
    "bookingId": "abcdefg-12345",
    "slot": {
      "merchantId": "10001",
      "serviceId": "10001-1",
      "startSec": "1586804400",
      "durationSec": "3600"
    },
    "userInformation": {
      "userId": "110291237",
      "givenName": "John",
      "familyName": "Doe",
      "telephone": "+123 456 7890",
      "email": "john.doe@gmail.com"
    },
    "status": "CONFIRMED",
    "virtual_session_info": {
      "video_url": "meet.google.com/abcd-efg",
      "meeting_id": "abcd-efg",
      "password" : "somepassword"
    }
  }
}

Thông tin cập nhật theo thời gian thực

Bạn nên duy trì logic hiện tại để cập nhật quỹ phòng hoặc lượt đặt phòng cho các lượt đặt trước qua mạng.

  • InventoryUpdate RTU: Mọi thông tin cập nhật đối với những thay đổi về vị trí trên hoặc hệ thống Actions Center, sẽ kích hoạt một InventoryUpdate RTU để thông báo cho chúng tôi về những thay đổi giữa các khung giờ.
  • Đặt chỗ RTU RTU: Mọi thông tin cập nhật về lượt đặt trước (ví dụ: sửa đổi thời gian hoặc huỷ) trên hệ thống của bạn hoặc hệ thống Actions Center, nên kích hoạt một RTU BookingNotification để thông báo cho chúng tôi về những thay đổi đối với một lượt đặt phòng.
    • Nếu người dùng không gửi khoản thanh toán cho người bán/đối tác, vui lòng gửi cho chúng tôi một RTU huỷ Email huỷ sẽ được gửi Trung tâm hành động.
  • RTU dịch vụ: Nếu bạn đang cập nhật các dịch vụ thông qua một Dịch vụ RTU, hãy nhớ thêm các trường dịch vụ trực tuyến thích hợp nếu cập nhật cho một dịch vụ trực tuyến.

Email

Theo mặc định, Actions Center sẽ gửi thông báo xác nhận đặt phòng tiêu chuẩn, email sửa đổi và huỷ khi người dùng giao dịch trên nền tảng Actions Center.

Đối tác cần gửi thêm thông tin chi tiết về hội nghị, thông tin thanh toán, và chính sách huỷ trong email riêng gửi cho người dùng. Nếu muốn, bạn có thể gửi email nhắc nhở trước cuộc hẹn hoặc lớp học. Vui lòng tham khảo tài liệu chính sách để đảm bảo bạn đang tuân thủ chính sách email đối với lớp học trực tuyến.