Интеграция 3CX с amoCRM

image

Введение

3CX предлагает интеграцию с популярной CRM системой amoCRM непосредственно “из коробки” и совершенно бесплатно! Вам не нужно использовать платные решения от сторонних разработчиков. Официальная CRM интеграция всегда соответствует последней версии API 3CX и периодически тестируется для корректной работы с amoCRM.

Интеграция позволяет открыть карточку контакта или компании при входящем вызове, либо создать новый контакт в интерфейсе amoCRM. Также ведется учет вызовов в amoCRM, позволяя добавить заметки к каждому разговору с клиентом.

Для успешной интеграции вам потребуются:

  • 3CX v15 PRO (Standart не поддерживается) с последними обновлениями
  • Установленный на ПК пользователя клиент 3CX Client for Windows
  • Учетная запись amoCRM в домене amocrm.com (не .ru)

Читать дальше →
Интеграция 3CX с amoCRM
Source: habrahabr

Еще один велосипед для борьбы с callback hell в JavaScript



Считается, что мир JavaScript бурно развивается: регулярно выходят новые стандарты языка, появляются новые синтаксические фишки, а разработчики моментально все это адаптируют и переписывают свои фреймворки, библиотеки и прочие проекты с тем, чтобы все это использовалось. Сейчас, например, если вы всё ещё пишете в коде var, а не const или let, то это уже вроде как моветон. А уж если функция описана не через стрелочный синтаксис, то вообще позор…


Однако, все эти const-ы, let-ы, class-ы и большинство других нововведений не более чем косметика, которая хоть и делает код красивее, но действительно острых проблем не решает.
Читать дальше →
Еще один велосипед для борьбы с callback hell в JavaScript
Source: habrahabr

Особенности разработки Telegram бота с Google API в Docker

Коротко о боте: получает список YouTube-каналов пользователя и уведомляет о новых видео с возможностью напомнить о нем позже.


В статье расскажу об особенностях написания этого бота и взаимодействия с Google API. Я люблю краткость, поэтому в статье будет мало «воды».

На какие вопросы ответит статья:

  • Где взять внешний адрес сайта для Webhook
  • Где взять HTTPS-сертификат как его использовать, чтобы Telegram ему доверял
  • Как передавать данные и обрабатывать нажатия на Inline-кнопки
  • Как получить вечный OAuth токен для Google API
  • Как передать данные пользователя через OAuth callback url
  • Как получить бесплатный домен 3 уровня

Стэк:

  1. Back-end: Node.js + Express.js
  2. БД: Mongo.js + mongoose
  3. Пакетный менеджер: Yarn (он действительно быстрый)
  4. Telegram-бот фреймворк: Telegraf
  5. Продакшн: Docker + Docker Compose + Vscale.io

Читать дальше →
Особенности разработки Telegram бота с Google API в Docker
Source: habrahabr

Из АЭС в дата-центры: новая тенденция в мире телекоммуникаций


С каждым днем объем сгенерированной человеком информации увеличивается. Все эти данные нужно где-то хранить и как-то обрабатывать, особенно, если речь идет о цифровых данных. Соответственно, требуется больше-дата-центров, как говорится, хороших и разных. Но подходящих мест для строительства дата-центра, в случае, если нужен действительно мощный ЦОД, не так много.


Существует ряд важных условий при выборе такого места. Это определенный климат, наличие энергетической и сетевой инфраструктуры, относительная близость населенных пунктов и т.п. Во многих регионах, где все эти условия можно выполнить, возникает одна проблема — стоимость аренды или покупки земли, а также стоимость строительства. Для того, чтобы избежать значительных затрат, разработчики предлагают самые разные варианты, вплоть до создания плавучих дата-центров (что вполне реально и реализуется сейчас). Есть и более необычные предложения — например, преобразовать заброшенную АЭС в ЦОД.
Читать дальше →
Из АЭС в дата-центры: новая тенденция в мире телекоммуникаций
Source: habrahabr

Классы типов в Scala (с небольшим обзором библиотеки cats)

При слове «полиморфизм» сразу вспоминается объектно-ориентированное программирование, в котором полиморфизм является одним из столпов (Полиморфизм для начинающих). (Причём, по-видимому, более важным, чем другие столпы.) Оказывается, что можно достичь сходного эффекта и другим путём, который в ряде случаев оказывается более предпочтительным. Например, с помощью классов типов можно приписать новые возможности уже существующим типам, у которых нельзя изменить предка, или, используя тип данных с несовместимыми классами, «решить» проблему множественного наследования.

Читать дальше →
Классы типов в Scala (с небольшим обзором библиотеки cats)
Source: habrahabr

О сравнении объектов по значению — 5: Structure Equality Problematic

В предыдущей публикации мы вывели наиболее полный и корректный способ реализации сравнения по значению объектов — экземпляров классов (являющихся ссылочными типами — Reference Types) для платформы .NET.

Каким образом нужно модифицировать предложенный способ для корректной реализации сравнения по значению объектов — экземпляров структур (являющихся «типами по значению» — Value Types)?

Экземпляры структур, в силу своей природы, всегда сравниваются по значению.

Для предопределенных типов, таких как Boolean или Int32, под сравнением по значению понимается сравнение непосредственно значений экземпляров структур.

Если структура определена разработчиком — пользователем платформы, то сравнение по умолчанию автоматически реализуется как сравнение значений полей экземпляров структур.

(Подробности см. в описании метода ValueType.Equals(Object) и операторов == и !=)

Также при этом автоматически определенным образом реализуется метод ValueType.GetHashCode(), перекрывающий метод Object.GetHashCode().

И в этом случае есть несколько существенных подводных камней:

Читать дальше →
О сравнении объектов по значению — 5: Structure Equality Problematic
Source: habrahabr

Настройка SPICE-консоли виртуальных машин в OpenStack

Эта статья будет интересна администраторам облачной платформы OpenStack. Речь пойдет об отображении консоли виртуальных машин в дашборде. Дело в том, что по умолчанию в OpenStack используется noVNC консоль, которая с приемлемой скоростью работает в рамках локальной сети, но плохо подходит для работы с виртуалками, запущенными в удаленном датацентре. В этом случае отзывчивость консоли, мягко говоря, удручает.

В данном статье речь пойдет о том, как настроить в своей инсталляции Опенстека гораздо более быструю SPICE-консоль.
Читать дальше →
Настройка SPICE-консоли виртуальных машин в OpenStack
Source: habrahabr

[Перевод] Малоизвестные Git-команды


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
[Перевод] Малоизвестные Git-команды
Source: habrahabr

Пошаговая инструкция: сборка JDK9 из исходников на Windows 10

В последнее время со сборкой JDK в Windows всё стало хорошо и приятно, поэтому поделюсь радостью и распишу, как это делается.
Читать дальше →
Пошаговая инструкция: сборка JDK9 из исходников на Windows 10
Source: habrahabr

5 языков программирования со светлым (возможно) будущим


Каждый раз начиная разговор о популярных языках программирования можно быть уверенным, что холивар неизбежен. Одним нравится С++, другим Python, третьим Rust. Как говорится, на вкус и цвет фломастеры разные. Тем не менее, попробуем и мы покопаться в апельсинах. Читать дальше →
5 языков программирования со светлым (возможно) будущим
Source: habrahabr