У Medesk есть Online Booking API: клиника получает набор вебхуков на справочники (сотрудники, прейскурант, кабинеты, часовой пояс), на свободные слоты, на бронирование и на отмену. Голосовой агент не может обращаться к ним напрямую: платформы роботов работают с короткими идентификаторами и человеческими датами, а медицинская система - с длинными ObjectId и временем в GMT. Между ними ставится прослойка, которая переводит форматы, считает время окончания приёма, режет интервалы, кеширует справочники и вместо кодов ошибок возвращает роботу понятную фразу. Дальше всё упирается не в код, а в настройки клиники: привязку услуг к врачам, глубину открытого расписания и заполненные кабинеты.
Что отдаёт Online Booking API Medesk
Клиника подключает не «доступ к базе», а набор вебхуков под конкретные задачи: в проекте использовались 7 методов - сотрудники, прейскурант, кабинеты, часовой пояс, свободные слоты, бронирование и отмена записи.
| Метод | Зачем нужен | Как часто вызывается |
|---|---|---|
| Сотрудники | Список специалистов с идентификаторами и должностями | Синхронизация справочника, несколько раз в сутки |
| Прейскурант | Услуги: название, код, цена, длительность, связанные врачи | Синхронизация справочника |
| Кабинеты | Кабинеты и подразделения, нужны при бронировании | Синхронизация справочника |
| Часовой пояс | Часовой пояс клиники | Один раз при настройке |
| Свободные слоты | Окна по врачу и дате | Во время разговора |
| Бронирование | Создание записи, возвращает идентификатор брони | После подтверждения пациентом |
| Отмена | Отмена записи по идентификатору | По запросу пациента |
Обратите внимание, чего в списке нет: метода «покажи будущие записи этого пациента». Поэтому сценарий переноса собирается отдельно, об этом ниже.
Почему робот не разговаривает с Medesk напрямую
Голосовому агенту нужны короткие идентификаторы, тогда как Medesk возвращает ObjectId вида 6553874c17146908bf9720f3 - поэтому между ними нужна прослойка.
| Что | Чего ждёт голосовой агент | Что даёт или требует МИС |
|---|---|---|
| Идентификаторы | Короткие числа, которые модель может продиктовать | Длинные ObjectId вида 6553874c17146908bf9720f3 |
| Дата и время | Как говорит человек: 26.05.2026 в 8:30 | ISO 8601 в GMT |
| Объём ответа | Два-три слота, иначе агент путается | Весь массив свободных окон |
| Ошибка | Фраза-подсказка, что сказать пациенту | Код ошибки вроде invalid_timerange |
| Длительность приёма | Агент её не считает | Время окончания надо передать самому |
Отсюда и берётся прослойка: небольшой сервис, который держит справочники в кеше, подменяет идентификаторы, считает время, режет интервалы и превращает технические ошибки в человеческие реплики. Тот же принцип работает и для CRM: как выглядит обмен данными в общем виде, разобрано в статье про интеграцию голосового робота с CRM.
Нужен разбор под вашу нишу? или напишите в Telegram - ответим с расчётом по вашей базе.
Как идёт разговор: три точки обращения к системе
Во время разговора робот запрашивает расписание и предлагает пациенту 2-3 свободных слота, затем создаёт бронь в МИС после подтверждения.
Отдельное правило касается ошибок. Если параметры пришли пустыми или кривыми, прослойка не отдаёт код ошибки: она возвращает фразу вроде «уточните, в какой день вам удобно». Иначе агент получает технический мусор и начинает импровизировать в разговоре с пациентом. При сдаче интеграции этот сценарий проверяют намеренно: дёргают адрес с пустыми параметрами и смотрят, что услышит робот.
Пять ловушек, которые видно только на живом API
В проверенном проекте расписание было открыто на 2 недели, а запрос интервала шире 45 дней Medesk отклонял с ошибкой.
1. Время окончания приёма считает не система, а вы. При бронировании передаётся не только начало, но и конец визита. Если у услуги задана длительность, конец равен началу плюс сумма длительностей всех выбранных услуг. Ошибка в этой арифметике означает либо отказ в брони, либо наложение на следующего пациента.
2. Кабинет обязателен. Он приходит вместе со слотом. Если система его не вернула, значит в настройках клиники у этого слота не заданы кабинет и подразделение, и бронирование просто не пройдёт. Проверяется до запуска, чинится на стороне клиники.
3. Горизонт расписания и лимит интервала. В проекте расписание было открыто на две недели, а запрос шире 45 дней система отклоняет с ошибкой. Прослойка обязана резать интервал сама, а сценарий разговора - уметь честно сказать, что дальше запись ещё не открыта.
4. Кривые данные не дают ошибку. Запрос с несуществующим идентификатором врача возвращает не ошибку, а пустой ответ. Для робота это выглядит как «свободных окон нет», и проблема становится невидимой. Поэтому прослойка обязана сверять идентификаторы со своим справочником до обращения к МИС.
5. Справочник клиники может быть не заполнен. В одной группе прейскуранта 19 из 21 услуги не имели привязки к врачам, хотя по остальным 149 услугам связи стояли. Ирония в том, что не заполнено оказалось именно то направление, ради которого затевался робот. Плюс коды услуг в прейскуранте могут повторяться, поэтому идентификатором служит внутренний номер, а не код.
Отдельная история - перенос записи. В базовом наборе методов нет способа спросить, на что записан этот пациент. Значит, либо прослойка ведёт собственный журнал «телефон - номер брони», либо у вендора заказывается дополнительный отчёт-вебхук со списком предстоящих записей.
Что подготовить на стороне клиники
До старта разработки клинике нужно закрыть 7 пунктов: проставить врачей у всех услуг, заполнить кабинеты и подразделения, открыть расписание минимум на месяц вперёд, выдать вебхуки на нужные методы, уточнить лимит бронирований, развести услуги по подразделениям и проверить основание для обзвона.
- Проставить врачей у всех услуг, которые робот будет записывать.
- Заполнить кабинеты и подразделения для слотов онлайн-записи.
- Открыть расписание хотя бы на месяц вперёд, а лучше глубже.
- Выдать вебхуки на все нужные методы, включая часовой пояс клиники.
- Уточнить лимит бронирований: при исчерпании квоты система возвращает отдельную ошибку, а увеличивается лимит только через поддержку вендора.
- Определить, какие услуги в каком подразделении оказываются, чтобы робот называл правильный адрес.
- Проверить основание для обзвона: без согласия пациента исходящий сценарий не запускается.
Что именно робот делает в клинике и где проходит граница его компетенции, разобрано в статье про голосового ИИ для стоматологии. Мировая практика по клиникам - в подборке кейсов ИИ для медицинских клиник.
Что это даёт клинике
Интеграция с МИС помогла сети из 5 клиник получить 363 визита из базы в 13 800 контактов и повысить доходимость с 72% до 77%.
Цифры приведены по страницам кейсов primexai.ru.
Разбор внедрения целиком - в кейсе по стоматологии, а состав работ по запуску голосового агента под ключ - на странице AI МОП.
Частые вопросы про интеграцию робота с Medesk
Можно ли подключить голосового робота к Medesk напрямую, без разработки?
Интеграция с Medesk требует проверки справочников: в одном проекте 19 из 21 услуги ключевой группы не были привязаны к специалистам.
Насколько глубоко робот видит расписание?
Ровно настолько, насколько клиника открыла запись. В нашем проекте расписание было открыто на две недели вперёд, а запрос интервала шире 45 дней система отклоняет с ошибкой. Значит, робот физически не сможет записать «на сентябрь», и это надо либо чинить настройками клиники, либо закладывать в сценарий разговора.
Что происходит, если пациент называет услугу, которой нет у выбранного врача?
Если в настройках Medesk у услуги не проставлены врачи, робот не сможет понять, кто её оказывает. В одном из проектов 19 из 21 услуги в ключевой группе были без привязки к специалистам, при том что по остальному прейскуранту привязка стояла. Правильное решение - попросить клинику проставить связи в настройках, а не зашивать соответствие руками в коде: иначе любое изменение состава врачей ломает робота.
Робот может перенести или отменить запись?
Отмена выполняется по идентификатору брони, поэтому прослойка обязана вести журнал: телефон пациента и номер его записи. Перенос в базовом наборе методов не предусмотрен, он собирается из отмены и новой записи либо через дополнительный отчёт-вебхук со списком предстоящих записей, который заказывается у вендора.
Сколько времени занимает ответ системы во время разговора?
В нашей проверке запрос свободных слотов отрабатывал примерно за две секунды. Для живого разговора это приемлемо, но робот не должен молчать в это время: в сценарии прописывается фраза вроде «смотрю расписание», которую агент произносит до обращения к системе.
Что делать, если у клиники несколько подразделений?
Обязательно проговаривать адрес при записи. В одном из проектов часть услуг оказывалась только во втором подразделении, на другой улице. Пациент, приехавший не туда, - это готовая жалоба и потерянный визит, поэтому подразделение и кабинет должны попадать и в подтверждение, и в напоминание.
Разберём вашу МИС до старта
Посмотрим, что отдаёт ваша система, чего в ней не хватает для записи роботом и какой сценарий запускать первым.
Написать Александру →