Online hizmet ekleme

Online hizmetler, barındırılan bir platform üzerinden tamamen online olarak barındırılan hizmetlerdir. Müşterinin hizmete bizzat katılması gerekmez. Online hizmetlere ilişkin bazı örnekler şunlardır:

  • Zoom ile online yoga dersi
  • Google Meet üzerinden online makyaj eğitimi
  • Skype aracılığıyla online tesisat videosu tahmini

Online hizmetlerin uygunluk koşulları

Uygulamaya başlamadan önce lütfen online hizmet politikalarını ve en iyi uygulamaları inceleyin.

Online hizmetlerin uygulanması

Online hizmetler entegrasyonu, mevcut uçtan uca entegrasyon eklentisidir ve mevcut uygulamalarda bazı değişiklikler yapılmasını gerektirir. Genel olarak, aşağıdaki değişiklikler şunlardır:

  • Feed'ler: Hizmet feed'lerine type, VirtualSession , DirectMerchantPayment ve CancellationPolicy (önceden eklenmemişse) ekleyin
  • Rezervasyon sunucusu: CreateBooking yöntemine Sanal Oturum Bilgileri'ni ekleyin, kullanıcıya sanal kurulum bilgilerinin yer aldığı e-postalar gönderin
  • Gerçek zamanlı güncellemeler (mevcut davranış): InventoryUpdate RTU aracılığıyla sanal envanterde yapılan değişiklikleri, BookingNotification RTU aracılığıyla yapılan rezervasyon değişikliklerini ve Service RTU aracılığıyla hizmette yapılan değişiklikleri yönetin

Feed'ler

Hizmetler feed'i

Online hizmetleri desteklemek için Hizmetler feed'ine aşağıdaki alanlar eklenir.

Hizmet feed'i özellikleri

 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/maps-booking/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;
}

Hizmet feed'i örneği

{
  "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"
    }
  ]
}
  • Yerelleştirilmiş açıklama: Açıklama, hizmetin neyle ilgili olduğunu açıkça belirtmelidir. Hizmet içeriğinizi en iyi şekilde nasıl yapılandıracağınızı öğrenmek için lütfen en iyi uygulamalar kılavuzunu inceleyin.
  • Oturum talimatları: Oturum talimatları gerekli tüm kurulumları açıklamalı ve politikada açıklanan rehberliği karşılamalıdır.
    • Platform Video URL'si ve toplantı kimliği, CreateBooking'un parçası olarak otomatik olarak oluşturulmazsa (ör. ayrıntılar CreateBookingResponse aracılığıyla gönderilmez) kullanıcının platform ayrıntılarının kendilerine ne zaman ve kimden gönderileceğini belirtebilirsiniz.
  • Oturum gereksinimleri: Oturum gereksinimleri, kullanıcının sınıfa etkili bir şekilde katılabilmesi için gereken tüm gerekli ekipman veya materyalleri açıklamalıdır. Kullanıcının ihtiyaç duyabileceği isteğe bağlı malzemeleri de ekleyebilirsiniz, ancak lütfen bunları isteğe bağlı olarak işaretleyin.
  • Platform: Platform, kullanıcının online hizmete erişmek için kullanacağı platformu belirtmelidir.
    • Platform, satıcı tarafından daha sonra belirlenecekse platform özelliğini FLEXIBLE olarak ayarlayın.
    • Satıcının kullandığı platform listede yoksa platform değerini OTHER olarak ayarlayıp other_platform_name değerini belirtin.
  • İptal politikası: Doğru iptal politikalarının olması önemlidir. Geri ödemelere ve iptal işlemlerine izin veriliyorsa CancellationPolicy değerini ayarlayın. Ayarlanmazsa varsayılan olarak geri ödemelere izin verilmediği kabul edilir.

Stok durumu feed'i

  • Toplam Spotlar: Bunu, platformda izin verilen toplam katılımcı kapasitesine ayarlayın (çalışanları çıkarmaya dikkat edin)

Rezervasyon Sunucusu

İsteğe bağlı: Sisteminiz satıcı adına bir toplantı kimliği ve URL'si oluşturuyorsa lütfen CreateBookingResponse öğenizin bir parçası olarak VirtualSessionInfo özelliğini ekleyin.

CreateBooking spesifikasyonu

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;
}

 VirtualSessionInfo virtual_session_info = X;
}

İstek Rezervasyonu Oluştur

{
  "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"
  }
}

OluşturmaRezervasyonYanıtı

{
  "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"
    }
  }
}

Gerçek Zamanlı Güncellemeler

Envanter veya rezervasyonları güncellemeyle ilgili mevcut mantık, sanal rezervasyonlar için korunmalıdır.

  • InventoryUpdate RTU: Sisteminizdeki veya Google ile Rezervasyon sistemindeki alan değişiklikleri üzerinde yapılan tüm güncellemeler, slotlardaki değişiklikler hakkında bizi bilgilendirmek için InventoryUpdate RTU'yu tetiklemelidir.
  • BookingNotification RTU: Sisteminizde veya Google ile Rezervasyon sisteminizdeki rezervasyonlarda yapılan güncellemeler (ör. saatin değiştirilmesi veya iptaller) rezervasyondaki değişiklikleri bize bildirmek için bir BookingNotification RTU etkinleştirmelidir.
    • Bir kullanıcı ödemeyi satıcıya/iş ortağına göndermezse lütfen bize iptal RTU'su gönderin. Google ile Rezervasyon tarafından bir iptal e-postası gönderilir.
  • Hizmet RTU: Hizmetleri bir Hizmet RTU'su aracılığıyla güncelliyorsanız online hizmetler için güncelleme yapıyorsanız uygun online hizmet alanlarını eklediğinizden emin olun.

E-postalar

Google ile Rezervasyon varsayılan olarak, bir kullanıcı Google ile Rezervasyon platformunda işlem yaptığında, standart rezervasyon onayı, değişiklik ve iptal e-postalarını gönderir.

İş ortakları ayrıca, kullanıcıya ayrı e-postalarda konferans ayrıntılarını, ödeme ayrıntılarını ve iptal politikası bilgilerini göndermelidir. İsteğe bağlı olarak, randevu veya sınıftan önce hatırlatma e-postaları gönderebilirsiniz. Sanal sınıfların e-posta politikalarına uyduğunuzdan emin olmak için lütfen politika dokümanına bakın.