Adicionar serviços on-line (descontinuado)

Os serviços on-line são definidos como serviços totalmente on-line em uma plataforma hospedada e não exigem a presença do cliente pessoalmente. Alguns exemplos de serviços on-line podem incluir:

  • Aula de ioga on-line pelo Zoom
  • Masterclass de maquiagem on-line no Google Meet
  • Estimativa em vídeo de encanamento on-line pelo Skype

Requisitos de qualificação para serviços on-line

Antes de iniciar a implementação, revise políticas e práticas recomendadas de serviços on-line.

Implementação de serviços on-line

A integração de serviços on-line é um complemento dos horários disponíveis integração e requer algumas alterações em uma implementação existente. De modo geral, as seguintes mudanças incluem:

  • Feeds: adicionar type, VirtualSession DirectMerchantPayment e CancellationPolicy (se ainda não tiver sido adicionado) aos feeds de serviços
  • Servidor de agendamento: adicione VirtualSessionInfo ao método CreateBooking. enviar e-mails com informações virtuais de configuração para o usuário
  • Atualizações em tempo real (comportamento atual): lide com mudanças em inventário virtual pela RTU InventoryUpdate, as modificações no reservando pela RTU BookingNotification e mudanças no serviço pelo a RTU de serviço

Feeds

Feed de serviços

Os campos a seguir foram adicionados ao feed de serviços para oferecer suporte on-line serviços.

Especificações do feed de serviços

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

Exemplo de feed de serviços

{
  "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"
    }
  ]
}
  • Descrição localizada: a descrição precisa ser explicada com clareza. sobre o que é o serviço. Consulte o guia de práticas recomendadas sobre a melhor forma de estruturar seus serviços conteúdo.
  • Instruções da sessão: as instruções da sessão devem descrever todos faça a configuração necessária e siga as orientações descritas na política.
    • Se o URL do vídeo da plataforma e o ID da reunião não forem criados automaticamente como parte do CreateBooking (por exemplo, os detalhes não são enviados via CreateBookingResponse), você vai indicar claramente session_instructions quando e de quem o usuário deve esperar que os detalhes das plataformas sejam enviados a ele.
  • Requisitos da sessão: os requisitos da sessão devem descrever todos os equipamentos ou materiais necessários de que um usuário precisa para participar a classe de forma eficaz. Você também pode incluir materiais opcionais que o usuário pode necessário, mas marque-as como opcionais.
  • Plataforma: a plataforma deve indicar a plataforma que o usuário usar para acessar o serviço on-line.
    • Se a plataforma for determinada pelo comerciante em outro momento, Defina a platform como FLEXIBLE.
    • Se a plataforma que o comerciante está usando não estiver na lista, defina platform a OTHER, e especifique other_platform_name
  • Política de cancelamento: é importante que as informações de cancelamento sejam precisas. políticas. Definir CancellationPolicy em caso de reembolsos e cancelamentos são permitidos. A suposição padrão, se não definida, é que os reembolsos não são permitido.

Feed de disponibilidade

  • Total de horários: defina como a capacidade total de participantes. permitido para a plataforma (garanta que subtraia o número de funcionários)

Servidor de agendamento

Opcional: se o sistema criar um ID e um URL de reunião em nome dos seus comerciante, inclua VirtualSessionInfo como parte da sua CreateBookingResponse

Especificação do 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"
    }
  }
}

Atualizações em tempo real

A lógica atual para atualizar inventário ou reservas deve ser mantida para agendamentos virtuais.

  • RTU de atualização de inventário: todas as atualizações nas alterações de slots no seu ou o sistema da Central de ações, deve disparar uma InventoryUpdate RTU para nos notificar sobre as mudanças nos slots.
  • RTU BookingNotification: atualizações nos agendamentos. (por exemplo, modificação de horário ou cancelamentos) no seu sistema ou no sistema da Central de ações, deve disparar uma RTU BookingNotification para notificar as mudanças em uma reserva.
    • Se um usuário não enviar o pagamento ao comerciante/parceiro, envie uma RTU de cancelamento para nós. Um e-mail de cancelamento será enviado pelo Central de ações.
  • RTU de serviço: se você atualiza os serviços usando uma RTU, inclua os campos apropriados do serviço on-line se atualizando para um serviço online.

E-mails

Por padrão, a Central de ações envia a confirmação de reserva padrão, e-mails de modificação e cancelamento quando um usuário faz transações na plataforma da Central de ações.

Os parceiros também devem enviar detalhes da conferência, detalhes de pagamento e a política de cancelamento em e-mails separados para o usuário. Também é possível enviar lembretes por e-mail antes do horário ou da aula. Consulte o documento de política para garantir que você esteja em conformidade políticas de e-mail para aulas virtuais.