Les services en ligne sont définis comme des services entièrement en ligne. via une plate-forme hébergée et n'exigent pas du client qu'il se rende au service en personne. Voici quelques exemples de services en ligne:
- Cours de yoga en ligne avec Zoom
- Masterclass de maquillage en ligne via Google Meet
- Vidéo de plomberie en ligne devis via Skype
Critères d'éligibilité aux services en ligne
Avant de commencer l'implémentation, veuillez consulter Règles et bonnes pratiques liées aux services en ligne.
<ph type="x-smartling-placeholder">Implémentation de services en ligne
Une intégration de services en ligne est un module complémentaire de l'API Appointments de bout en bout existante et nécessite de modifier une implémentation existante. De manière générale, les modifications suivantes sont apportées:
- Flux: ajoutez
type
,VirtualSession
,DirectMerchantPayment
etCancellationPolicy
(si ce n'est pas déjà fait) aux flux de services - Serveur de réservation: ajoutez VirtualSessionInfo à la méthode CreateBooking. Envoyer des e-mails contenant des informations de configuration virtuelle à l'utilisateur
- Mises à jour en temps réel (comportement existant): gérez les modifications apportées aux de l'inventaire virtuel via la mise à jour en temps réel InventoryUpdate, des modifications de la réservation via la mise à jour en temps réel BookingNotification, et les modifications du service via The Service RTU
Flux
Flux services
Les champs suivants sont ajoutés au flux "Services" pour l'assistance services.
Spécifications du flux de services
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; }
Exemple de flux de services
{ "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" } ] }
- Description localisée: la description doit être claire. en quoi consiste le service. Veuillez consulter les guide des bonnes pratiques sur la meilleure façon de structurer vos services contenus.
- Instructions concernant la session: les instructions concernant la session doivent décrire l'ensemble
la configuration nécessaire et respecter les consignes spécifiées dans la
règlement.
- Si l'URL de la vidéo et l'ID de la réunion de la plate-forme ne sont pas créés automatiquement
dans le cadre de CreateBooking (par exemple, les détails ne sont pas envoyés via
CreateBookingResponse
), vous devez l'indiquer clairement dans lesession_instructions
quand et qui le l'utilisateur doit s'attendre à ce que les informations sur les plates-formes lui soient envoyées.
- Si l'URL de la vidéo et l'ID de la réunion de la plate-forme ne sont pas créés automatiquement
dans le cadre de CreateBooking (par exemple, les détails ne sont pas envoyés via
- Conditions requises pour les sessions: elles doivent décrire toutes les L'équipement ou les matériaux nécessaires dont l'utilisateur a besoin pour participer la classe efficacement. Vous pouvez également inclure des supports facultatifs que l'utilisateur peut n'en avez pas besoin, mais veuillez les marquer comme facultatives.
- Plate-forme: la plate-forme doit indiquer la plate-forme que l'utilisateur devra utiliser.
utiliser pour accéder
au service en ligne.
- Si le marchand détermine la plate-forme ultérieurement,
définissez
platform
surFLEXIBLE
. - Si la plate-forme utilisée par le marchand ne figure pas dans la liste, définissez
platform
àOTHER
, et préciserother_platform_name
- Si le marchand détermine la plate-forme ultérieurement,
définissez
- Modalités d'annulation: il est important que les conditions d'annulation soient exactes.
règles. Définissez
CancellationPolicy
pour les remboursements et les annulations sont autorisés. Si ce champ n'est pas défini, l'hypothèse par défaut est que les remboursements ne sont pas autorisé.
Flux disponibilité
- Nombre total de places: indiquez le nombre total de participants. pour la plate-forme (veillez à soustraire le personnel)
Serveur de réservation
Facultatif: Si votre système crée un ID et une URL de réunion au nom de vos
marchand, veuillez inclure VirtualSessionInfo
dans votre
CreateBookingResponse
Spécification 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" } } }
actualités en temps réel
La logique existante de mise à jour de l'inventaire ou des réservations doit être maintenue. pour les réservations virtuelles.
- InventoryUpdate RTU: toute mise à jour des modifications apportées aux emplacements sur votre ou du centre d'actions, doit déclencher une mise à jour de l'inventaire RTU pour nous informer des modifications apportées aux emplacements.
-
BookingNotification RTU: toute modification apportée aux réservations.
(modification d'horaire ou annulation, par exemple) sur votre système ou sur le
Le système du centre d'actions doit déclencher une mise à jour en temps réel BookingNotification pour avertir
sur les modifications apportées à une réservation.
- Si l'utilisateur n'envoie pas le paiement au marchand/partenaire, veuillez envoyez-nous une demande d'annulation. Un e-mail d'annulation sera envoyé par le Centre d'actions.
- Service RTU: si vous mettez actuellement à jour des services via un service RTU, veillez à inclure les champs de service en ligne appropriés si pour un service en ligne.
Adresses e-mail
Par défaut, le centre d'actions envoie la confirmation de réservation standard, des e-mails de modification et d'annulation lorsqu'un utilisateur effectue une transaction sur la plate-forme du Centre d'actions.
Les partenaires doivent également envoyer les détails de la conférence, les détails du paiement, et les conditions d'annulation dans des e-mails distincts destinés à l'utilisateur. Si vous le souhaitez, vous pouvez envoyer des e-mails de rappel avant le rendez-vous ou le cours. Pour plus d'informations, veuillez consulter le document d'informations sur les règles pour vous assurer que vous les respectez aux règles de messagerie pour les cours virtuels.