Битрикс24 как установить приложение
Лайфхакер продолжает свою историю перехода в Битрикс24, и сегодня мы подробнее рассмотрим один очень важный момент, который необходимо учитывать при выборе системы для управления рабочими процессами — мобильную составляющую. В нашей первой статье мы говорили о том, что команда ЛХ — довольно децентрализованное сообщество людей по интересам, и важно обеспечить с ними постоянную связь без ущерба для их комфорта.
Как это сделать? Очевидно — доставлять и передавать всю нужную информацию тем же способом, которым мы привыкли это делать в эпоху смартфонов и планшетов. Не имеет значения, прилёг ты на минуту на диван, отошёл покурить, в туалет, едешь в метро или в автобусе — смартфон всегда с тобой. Да мы его из рук почти не выпускаем. В общем, если нужно достучаться до человека, то сделай так, чтобы он получил пуш-уведомление :)
Зачем приложение
Вполне логичный вопрос. Нафига ставить приложение, если Битрикс24 сам по себе облачный и у него есть веб-лицо? Ответ кроется в его предназначении. Всё-таки это не односторонняя передача данных. Даже если не брать во внимание проблему из предыдущего абзаца, ты всё равно должен иметь возможность не только получать, но и передавать информацию. Пока что мобильные браузеры не умеют красиво работать с внутренней памятью мобильного устройства, а вот приложение прекрасно с этим справляется. Загрузить доработанный документ или отчёт? Пожалуйста. Закинуть в рабочую группу макет презентации, которую прямо в пути сделал «на коленке», то есть на планшете? Легко. Фотографии из галереи тоже прекрасно заливаются. При этом не требуется какого-то дополнительного ПО для просмотра уже размещённых на портале файлов. Приложение снабжено средством просмотра для большинства используемых нами форматов документов и изображений.
Собственно, мы часто задаёмся вопросом: а смогут ли планшеты и смартфоны заменить нам компьютеры и стать рабочими инструментами? В полной мере, конечно, пока нет, но вот прямо сейчас, незаметно и неосязаемо для нас самих, это начинает происходить.
В сравнении с веб-интерфейсом
Нам не нужно было приложение, которое выступает лишь в качестве инструмента наблюдателя. Вы знаете, бывают такие решения, когда ты всё видишь, но сделать со своего смартфона ничего не можешь. Приходится срочно решать вопрос с доступом к компьютеру и начинать действовать. В данном случае, в мобильном приложении реализовано всё, что есть в основной веб-версии Битрикс24. Ну, то есть буквально. Можно даже посмотреть на главное меню веб-интерфейса и сравнить.
Все пунктики те же самые, ничего не упущено. Первым делом мы провели эксперимент и смоделировали постановку и выполнение конкретной задачи со смартфона. Мы не будем ещё раз рассказывать алгоритм и последовательность, так как вопросу постановки и выполнения задач посвящена статья «Эффективное управление задачами». Достаточно лишь сказать, что каждое действие, выполняемое там, оказалось возможным здесь — через мобильное приложение.
И да, в комментариях к прошлым публикациям мы натыкались на негативные отзывы об iOS и Android приложениях Битрикс24, но не смогли их повторить у себя. Варианта тут два: либо мы начали активно пользоваться мобильными решениями Битрикс24 позднее, и к этому времени очевидные баги пофиксили, либо это тёмная магия.
Скорее всего, виной всему был всё же первый пункт. Не забываем, что над логотипом Битрикс24 по-прежнему висит надпись «beta». Единственная деталь, которая объективно бросается в глаза сейчас — на Android приложение работает медленнее, чем на iOS (точнее, медленнее подгружаются данные при навигации). В остальном всё хорошо, работе ничего не мешает.
Помимо исключительно рабочей деятельности, приложение помогает лучше организовывать коллектив благодаря календарю. То есть, можно сразу из единого интерфейса составить ясное представление о том, кто и в какие часы сегодня доступен. Для пользователей iPhone есть ещё одна приятность: календарь Битрикс24 полностью интегрируется с родным календарём iOS.
И да, если ситуация совсем критическая, то прямо из приложения можно отобразить все контактные данные любого сотрудника и позвонить ему в один тап.
Кому нужно мобильное приложение
Практика показала, что в большинстве случаев мобильное приложение оказывается более востребованным теми, кто занимается руководительской, организационной и контролирующей деятельностью. В любом случае, для выполнения задачи исполнителю потребуются какие-то офисные приложения и инструменты, которыми удобнее пользоваться на стационарном компьютере, либо ноутбуке, а вот после завершения основной работы дальнейшее общение и уточнение деталей удобно вести уже со своего смартфона.
Безусловно, приложение помогает аккаунт-менеджерам. Человек, который ведёт сразу несколько проектов, обеспечивая и организуя при этом поток данных между сторонними лицами и сотрудниками-исполнителями, может сойти с ума, если у него не будет возможности работать с лавиной информации через единую среду. В этом плане приложение позволяет сгладить общую нагрузку, более равномерно распределить её на рабочем временном интервале.
Ну и, конечно же, продажники — они общаются с клиентами, а клиенты бывают разные. Кто-то отвечает исключительно в рабочие часы и оперативно, а кому-то свойственно отвечать седьмой ночью с момента получения очередного письма. С приложением контролировать активность капризных клиентов и своевременно на неё реагировать куда проще.
На что похожа работа с Битрикс24 через мобильное приложение
Помните, мы рассказывали о социальных фишках Битрикс24? Нам кажется, что Живая лента, используемая сервисом в качестве способа вывода всей относящейся к конкретному пользователю информации, была изначально сделана для мобильной версии. Когда ты заходишь в мобильный интерфейс и видишь эту ленту событий, то кажется, что ты на самом деле зашёл в соцсеть. Только тут не котики, а работа, но в таком же наглядном и понятном представлении.
Не по теме: о ценах
Сегодня мы постарались рассказать о том, как мобильные решения Битрикс24 прижились у нас. Безусловно, пока мы не освоили все фишки системы, но это происходит как-то само собой, постепенно. В нашей следующей публикации мы посмотрим на Битрикс24 со стороны сотрудника отдела продаж. Эти люди генерируют деньги и кормят любой современный бизнес. Залог успеха для руководителя компании — наличие у его продажников эффективного инструмента, который позволил бы им выложиться на 100%. В общем, мы расскажем о том, какие возможности открывает этот сервис для построения отлаженной системы коммуникации с клиентами, а также для визуализации и анализа коммерческой деятельности.
Для расширения функциональности Bitrix24 удобно использовать приложения. В данной статье описано создание с нуля локального serverless приложения.
Для установки нашего приложения нам понадобится собственно портал bitrix24, в котором мы обладаем правами администратора или правом установки и редактирования приложений.
Если такого портала нет — создать его можно здесь.
Выбираем пункт Для личного использования . После нажатия кнопки Добавить мы попадаем в диалог создания приложения.
Заполняем следующие поля: | Название поля | Значение |
---|---|---|
Название приложения* | exampleApp | Или любое другое |
Russian (ru) | Пример приложения | Также можно заполнить значения для других нужных языков |
Пользователи (user) | отмечаем галочкой | Сейчас нам понадобится только это разрешения, но в дальнейшем разрешения для приложения можно будет корректировать |
Здесь нам нужно будет остановится, так как добавлять пока нечего. Оставим вкладку браузера открытой и приступим к созданию нашего приложения.
Официальная javascript-библиотека
Создадим папку с произвольным названием и в ней единственный пока файл index.html со следующим содержанием (исходный код):
Помещаем файл index.html в zip-архив и указываем этот архив в качестве значения поля Загрузите архив с вашим приложением (zip)* в диалоге создания приложения.
Затем нажимаем кнопку "Сохранить"
Посмотрим, что у нас получилось.
Кликаем по Перейти к приложению и видим… пустое место на месте нашего приложения.
Все необходимое для нас на данном этапе находится сейчас в консоли разработчика.
Мы видим, что наше приложение успешно получило данные необходимые для авторизации.
Официальная javascript-библиотека c promise
Использование callback-функций имеет свои преимущества, но не всем нравится или не всегда подходит к ситуации.
Поэтому попробуем получить тот же результат в promise-стиле. Для этого изменим наш index.html (исходный код)
Неофициальная библиотека BX24
Если вы планируете писать приложение на typescript (можно использовать и с javascript) и/или обладаете умеренным авантюризмом, то можно попробовать использовать сторонние библиотеки для авторизации.
Например эту.
В этом случае наш index.html нужно будет изменить следующим образом (исходный код):
Опять архивируем, опять обновляем наше приложение, опять смотрим, опять все работает.
Инструменты разработки
Полагаю, что к этому времени вы уже достаточно устали от процедуры архивирования и обновления приложения.
Попробуем сделать процесс разработки чуть более удобным и быстрым.
Для этого нам понадобится nodejs .
Проверить его наличие на компьютере можно выполнив:
В папке нашего проекта инициализируем npm:
Установим необходимые пакеты:
Можно аналогично создать проект с помощью create-react-ap или angular-cli .
Состояние проекта после всех изменений можно посмотреть здесь.
Создадим в корне нашего проекта файл server.js
Создадим папки src и public
В папку public перенесем index.html и изменим его содержимое на:
В папке src создадим файлы
Добавим скрипты в package.json :
Далее так как и команда start и команда watch не заканчиваются, их нужно запускать параллельно. Для этого в двух командных строках запускаем
Перейдите к просмотру вашего приложения:
Вы должны увидеть приветствие с именем текущего пользователя:
Если использовать официальную библиотеку, то отличаться будут только два файла:
Итоговый код проекта для использования официальной библиотеки здесь.
Ознакомиться со всеми возможными методами и возможностями API можно здесь.
Исходный код можно увидеть здесь.
И последнее замечание. Описанные выше способы и методы не являются набором лучших практик. Это скорее предложение к конструктивному обсуждению.
UPD: желающих высказаться о 1С-Битрикс или Битрикс24 прошу сделать небольшое интеллектуальное усилие и осознать, что статья не о Битрикс24 и совсем не о 1С-Битрикс.
Это если в Питере прохожий объясняет другому, как пройти к Петропавловской крепости и тут третий вмешивается с репликой:
"Да тиран был ваш Петр I. Тиран и деспот. И усы у него дурацкие".
Если есть конструктивные замечания к коду в СТАТЬЕ или к подходам или к используемым паттернам — добро пожаловать.
Если вы решите изменить функционал своего сервиса Битрикс24 , вы можете легко это сделать установив новые приложения. Преимуществом сервиса является то, что установка новых приложений и обновление существующих производится очень просто и абсолютно не требует нового обучения и новых знаний. Всего несколько простых нажатий на кнопки и приложение установлено или обновлено.
При этом, если вы партнёр компании 1С- Битрикс , то для вас имеется возможность загружать свои приложения в каталог. Если же вы решили разработать собственные приложения, то вам следует обратиться к информации, изложенной в курсе разработчика Bitrix Framework и в соответствующей документации.
Помните, что устанавливать приложения, доступные в « Приложениях для Битрикс24» , имеет право пользователь, обладающий правами администратора вашего сервиса битрикс . В меню « Приложения» только ему доступен пункт « Все приложения», только он может использовать его для редактирования и управления ими :
При нажатии на этот пункт (Приложения – все приложения), откроется следующее содержание – см. рисунок:
- Перечень доступных в « Все приложения» всех приложений (причем, список составлен по категориям);
- Все приложение, когда-либо установленные вами, в том числе платные, бесплатные и даже удаленные. Чтобы увидеть их, кликните на кнопку «Покупки»
- Для того, чтобы увидеть обновления для установленных у вас приложений – нажмите на кнопку « Обновления» .
Для этого вам придется перейти на страницу устанавливаемого приложения с полной информацией о нем:
Для установки приложения нажмите кнопку « Установить» . Если понадобится, система автоматически запросит у вас необходимые разрешения для нужных действий:
Если вы согласны и разрешаете выполнение предложенных действий, то нажмите еще раз кнопку « Установить» . Система самостоятельно выполнит установку и установленное приложение отобразится в меню:
Обновление установленных приложений.
Что бы проверить наличие обновлений для установленных приложений и их установки, воспользуетесь кнопкой «Обновления». Она расположена на странице « Приложения – все приложения». Нажав на эту кнопку, вы увидите все обновления, доступные вам для установки.
На прошлой неделе мы начали рассказывать о том, как разрабатываются приложения для Битрикс24. В первом выпуске мы определили, с чего начинать разработку, а также описали основные задачи, выполняемые приложением, и данные, которые будут использоваться для этого. Если вы не читали первую часть, рекомендуем начать именно с нее, чтобы у вас была полная картина разработки.
Ну а сегодня мы продолжим познавать мастерство разработки. Начнем с логического старта - с установки приложения, а точнее с реализации функции. Далее повествование идет от лица Вадима - нашего руководителя отдела web-разработки.
Начинаем разработку
Схема 1. Установка приложения
Сохраняем в лог запрос с портала
Пробуем получить ранее сохраненные о портале данные
Есть ли запись о портале?
фиксируем факт установки в логах
формируем поля для новой записи
фиксируем в логах значения полей
добавляем новую запись
фиксируем в логах результат добавления
формируем запрос для подписки на событие OnAppUninstall
отсылаем запрос на портал
фиксируем в логах запрос и результат выполнения
фиксируем факт обновления в логах
формируем поля для обновления записи
фиксируем в логах значения полей
обновляем старую запись
фиксируем в логах результат обновления
формируем запрос на текущий список наших подписок на события
отсылаем запрос на портал
фиксируем в логах запрос и результат выполнения
инициализируем массив под батч-запрос
собираем в массив запросы на удаление старой подписки
если массив не пустой, отправляем запрос на портал
фиксируем в логах запрос и результат выполнения
формируем запрос для новой подписки на событие OnAppUninstall
отсылаем запрос на портал
фиксируем в логах запрос и результат выполнения
Выводим страницу пользователю
подключаем js-библиотеку портала
Вопрос об обработке ошибок настолько важен, насколько часто упускается из вида. Можем ли мы сказать порталу, что установка завершена, если нам не удастся подписаться на события или сохранить запись о портале? Вероятно, ничего уж такого критичного в плане основной задачи приложения не произойдет, мы лишь не сможем потом определить факт обновления и не сможем почистить таблицы от данных портала, на котором приложение было удалено. И все-таки факт того, что написано кривовато, привяжется навсегда к приложению в наших головах, повысит уровень адреналина, снизит стрессоустойчивость. Короче, самим же хуже будет. А потому давайте решать, что завершать установку при наличии подобных ошибок нельзя ни в коем случае.
Схема 2. Вторая версия кода (конкретные действия спрятаны в вызовы функций):
Сохраняем в лог запрос с портала
Пробуем получить ранее сохраненные о портале данные
Есть ли запись о портале?
фиксируем факт установки приложения в логах
фиксируем факт обновления в логах
Выводим страницу пользователю
подключаем js-библиотеку портала
Думаю, что все понятно, кроме вызовов createUserMessage() и rollBackIntstall().
Теперь по второму методу. С ним попроще: если мы зафиксировали у себя данные о портале (добавили или обновили), а ошибка произошла на этапе событий, то очевидно нам следует вернуть назад все, как было. Отсюда возникает задача запоминать выполненные действия и исходные данные. Либо, если все действия были связаны с базой данных, использовать транзакции.
Если теперь посмотреть на код приложения, то понятно становится высказывание, что программирование - это работа с ошибками. И посмотрев на код еще раз, вижу, что в двух местах вызывается запись в лог факта установки/обновления и совсем не там, где надо бы. Эти два действия фактически различаются лишь значением одного поля EVENT_TYPE, и вызываются из мест, в которых факт установки/обновления еще не факт. Так что исправим эту ошибку. Там, где было логирование, будем лишь запоминать тип события, а само логирование перенесем в конец установки, когда точно известно, все ли прошло гладко.
Схема 3. Третья версия:
Сохраняем в лог запрос с портала
Пробуем получить ранее сохраненные о портале данные
Есть ли запись о портале?
фиксируем факт установки/обновления в логах
Выводим страницу пользователю
подключаем js-библиотеку портала
Логика установки приложения теперь не вызывает вопросов. Но вызывает вопрос логирование. В коде указано, что мы логируем сам запрос с портала. Вот он:
здесь (не удивляйтесь только):
А я их, вроде как, рекомендовал шифровать при сохранении в базу. Если так рассудить, то нам и логировать-то его не нужно, поскольку все, что в нем содержится нам итак будет известно, разве что язык. В логи всегда попадет либо факт установки, либо ошибки при установке. Но в действительности запрос может приходить и не с портала вовсе, а из хакерского приложения. В таком случае зачем его вообще логировать? И по этом размышлении становится понятно, что непонятно, как приложение вообще защищено от левых запросов. В результате наш список действий дополняется еще одним пунктом:
17. Проверка валидности запроса извне.
В данном случае (при установке приложения) мы так и так делаем запрос на портал для получения дополнительной информации, вызывая app.info с переданным нам access_token (AUTH_ID). Какие возникают варианты ответа:
- пустой
- с ошибкой
- с данными о приложении (и портале)
С ошибкой. Причиной этого варианта, скорее всего, будет также коробка. Например, она возвратит нам 404 Not Found страницу, т.е. целый лопух html, или скорее страницу с формой авторизации. Это будет означать, что в коробке не установлен модуль rest. Об этом также следует сообщить пользователю. Другая причина - ошибка в работе rest-а при неверно накатанном обновлении портала, ну. тут, вероятно, следует показать саму ошибку, поскольку вариации непредсказуемы.
Последний вариант - успешный, так что возвратимся к логированию. Запросы можно слать миллиардами и забить всю нашу таблицу логов, поэтому логировать стоит, по всей видимости, только валидные запросы, в которых rest все-таки вернул какой-то ответ или была ошибка ssl-сертификата. В логи необходимо из запроса, пожалуй, писать данные по тем ключам, которые не содержат конфиденциальной информации. Т.е. значения токенов писать точно не стоит.
Теперь перейдем к сохранению данных в базу. По идее, когда запрос определен как валидный, и app.info вернул информацию о портале, переданные LANG, member_id должны содержать корректную информацию. Однако, в этом вопросе лучше придерживаться параноидального метода, который гласит: не верь присланным данным. Поэтому все, что сохраняется в базу должно быть предварительно обезврежено. Так язык всегда состоит из двух букв и не содержит ничего кроме букв, member_id состоит лишь из букв и цифр и т.д. Перед сохранением нужно удалить все неподходящие символы регуляркой, обезопасив приложение от атак. Еще лучше, когда эту работу берет на себя фреймворк, который вы используете. Так, например, БУС (Битрикс Управление Сайтом) всегда проверяет получаемые из запроса данные. И, если ваше приложение строится на подобном фреймворке, получать данные следует не прямым способом, предусмотренным самим языком программирования, а через вызов соответствующего метода фреймворка (напр., в БУС объект request имеет методы get() - для получения данных, переданных как GET, так и POST методом, и getPost() - для получения исключительно "постовых" данных).
На этом с установкой, пожалуй, все. Но на примере подписки хотелось бы чуть коснуться rest-запросов портала. REST Битрикс24 довольно неплохой. Да, порою требуемые для передачи параметры удивляют. Например, где-то регистр ключей имеет значение, а где-то не имеет. А есть еще и запросы, в которых все данные имеют соответствующие ключи, но, тем не менее, переданы должны быть в нужной очередности. Однако, в батч-запросах можно, формируя последовательность команд, из одной обращаться к данным, полученным из предыдущей. Это круто. Рассмотрим удаление подписки на события, оставшейся от прежней версии приложения. Для этого нам нужно получить наши старые обработчики, делаем запрос (команда, параметры):
получаем в результате что-то вроде:
Портал возвращает все прежние подписки нашего приложения. При переходе с версии на версию у нас меняется УРЛ, теперь он должен вместо v1 должен содержать v2.
if array res.result
foreach res.result as item
if not empty batch
if not empty res.result_errors
Как я уже сказал, я не вникаю в архитектуру приложения, и имена вызываемых функций здесь служат лишь для указания, какое действие выполняется в данный момент и какие данные оно использует. В этом коде мы точно уверены, что наши подписки никогда не превысят ограничения батч-запросов в 50 команд, но там, где это неочевидно, следует вставлять проверку. При этом нужно учитывать, что размер команд вместе с их параметрами (представьте обновление 5000 компаний или счетов за один раз) может составлять в байтах довольно большое число, так что не стоит собирать все команды в один массив, потом резать его по 50 штук, и затем отправлять эти нарезки на выполнение. Fatal error, cannot allocate memory могут быть запросто получены. Алгоритм обработки в данном случае должен быть иным. Пример в псевдокоде:
while row = getSomething()
if count batch equal 50
Иными словами, внутри цикла мы все время проверяем не достигли ли мы максимума в 50 запросов. Если да, то тут же их выполняем и очищаем наш массив batch - т.е. отсчет начат заново. По окончании цикла вновь проверяем batch, ведь последний проход мог закончится, так и не достигнув кол-ва 50. Если после цикла массив не пустой, то это необработанный остаток, выполняем его.
Ну, теперь и с установкой, и с запросами точно все.
Продолжение следует.
Доставка полезной информации от экспертов по Битрикс24!
Подпишитесь, и раз в неделю у вас на почте будет подборка полезных советов и обзоров про Битрикс24
Читайте также: