История ревью @zoombot


26.04.2020 — Zoom Telegram Integration


17 апреля моё приложение опубликовали в Zoom Marketplace. Тогда я сказал, что поделюсь с Вами этапами прохождения модерации у них.

Для начала необходимо освежить память и вспомнить то, что нужно для того, чтобы приложение опубликовали: перечень.

0 ревью

Выполнив обязательный пункты из перечня я заслал приложение 3-4 апреля. 5-6 меня моментально отклонили с ссылкой на заполнения договора - разрешение на тестирования моего приложения специалистами Zoom'a. Документ был полностью электронный, подпись тоже. Не знаю использовался ли это стартап челика с последнего видео Юрия Дудя, но с цифровой подписью я столкнулся раньше, чем Дудь.

Процедура была элементарной: перейти по ссылке из объяснения отклонения, пару полей заполнить и кнопку нажать. Единственное что там было эдакое - термин из английского, который вне документа переводится иначе. Это я нагуглил (термин забыл, простите). Там про то, на кого документ высылать с моей стороны.

1 ревью

Прошло оно 8 числа. Для моего проекта завели Google Doc.

Не понравилась страница с контактной информацией (это был внизу лендинга). Попросили отдельную страницу сделать из-за того, что контакты необходимо искать. Так же скинули ссылку на ещё один документ - Zoom’s Best Practices for Organizing Your App’s Support URL Content.

Я сделал отдельную страницу и прошёлся по пунктам из их рекомендаций.

Ссылка на документацию. Несмотря на то, что это поле optional, я не стал спорить и сделал страницу, которая в формате презентации (скрин - комментарий) демонстрирует все возможности бота (такой же подход у приложений от них самих).

Scopes. Приложение OAuth, есть перечень разрешений, которые я запрашивал для приложения. Как оказалось, нет необходимости запрашивать на чтение и на запись, потому что запросив на запись ты получаешь чтение. Более того, у них несколько одинаковых скоупов есть в которых я запутался (может поддержка легаси) и выбрал несколько. В общем методом проб я повыключал хлам и оставил самые новые и последние так, чтобы всё работало.

"Нерабочая" команда. Я это заметил сам, но не стал править, подумав, что прокатит так. Речь про команду /join meetingID. При отправке просто команды /join без аргумента выбрасывало из аккаунта из-за неправильного запроса. Тестировщик использовал команду не по ману и уходил в цикл: команда, логаут, логин, команда...

Добавив обработку пустого арга и нормальную валидацию ошибок с бэка я закрыл этот пункт.

2 ревью

10 апреля. Тут я начал орать и много им написывать. Изначально в Zoom'e можно было подключиться без пароля. Потом начались рофлы, как многие залетали в рандом комнаты и показывали писюны просто подобрав ID. Благодаря этому каждая конфа стала защищена паролем. Пароль генерируется случайный, даже если не был указан. При генерации ссылки на вход дописывается в параметр аргумент с хешем пароля для валидации.

Я решил, что было бы неплохо добавить возможность задавать свой пароль. Поэтому в первый аргумент команды /zoom и пихнул ввод пароля. Всё работало, теперь пароль задавался мой и отображался в конференции возле времени продолжительности.

Только вот QA посчитал иначе. Он сказал, что без проблем может зайти по ID конфы без пароля. Что у него его не запрашивает.

Я протестировал его слова с друзьями, подумал, что может из-за типа "instant meeting" пускает. Однако у моих друзей запрашивало пароль. Тогда я посчитал, что он заходит на другом устройстве с помощью ссылки, что дает бот в кнопке (а там уже введён пароль).

Тестировщик отрицал, подключил кого-то старше. Всё это происходило в комментариях гугл дока. Я специально сидел ночами чтобы быть в их часовом поясе и быстро отвечать. Он предположил, что это из-за использования PMI (personal meeting id). Ваш постоянный ID, который есть у аккаунта. Все instant meetings будут использовать его. Генерации нового ID не будет.

Я внёс правки и перестал использовать PMI.

3-4 ревью

use_pmi=False не помогло. Он опять заявил, что пускает без пароля. Я доказывал обратное и тогда он мне записал пламенное видео. Где мало того, что с улыбкой махал в вебку, демонстрируя подключения с двух устройств, дык ещё и комментировал все свои действия.

Я был тронут и перестал бурчать. Чел отлично выполняет свою работу и тратит время на меня. Пошёл читать доку и проводить эксперименты.

В их API оказалась полная дичь, а дока с косяками. Короче, есть настройка на аккаунт - Use PMI. Она глобальная! Её нельзя потрогать при создании конференции через API, несмотря на то, что там по доке можно изменить всё! Так я разобрался, почему у него при каждом вызове /zoom был один и тот же ID (он рассказывал и показывал это в видео, предполагая, что проблема в этом).

Вообще instant meetings это какие-то неконтролируемые с API вещи. Я только потом заметил, что даже оффициальная интеграция Slack'a с Zoom использует исключительно запланированные конференции с временем начала равным вызову команды.

Поняв, что у них тут какие-то кекнутые костыли я умыл руки - вырезал нафиг фичу с установкой своего пароля и отправил ещё раз на ревью. Конечно я это не оставил просто так и написал им в саппорт по разработке (ответили продублировав вопрос. Я забил).

5 ревью

16 апреля. Фичу я вырезал, а скрин в документации не обновил! Да-да, плюс ещё день, чтобы просто поправить 1 картинку, где засветилась возможность установки своего пароля.

Вот и всё. Я думал, что это будет сложнее ✨

Недавние посты


© marshal.by 2020

Исходный код

Сайт работает на Gatsby + prismic и опубликован на GitHub.