Модерация интеграций

Общие требования:

  • Публичные интеграции должны использовать механизм авторизации oAuth 2.0, использование механизма API ключей не допускается. Требование с февраля 2020 года.
  • Доступ интеграции ко всем аккаунтам amoCRM не допускается без публикации в маркетплейсе.
  • Простота в использовании. Технически не подготовленный пользователь должен понимать, как включить интеграцию, как ее настроить, как с ней работать и где получить поддержку. Чем работа с интеграцией понятнее, тем больше пользователей ее будет использовать.
  • Качество изготовления. Не должно быть известных разработчикам ошибок. При возникновении внештатных ситуаций интеграция должна выдавать сообщения пользователю о сбое и контактными данными для обращения.
  • Безопасность. Интеграция не должна собирать пользовательскую информацию (API ключ, email и другие данные), если в ней нет необходимости для функционирования. Если данная информация нужна для работы — при установке, пользователь должен быть уведомлен о том, что данные будут отправлены на сервер интеграции. При этом, пользователь должен подтвердить данный пункт, без подтверждения интеграция не должна устанавливаться! Пример реализации проверки согласия на передачу данных вы можете посмотреть по ссылке
  • Если интеграция работает только на конкретных тарифах, данная информация должна быть в описании виджета.
  • Разработчик интеграции не должен вести разработку, схожих с amoCRM, систем.
  • Запрещено упоминание оплаты лицензий amoCRM через партнеров в любом виде
  • При публикации интеграции в английском маркетплейсе, если картинки с надписями на кириллице, необходимо чтобы в архиве были также и картинки с надписями на латинице. Номер телефона поддержки должен начинаться с +1, допускается использования других номеров, но только с англоговорящей поддержкой. Все ссылки должны вести на сайты на английском языке. В описании интеграции не должен упоминаться домен .ru, в том числе почта поддержки. Все изображения, видео и инструкции должны быть на английском языке.
  • Интеграция не должна изменять страницы, которые не включены в разрешенный список. Запрещается скрывать/изменять/подменять рейтинги и отзывы в разделе интеграции и модальном окне настроек виджетов.
  • Блок виджета нельзя размещать выше блока центра нотификаций в левой части меню.
  • В архиве не должно быть неиспользуемых файлов картинок, скриптов и прочих файлов, которые не задействованы в работе интеграции.
  • При использовании каналов чатов, необходимо указать данные зарегистрированного канала.
  • Не нужно указывать области видимости в манифесте (в параметре locations), которые вы не используете в интеграции.
  • За интеграцией должен быть закреплен технический аккаунт. Технический аккаунт – это аккаунт, который предоставляется интеграторам после публикации интеграции в маркетплейсе. Такой аккаунт предназначен для разработки и тестирования виджета (НЕ для ведения своего бизнеса), а также для прямого взаимодействия с разработчиками отдела интеграций. Такой аккаунт на постоянной основе продлевается, пока виджет находится в маркетплейсе. Чтобы сделать аккаунт техническим должны быть соблюдены следующие условия:
    -аккаунт тестовый (ни разу не оплачен);
    -не партнерский (зарегистрирован не по партнерской программе amoSTART).

Технические требования:

  • Файл manifest.json должен быть корректно составлен:

    – Количество используемых локализаций должно быть равно количеству lang-файлов и они должны быть корректно заполнены.
    – Если виджет носит информационный (рекламный) характер, то есть не устанавливается напрямую и в нем нет функционала обычного виджета (под функционалом обычного виджета подразумевается какая-то бизнес-логика, связанная с системой amoCRM), то в манифесте параметр widget/installation должен быть false. – С ноября 2018 появился новый обязательный раздел в manifest.json widget/support/ содержащий ключи:
    widget/support/link – ссылка на поддержку интеграции,
    widget/support/email – email технической поддержки.

    Тур является обязательным условием для всех публичных интеграций. В manifest.json свойство tour содержит следующие ключи:
    tour/is_tour: true – Указывает на то, что тур включен для виджета,
    tour/tour_images – Содержит ключи локализаций для картинок тура,
    tour/tour_description – Ключ ланга, содержащего краткий текст, который будет выведен в момент показа тура виджета.

    Требования к туру:
    – свойство “is_tour” должно быть установлено в true,
    – свойство “tour_description” должно быть заполнено,
    – в туре должно быть не более 4 картинок,
    – все картинки должны отображаться корректно.
  • Код не должен быть минимизирован или обфусцирован (за исключением подключаемых библиотек).
  • Кодировка файлов – UTF-8 без BOM. Все файлы должны использовать перевод строки Unix LF.
  • Нет комментариев кода, кроме поясняющих.

    Можно

    // получим id аккаунта.

    Нельзя

    // var a = AMOCRM.constant('account').id
  • Виджет не должен в css файлах иметь общие классы с нашей системой. Все стили должны быть указаны относительно
    корневого селектора виджета. Это даёт возможность внутри виджета переопределять какие угодно стили, не затрагивая
    системные.

    Можно

    #amo_widget_code,
    .control-select { color: green }

    Нельзя

    .control-select { color: red }
  • Запрещены манипуляции с глобальными селекторами CSS.

    Например: $(“.widget_settings_block__fields”).hide();

  • Код виджета не должен опираться на стили switcher’a (switcher__on, switcher__off) – они подлежат удалению из системы.
  • Запрещены виртуальные клики на кнопку установить.
  • Дополнительные плагины виджета не должны ссылаться на временную папку виджета – upl, так как эта папка будет доступна только в private, при переводе в public данная папка будет недоступна. 
  • Не должно быть тестовых данных, дебагов, конструкций типа console (log, debug, error и т.п.), alert(), print_r и др.
  • В виджете не должно быть подключения внешних файлов-зависимостей через document.createElement(‘script’) и вставку этого элемента напрямую в head. Все внешние зависимости должны подключаться через requirejs в блоке зависимостей в define. 
  • Дополнительные плагины или иные внешние подключения в виджет не должны грузиться с внешних ресурсов за исключением публичных библиотек, наподобие cdnjs.com. Подключение сторонней библиотеки для php-части обсуждается отдельно.
  • При добавлении дополнительной страницы расширенных настроек виджета в разделе “Настройки”, название подзагловка должно совпадать с названием виджета. Страница должна находится после всех наших стандартных страниц раздела “Настройки”.
  • Отсутствуют непроверенные обращения к элементам основного приложения

    (Например: var i = AMOCRM.setting.new.another).

  • Виджет не должен влиять на данные в глобальной переменной AMOCRM, он может только читать данные оттуда. 
  • Если используется php-часть, все переменные и действия должны быть проверены, не должно быть пустых методов. Уделите особое внимание проверке переменных на существование – любой warning или notice приведёт к падению виджета. 
  • В php-части необходимо реализовать проверку SSL-сертификатов подключаемого внешнего ресурса.
  • Запрещены ajax-запросы, XMLHttpRequest, WebSockets в циклах, их использование может повлиять на скорость обработки системных запросов. URL-запрос должен содержать timeout не менее 2 секунд.
  • Запрещены синхронные запросы (async: false), так как их использование замедляет подгрузку остальных скриптов, что в конечном счете сказывается на скорости загрузки страниц сервиса.