온라인 서비스는 완전히 온라인으로 제공되는 서비스로 정의됩니다. 고객이 서비스에 참석하지 않아도 되는 경우 참가할 수 있습니다. 온라인 서비스의 예는 다음과 같습니다.
- Zoom 온라인 요가 수업
- Google Meet을 통한 온라인 메이크업 마스터클래스
- Skype를 통한 온라인 배관 동영상 견적
온라인 서비스 자격요건
구현을 시작하기 전에 온라인 서비스 정책 및 권장사항
<ph type="x-smartling-placeholder">온라인 서비스 구현
온라인 서비스 통합은 기존 약속 엔드 투 엔드의 부가기능입니다. 기존 구현을 약간 변경해야 합니다 개략적인 변경사항은 다음과 같습니다.
- 피드:
type
,VirtualSession
,DirectMerchantPayment
,CancellationPolicy
(아직 추가하지 않은 경우)를 서비스 피드에 추가합니다. - 예약 서버: CreateBooking 메서드에 VirtualSessionInfo를 추가합니다. 가상 설정 정보가 포함된 이메일을 사용자에게 보냅니다.
- 실시간 업데이트 (기존 동작): 변경사항 처리 인벤토리 업데이트 RTU를 통해 가상 인벤토리의 BookingNotification RTU를 통한 예약 및 서비스 RTU
피드
서비스 피드
온라인 지원을 위해 서비스 피드에 다음 필드가 추가됩니다. 제공합니다
서비스 피드 사양
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; }
서비스 피드 예
{ "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" } ] }
- 현지화된 설명: 설명은 명확하고 분명하게 전달되어야 합니다. 제공할 수 있습니다 자세한 내용은 서비스를 구조화하는 최선의 방법에 대한 권장사항 가이드 있습니다.
- 세션 안내: 세션 안내에서는
에 나와 있는 지침을 충족하고
정책을 준수해야 합니다.
- 플랫폼 동영상 URL 및 회의 ID가 자동으로 생성되지 않은 경우
(예: 세부정보는 Google Play API를 통해 전송되지 않음)
CreateBookingResponse
)가 있는 경우session_instructions
언제 및 누구에게 사용자는 플랫폼 세부정보가 자신에게 전송될 것이라고 예상해야 합니다.
- 플랫폼 동영상 URL 및 회의 ID가 자동으로 생성되지 않은 경우
(예: 세부정보는 Google Play API를 통해 전송되지 않음)
- 세션 요구사항: 세션 요구사항은 사용자가 참가하는 데 필요한 장비나 자재가 효과적으로 할 수 있습니다. 사용자가 사용할 수 있는 선택적 자료를 포함할 수도 있습니다. 선택사항으로 표시해 주시기 바랍니다.
- 플랫폼: 플랫폼은 사용자가 사용할 플랫폼을 나타내야 합니다.
온라인 서비스에 액세스하는 데 사용할 수 있습니다.
- 나중에 판매자가 플랫폼을 결정하는 경우
platform
를FLEXIBLE
로 설정합니다. - 판매자가 사용 중인 플랫폼이 목록에 없는 경우
platform
을OTHER
로 설정하고, 다음을 지정합니다.other_platform_name
입니다.
- 나중에 판매자가 플랫폼을 결정하는 경우
- 취소 정책: 취소 정책을 정확하게 작성하는 것이 중요합니다.
정책 환불 및 취소인 경우
CancellationPolicy
설정 허용됩니다. 설정하지 않은 경우 기본적으로 환불은 허용됩니다.
이용 가능 여부 피드
- 장소 총계: 참가자의 총 수용 인원으로 설정합니다. 플랫폼에 허용된 직원 (직원 수를 줄여야 함)
예약 서버
선택사항: 시스템에서 관리자를 대신하여 회의 ID와 URL을 생성하는 경우
판매자님의 요청에 VirtualSessionInfo
을(를) 포함해 주세요.
CreateBookingResponse
입니다.
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" } } }
실시간 업데이트
인벤토리 또는 예약을 업데이트하는 기존 로직은 유지해야 합니다. 가상 예약에 적합합니다
- InventoryUpdate RTU: 인벤토리에서 슬롯 변경사항이 변경되면 시스템 또는 액션 센터 시스템은 InventoryUpdate를 시작해야 합니다. RTU를 사용하여 슬롯의 변경사항에 관해 Google에 알립니다.
-
BookingNotification RTU: 예약 업데이트
(예: 시간 변경 또는 취소) 또는
Actions Center 시스템에서 BookingNotification RTU를 실행하여 알림을 보내야 합니다.
Google에 알려 줍니다.
- 사용자가 판매자/파트너에게 결제 정보를 제출하지 않는 경우 취소 RTU를 전송합니다. 취소 이메일은 액션 센터.
- 서비스 RTU: 현재 '서비스'를 통해 서비스를 업데이트하는 경우 RTU를 사용하는 경우 다음과 같은 경우 적절한 온라인 서비스 입력란을 포함해야 합니다. 업데이트 중이라 할 수 있습니다
이메일
기본적으로 Actions Center에서는 표준 예약 확인 이메일을 전송합니다. 수정 및 취소 이메일이 전송됩니다.
파트너는 회의 세부정보, 결제 세부정보, 취소 정책 정보를 별도의 이메일로 사용자에게 보냅니다. 원하는 경우 약속 또는 수업 전에 리마인더 이메일을 보낼 수도 있습니다. 자세한 내용은 정책 문서 가상 수업의 이메일 정책으로 변경되었습니다