Есть ли API для получения доступных временных интервалов для бронирования в Microsoft Bookings из MS Graph Bookings API?

Требуется указать доступные временные интервалы в Microsoft Booking, когда клиент выбирает конкретную услугу. Это будет относиться ко всем бронированиям выбранных услуг, сделанным в этот день, часам работы сотрудников, которые работают над этими услугами, и временным рамкам для выбранной услуги.

Например, если услуга A занимает 1 час, а время работы с 08:00 до 17:00. Временные интервалы будут с 08:00 до 09:00, с 09:00 до 10:00 и т. Д. Теперь скажите, есть ли два штаба и слот 11:00 - 12:00 зарезервированы для них обоих, то его следует исключить при отображении доступных слотов. Кроме того, если только один из сотрудников забронирован на 11:00-12: 00, включите его в доступные слоты, так как один сотрудник свободен для обслуживания.

Следуя API в разделе Использование Microsoft Bookings API в Microsoft Graph для реализации этого требования. Может ли кто-нибудь помочь с подходом к доступным API?

2 ответа

Решение

Вы можете использовать приведенный ниже вызов, чтобы назначить встречи на этот конкретный день, который дает вам множество свойств, таких как serviceName,staffmemberIds, customerName,Start и end of meeting. В этом вызове я сначала получил назначения бронирования для определенного диапазона дат (2 ноября 2020 г.), а затем отфильтровал их в соответствии с serviceName, что привело к появлению приложений для serviceName в этот конкретный день. Вы можете использовать параметр запроса $ select для получения определенных свойств.

Звонок -

https://graph.microsoft.com/beta/bookingBusinesses/{bookingBusinessid}/calendarView?start=2020-11-02T00:00:00Z&end=2020-11-03T00:00:00Z&$select=customerName,serviceName,staffMemberIds,start,end&$filter=serviceName eq 'servicename'

Вы можете узнать рабочее время сотрудников по этому телефону.

https://graph.microsoft.com/beta/bookingBusinesses/{BookingBusinessid}/staffMembers

Вам нужно кодировать на своей стороне, сравнивая эти 2 данных и отображать в соответствии с вашими требованиями.

Отвечая на мой вопрос с реализованным подходом к решению. Спасибо за понимание @Shiva-MSFTIdentity.

Идея состоит в том, чтобы отображать доступные временные интервалы в течение всего рабочего времени для определенных шагов. Образцы исходного кода написаны на языке C#. Шаги, которые можно использовать:

  1. Узнайте режим работы магазина.

    BookingBusiness businessObject = await graphServiceClient.BookingBusinesses[StoreName].Request().Select(x => new { x.BusinessHours }).GetAsync();

  2. Получите подробную информацию об услуге, такую ​​​​как продолжительность, staffmemberId и т. д.

    BookingService serviceObject = await graphServiceClient.BookingBusinesses[StoreName].Services[serviceId].Request().GetAsync();

  3. Теперь, имея часы хранения и продолжительность обслуживания, разделите и создайте несколько временных интервалов продолжительности. Например; если часы работы магазина с 08:00 до 17:00, слоты для услуги длительностью 60 минут: с 08:00 до 09:00, с 09:00 до 10:00, с 11:00 до 12:00 и т. д. Если postBuffer и preBuffers учитываются, включите его сюда.

  4. Получите данные о сотрудниках и для всех сотрудников, которые предоставляют выбранную услугу, проверьте, используют ли они рабочие часы или нет. Если нет, сохраните их рабочее время.

    IBookingBusinessStaffMembersCollectionPage staffMemberCollection = await graphServiceClient.BookingBusinesses[StoreName].StaffMembers.Request().GetAsync()

  5. Следующим шагом является получение встреч на день. Нам нужно сохранить детали startTime, endTime, staffmemberId этих встреч.

    IBookingBusinessCalendarViewCollectionPage calendarView = await graphServiceClient.BookingBusinesses[StoreName].CalendarView.Request(queryOptions).Filter(filterString).GetAsync();

  6. Как только мы соберем все необходимые данные для каждого временного интервала,

  • проверьте, попадает ли в него назначение. Если да, отметьте staffMemberIds как зарезервированные для слота.
  • Если количество забронированных сотрудников равно количеству сотрудников, подразумеваемых предоставлением услуги, слот бронируется.
  • В противном случае найдите список ожидаемых сотрудников, которые могут предоставить услугу, и проверьте, доступны ли они в зависимости от их рабочего времени.
  • Если доступен хотя бы один нотоносец, отметьте слот как доступный. В противном случае он забронирован.
Другие вопросы по тегам