Menambahkan layanan online (Tidak digunakan lagi)

Layanan {i>online<i} didefinisikan sebagai layanan yang dilakukan secara {i>online<i} sepenuhnya melalui platform yang dihosting, dan tidak mengharuskan pelanggan untuk menghadiri layanan secara langsung. Beberapa contoh layanan online dapat mencakup:

  • Kelas yoga online melalui Zoom
  • Masterclass makeup online melalui Google Meet
  • Estimasi video pipa ledeng online melalui Skype

Persyaratan kelayakan layanan online

Sebelum memulai penerapan, tinjau kebijakan dan praktik terbaik layanan online.

Penerapan layanan online

Integrasi layanan online adalah add-on untuk Janji Temu Menyeluruh yang sudah ada integrasi, dan memerlukan beberapa perubahan pada implementasi yang ada. Secara umum, perubahan berikut mencakup:

  • Feed: tambahkan type, VirtualSession , DirectMerchantPayment, dan CancellationPolicy (jika belum ditambahkan) ke feed Layanan
  • Server pemesanan: tambahkan VirtualSessionInfo ke metode CreateBooking, mengirim email dengan informasi penyiapan virtual kepada pengguna
  • Update real-time (perilaku yang ada): menangani perubahan pada inventaris virtual melalui RTU InventoryUpdate, modifikasi pemesanan melalui RTU BookingNotification, dan perubahan pada layanan melalui RTU Service

Feed

Feed layanan

Kolom berikut ditambahkan ke feed Layanan untuk mendukung akses online layanan IT perusahaan mereka.

Spesifikasi feed layanan

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

Contoh feed layanan

{
  "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"
    }
  ]
}
  • Deskripsi yang dilokalkan: Deskripsi harus disampaikan dengan jelas memahami layanan tersebut. Lihat panduan praktik terbaik tentang cara terbaik untuk menyusun layanan Anda saat ini.
  • Petunjuk sesi: Petunjuk sesi harus menjelaskan semua penyiapan yang diperlukan dan memenuhi panduan yang diuraikan dalam kebijakan kami.
    • Jika URL video platform dan ID rapat tidak dibuat secara otomatis sebagai bagian dari CreateBooking (misalnya, detailnya tidak dikirim melalui CreateBookingResponse), Anda harus menyebutkannya dengan jelas di session_instructions kapan dan dari siapa pengguna harus mengetahui detail platform yang akan dikirimkan kepada mereka.
  • Persyaratan sesi: Persyaratan sesi harus menjelaskan semua peralatan atau bahan yang diperlukan yang dibutuhkan pengguna untuk berpartisipasi di kelas secara efektif. Anda juga dapat menyertakan materi opsional yang mungkin digunakan pengguna butuhkan, tapi harap tandai sebagai opsional.
  • Platform: Platform harus menunjukkan platform yang akan digunakan pengguna gunakan untuk mengakses layanan {i>online<i}.
    • Jika di lain waktu platform tersebut akan ditentukan oleh penjual, setel platform ke FLEXIBLE.
    • Jika platform yang digunakan penjual tidak ada dalam daftar, tetapkan platform ke OTHER, dan tentukan other_platform_name.
  • Kebijakan pembatalan: Penting untuk menampilkan pembatalan yang akurat kebijakan izin yang relevan. Tetapkan CancellationPolicy jika pengembalian dana dan pembatalan yang diizinkan. Asumsi bawaan jika tidak disetel, adalah pengembalian dana tidak diizinkan.

Feed ketersediaan

  • Total Spot: Tetapkan ini ke total kapasitas peserta diizinkan untuk platform tersebut (pastikan untuk mengurangi staf)

Booking Server

Opsional: Jika sistem Anda membuat URL dan ID rapat atas nama penjual, sertakan VirtualSessionInfo sebagai bagian dari CreateBookingResponse.

Spesifikasi CreateBooking

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

Real-time Updates

Logika yang ada untuk memperbarui inventaris atau pemesanan harus dipertahankan untuk pemesanan virtual.

  • RTU InventoryUpdate: Setiap pembaruan pada perubahan slot di atau sistem Actions Center, harus mengaktifkan InventoryUpdate RTU untuk memberi tahu kita tentang perubahan dalam slot.
  • RTU Notifikasi Pemesanan: Perubahan apa pun pada pemesanan (mis. modifikasi waktu, atau pembatalan) pada sistem Anda atau Sistem Actions Center, harus mengaktifkan RTU BookingNotification untuk memberi tahu kami tentang perubahan pemesanan.
    • Jika pengguna tidak mengirimkan pembayaran kepada penjual/partner, harap kirimkan RTU pembatalan kepada kami. Email pembatalan akan dikirim oleh Pusat Tindakan.
  • RTU Layanan: Jika saat ini Anda mengupdate layanan melalui Service RTU, pastikan untuk menyertakan kolom layanan online yang sesuai jika melakukan update untuk layanan online.

Email

Secara {i>default<i}, {i>Actions Center<i} akan mengirimkan konfirmasi pemesanan standar, email modifikasi, dan pembatalan saat pengguna bertransaksi di platform Actions Center.

Partner juga harus mengirim detail konferensi, detail pembayaran, dan informasi kebijakan pembatalan dalam email terpisah kepada pengguna. Anda juga dapat mengirim email pengingat sebelum janji temu atau kelas. Harap lihat dokumen kebijakan untuk memastikan Anda mematuhi kebijakan email untuk kelas virtual.