Этот аккаунт не существует или удалён
ВКонтакте
Следующий шаг мы проходили в тесном дуэте с разработчиками ВКонтакте. Нам удалось выстроить оптимальную схему работы с сервисом — теперь мы делали за пользователей кучу технических действий для подключения. Теперь этот API ВКонтакте могут использовать и другие сервисы. Как теперь выглядит подключение «Открытых линий» для обычного пользователя:
- Авторизуетесь в VK.
- В разделе подключения выбираете нужную группу.
- Подтверждаете.
Интеграция с Instagram — одна из самых популярных среди наших клиентов. Но из-за скандала с распространением личных данных Instagram сильно урезал возможности API. Нам приходится самостоятельно раз в 15 минут «опрашивать» его и определять новые сообщения. Причём API разрешает получать не сами сообщения, а только комментарии к постам. Также есть ограничение на количество ответов в час. Внешние системы — это живые организмы, в которых постоянно что-то меняется. В API соцсетей и мессенджеров вносятся какие-то изменения, часто возникают какие-то ошибки с «той» стороны. Пример. Во ВКонтакте сломалась кодировка в названиях товаров, эту проблему они решали в течение года. Instagram просто никого не предупредил об отключении ряда функций API — мы постфактум узнали о том, что какие-то возможности перестали работать. Нам пришлось искать решения в авральном режиме. После успешной интеграции соцсети или мессенджера расслабляться нельзя. Нам постоянно приходится отслеживать корректность обработки входящих сообщений.
Сервер коннекторов
В основе архитектуры «Открытых линий» лежит сервер коннекторов. Это единая точка входа в схеме обмена сообщениями между внутренним мессенджером «Битрикс24» и внешними мессенджерами и соцсетями. В «Открытых линиях» существует три вида входящих каналов:
- Внешние, которые работают через сервер очередей.
- Онлайн-чат, который работает на клиентском портале. Код виджета мы берём с портала клиента. И речи о недоставке сообщений в данном случае не идёт — если портал «лежит», виджет чата просто не будет отображаться.
- Нетворк — канал, который позволяет создавать «Открытую линию» и находить среди других порталов «Битрикс24», в том числе коробочных. Это особенно актуально для наших партнеров, которые хотят организовывать чаты поддержки для своих компаний-клиентов. Такие чаты работают через бот-платформы «Битрикс24» и не используют сервер коннекторов — все операции происходят внутри нашей платформы.
Во всех «Открытых линиях» и коннекторах подключения, есть важный нюанс. Предполагается, что первым всегда проявляет инициативу клиент. Мы можем только отвечать на сообщения пользователей. Но не писать им первыми. Сервер находится в облаке и доступен 24/7. Он принимает сообщения пользователей без праздников и выходных. У клиента с коробочной версией «Битрикс24» портал может быть временно недоступен: упал сервер или проблемы с интернетом. В таких случаях сообщения от пользователей могли теряться. Эту проблему решает облачный сервер коннекторов. Во-первых, он маршрутизирует сообщения непосредственно порталам-адресатам. Если какой-то портал недоступен, сервер коннекторов в течение суток накапливает сообщения для этого портала. И пытается доставить их на портал. Мы посчитали — 24 часов достаточно, чтобы исправить любые неполадки и перезапустить портал коробочной версии. Мы сделали сильный акцент на том, что порядок сообщений не поменяется. Весь контент будет доставлен именно в том порядке, в котором его писали. Пользовательские сообщения, пусть и с задержкой, но будут доставлены. У всех внешних систем свои форматы сообщений, со своими наборами данных. Где-то можно обмениваться эмодзи, картинками и прочими файлами. А где-то доступен лишь текст с очень ограниченным набором возможностей. Сервер коннекторов:
- Приводит все входящие сообщения к универсальному формату, который понимают порталы.
- Шифрует данные и подписывает их лицензионным ключом.
- Передаёт их на порталы.
Шифрование нужно не только для защиты самой переписки, но и для подтверждения достоверности сторон. После унификации формата сообщения попадают в очередь. Из нее они разлетаются по адресатам. Соцсети могут генерировать сообщения с внушительной частотой, но не все клиентские порталы могут похвастаться мощным «железом». На той же машине могут параллельно выполняться другие задачи. И если сообщения будут идти «валом» — есть вероятность дублирования сессий. Чтобы этого не происходило, сообщения передаются каждому порталу в один поток, пакетами и с небольшой задержкой. Сейчас очередь крутится на сервере коннекторов, но у нас уже готов отдельный масштабируемый сервер. Он поддерживает очереди разных типов:
- Параллельная в несколько потоков.
- Последовательная в один поток.
Доставка может быть:
- Гарантированная. Много попыток.
- Негарантированная. Одна попытка.
В скором времени мы переведём на этот сервер коннекторы социальных сетей, бот-платформ и мессенджеров. Ура!Используемые источники:
- https://chats.viber.com/bitrix24/ru
- https://habr.com/post/414797/