По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Почитайте предыдущую статью из цикла про установление и прекращение соединения в TCP. UDP предоставляет приложениям сервис для обмена сообщениями. В отличие от TCP, UDP не требует установления соединения и не обеспечивает надежности, работы с окнами, переупорядочивания полученных данных и сегментации больших фрагментов данных на нужный размер для передачи. Однако UDP предоставляет некоторые функции TCP, такие как передача данных и мультиплексирование с использованием номеров портов, и делает это с меньшим объемом служебных данных и меньшими затратами на обработку, чем TCP. Передача данных UDP отличается от передачи данных TCP тем, что не выполняется переупорядочевание или восстановление. Приложения, использующие UDP, толерантны к потерянным данным, или у них есть какой-то прикладной механизм для восстановления потерянных данных. Например, VoIP использует UDP, потому что, если голосовой пакет потерян, к тому времени, когда потеря может быть замечена и пакет будет повторно передан, произойдет слишком большая задержка, и голос будет неразборчивым. Кроме того, запросы DNS используют UDP, потому что пользователь будет повторять операцию, если разрешение DNS не удается. В качестве другого примера, сетевая файловая система (NFS), приложение удаленной файловой системы, выполняет восстановление с помощью кода уровня приложения, поэтому функции UDP приемлемы для NFS. На рисунке 10 показан формат заголовка UDP. Самое главное, обратите внимание, что заголовок включает поля порта источника и назначения для той же цели, что и TCP. Однако UDP имеет только 8 байтов по сравнению с 20-байтовым заголовком TCP, показанным на рисунке 1-1. UDP требует более короткого заголовка, чем TCP, просто потому, что у UDP меньше работы. Приложения TCP / IP Вся цель построения корпоративной сети или подключения небольшой домашней или офисной сети к Интернету состоит в использовании таких приложений, как просмотр веб-страниц, обмен текстовыми сообщениями, электронная почта, загрузка файлов, голос и видео. В этом подразделе исследуется одно конкретное приложение - просмотр веб-страниц с использованием протокола передачи гипертекста (HTTP). Всемирная паутина (WWW) состоит из всех подключенных к Интернету веб-серверов в мире, а также всех подключенных к Интернету хостов с веб-браузерами. Веб-серверы, которые состоят из программного обеспечения веб-сервера, запущенного на компьютере, хранят информацию (в виде веб-страниц), которая может быть полезна для разных людей. Веб-браузер, представляющий собой программное обеспечение, установленное на компьютере конечного пользователя, предоставляет средства для подключения к веб-серверу и отображения веб-страниц, хранящихся на веб-сервере. Хотя большинство людей используют термин "веб-браузер" или просто "браузер", веб-браузеры также называются веб-клиентами, потому что они получают услугу с веб-сервера. Чтобы этот процесс работал, необходимо выполнить несколько определенных функций прикладного уровня. Пользователь должен каким-то образом идентифицировать сервер, конкретную веб-страницу и протокол, используемый для получения данных с сервера. Клиент должен найти IP-адрес сервера на основе имени сервера, обычно используя DNS. Клиент должен запросить веб-страницу, которая на самом деле состоит из нескольких отдельных файлов, а сервер должен отправить файлы в веб-браузер. Наконец, для приложений электронной коммерции (электронной коммерции) передача данных, особенно конфиденциальных финансовых данных, должна быть безопасной. В следующих подразделах рассматривается каждая из этих функций. Унифицированные идентификаторы ресурсов Чтобы браузер отображал веб-страницу, он должен идентифицировать сервер, на котором находится эта веб-страница, а также другую информацию, которая идентифицирует конкретную веб-страницу. Большинство веб-серверов имеют множество веб-страниц. Например, если вы используете веб-браузер для просмотра www.cisco.com и щелкаете по этой веб-странице, вы увидите другую веб-страницу. Щелкните еще раз, и вы увидите другую веб-страницу. В каждом случае щелчок идентифицирует IP-адрес сервера, а также конкретную веб-страницу, при этом детали в основном скрыты от вас. (Эти интерактивные элементы на веб-странице, которые, в свою очередь, переводят вас на другую веб-страницу, называются ссылками.) Пользователь браузера может идентифицировать веб-страницу, когда вы щелкаете что-либо на веб-странице или когда вы вводите унифицированный идентификатор ресурса (URI) в адресную область браузера. Оба варианта - щелчок по ссылке и ввод URI - относятся к URI, потому что, когда вы щелкаете ссылку на веб-странице, эта ссылка фактически ссылается на URI. Большинство браузеров поддерживают какой-либо способ просмотра скрытого URI, на который ссылается ссылка. В некоторых браузерах наведите указатель мыши на ссылку, щелкните правой кнопкой мыши и выберите "Свойства". Во всплывающем окне должен отображаться URI, на который будет направлен браузер, если вы нажмете эту ссылку. В просторечии многие люди используют термины веб-адрес или аналогичные связанные термины Universal Resource Locator (или Uniform Resource Locator [URL]) вместо URI, но URI действительно является правильным формальным термином. Фактически, URL-адрес используется чаще, чем URI, уже много лет. Однако IETF (группа, определяющая TCP / IP) вместе с консорциумом W3C (W3.org, консорциум, разрабатывающий веб-стандарты) предприняли согласованные усилия по стандартизации использования URI в качестве общего термина. С практической точки зрения, URI, используемые для подключения к веб-серверу, включают три ключевых компонента, как показано на рисунке 11. На рисунке показаны формальные имена полей URI. Что еще более важно для понимания, обратите внимание, что текст перед :// определяет протокол, используемый для подключения к серверу, текст между // и / идентифицирует сервер по имени, а текст после / идентифицирует веб-страницу. В этом случае используется протокол передачи гипертекста (HTTP), имя хоста - www.certskills.com, а имя веб-страницы - blog. Поиск веб-сервера с помощью DNS Хост может использовать DNS для обнаружения IP-адреса, соответствующего определенному имени хоста. В URI обычно указывается имя сервера - имя, которое можно использовать для динамического изучения IP-адреса, используемого этим же сервером. Веб-браузер не может отправить IP-пакет на имя назначения, но он может отправить пакет на IP-адрес назначения. Итак, прежде чем браузер сможет отправить пакет на веб-сервер, браузеру обычно необходимо преобразовать имя внутри URI в соответствующий IP-адрес этого имени. Чтобы собрать воедино несколько концепций, на рисунке 12 показан процесс DNS, инициированный веб-браузером, а также некоторая другая связанная информация. С базовой точки зрения пользователь вводит URI (в данном случае http://www.exempel.com/go/learningnetwork), преобразует имя www.exempel.com в правильный IP-адрес и начинает отправлять пакеты на веб сервер. Шаги, показанные на рисунке, следующие: Пользователь вводит URI http://www.exempel.com/go/learningnetwork в адресную область браузера. Клиент отправляет DNS-запрос на DNS-сервер. Обычно клиент узнает IP-адрес DNS-сервера через DHCP. Обратите внимание, что запрос DNS использует заголовок UDP с портом назначения 53-го известного порта DNS (см. таблицу 2 ранее в этой лекции, где приведен список популярных хорошо известных портов). DNS-сервер отправляет ответ, в котором IP-адрес 198.133.219.25 указан как IP-адрес www.exemple.com. Также обратите внимание, что ответ показывает IP-адрес назначения 64.100.1.1, IP-адрес клиента. Он также показывает заголовок UDP с портом источника 53; исходный порт - 53, потому что данные получены или отправлены DNS-сервером. Клиент начинает процесс установления нового TCP-соединения с веб-сервером. Обратите внимание, что IP-адрес назначения - это только что изученный IP-адрес веб-сервера. Пакет включает заголовок TCP, потому что HTTP использует TCP. Также обратите внимание, что TCP-порт назначения - 80, хорошо известный порт для HTTP. Наконец, отображается бит SYN, как напоминание о том, что процесс установления TCP-соединения начинается с сегмента TCP с включенным битом SYN (двоичная 1). Пример на рисунке 12 показывает, что происходит, когда клиентский хост не знает IP-адрес, связанный с именем хоста, но предприятие знает адрес. Однако хосты могут кэшировать результаты DNS-запросов, так что какое-то время клиенту не нужно запрашивать DNS для разрешения имени. Также DNS-сервер может кэшировать результаты предыдущих DNS-запросов; например, корпоративный DNS-сервер на рисунке 12 обычно не имеет настроенной информации об именах хостов в доменах за пределами этого предприятия, поэтому в этом примере DNS-сервер кэшировал адрес, связанный с именем хоста www.example.com. Когда локальный DNS не знает адрес, связанный с именем хоста, ему необходимо обратиться за помощью. На рисунке 13 показан пример с тем же клиентом, что и на рисунке 12. В этом случае корпоративный DNS действует как рекурсивный DNS-сервер, отправляя повторяющиеся DNS-сообщения, чтобы идентифицировать авторитетный DNS-сервер. Шаги, показанные на рисунке, следующие: Клиент отправляет DNS-запрос для www.exemple.com на известный ему DNS-сервер, который является корпоративным DNS-сервером. (Рекурсивный) корпоративный DNS-сервер еще не знает ответа, но он не отклоняет DNS-запрос клиента. Вместо этого он следует повторяющемуся (рекурсивному) процессу (показанному как шаги 2, 3 и 4), начиная с DNS-запроса, отправленного на корневой DNS-сервер. Корень также не предоставляет адрес, но он предоставляет IP-адрес другого DNS-сервера, ответственного за домен верхнего уровня .com. Рекурсивный корпоративный DNS-сервер отправляет следующий DNS-запрос DNS-серверу, полученному на предыдущем шаге, - на этот раз DNS-серверу TLD для домена .com. Этот DNS также не знает адреса, но знает DNS-сервер, который должен быть официальным DNS-сервером для домена exemple.com, поэтому он предоставляет адрес этого DNS-сервера. Корпоративный DNS отправляет другой DNS-запрос DNS-серверу, адрес которого был получен на предыдущем шаге, снова запрашивая разрешение имени www.exeple.com. Этот DNS-сервер, официальный сервер exemple.com, предоставляет адрес. Корпоративный DNS-сервер возвращает DNS-ответ клиенту, предоставляя IP-адрес, запрошенный на шаге 1. Передача файлов по HTTP После того, как веб-клиент (браузер) создал TCP-соединение с веб-сервером, клиент может начать запрашивать веб-страницу с сервера. Чаще всего для передачи веб-страницы используется протокол HTTP. Протокол прикладного уровня HTTP, определенный в RFC 7230, определяет, как файлы могут передаваться между двумя компьютерами. HTTP был специально создан для передачи файлов между веб-серверами и веб-клиентами. HTTP определяет несколько команд и ответов, из которых наиболее часто используется запрос HTTP GET. Чтобы получить файл с веб-сервера, клиент отправляет на сервер HTTP-запрос GET с указанием имени файла. Если сервер решает отправить файл, он отправляет ответ HTTP GET с кодом возврата 200 (что означает ОК) вместе с содержимым файла. Для HTTP-запросов существует множество кодов возврата. Например, если на сервере нет запрошенного файла, он выдает код возврата 404, что означает "файл не найден". Большинство веб-браузеров не показывают конкретные числовые коды возврата HTTP, вместо этого отображая ответ, такой как "страница не найдена", в ответ на получение кода возврата 404. Веб-страницы обычно состоят из нескольких файлов, называемых объектами. Большинство веб-страниц содержат текст, а также несколько графических изображений, анимированную рекламу и, возможно, видео и звук. Каждый из этих компонентов хранится как отдельный объект (файл) на веб-сервере. Чтобы получить их все, веб-браузер получает первый файл. Этот файл может (и обычно делает) включать ссылки на другие URI, поэтому браузер затем также запрашивает другие объекты. На рисунке 14 показана общая идея, когда браузер получает первый файл, а затем два других. В этом случае, после того, как веб-браузер получает первый файл - тот, который в URI называется "/go/ccna", браузер читает и интерпретирует этот файл. Помимо частей веб-страницы, файл ссылается на два других файла, поэтому браузер выдает два дополнительных запроса HTTP GET. Обратите внимание, что, даже если это не показано на рисунке, все эти команды проходят через одно (или, возможно, несколько) TCP-соединение между клиентом и сервером. Это означает, что TCP обеспечит исправление ошибок, гарантируя доставку данных. Как принимающий хост определяет правильное принимающее приложение Эта лекция завершается обсуждением процесса, с помощью которого хост при получении любого сообщения по любой сети может решить, какая из множества своих прикладных программ должна обрабатывать полученные данные. В качестве примера рассмотрим хост A, показанный слева на рисунке 15. На хосте открыто три разных окна веб-браузера, каждое из которых использует уникальный TCP-порт. На хосте A также открыт почтовый клиент и окно чата, оба из которых используют TCP. И электронная почта, и чат-приложения используют уникальный номер TCP-порта на хосте A, как показано на рисунке. В этой части лекции показано несколько примеров того, как протоколы транспортного уровня используют поле номера порта назначения в заголовке TCP или UDP для идентификации принимающего приложения. Например, если значение TCP-порта назначения на рисунке 15 равно 49124, хост A будет знать, что данные предназначены для первого из трех окон веб-браузера. Прежде чем принимающий хост сможет проверить заголовок TCP или UDP и найти поле порта назначения, он должен сначала обработать внешние заголовки в сообщении. Если входящее сообщение представляет собой кадр Ethernet, который инкапсулирует пакет IPv4, заголовки выглядят так, как показано на рисунке 16. Принимающему узлу необходимо просмотреть несколько полей, по одному на заголовок, чтобы идентифицировать следующий заголовок или поле в полученном сообщении. Например, хост A использует сетевой адаптер Ethernet для подключения к сети, поэтому полученное сообщение представляет собой кадр Ethernet. Поле типа Ethernet определяет тип заголовка, который следует за заголовком Ethernet - в данном случае со значением шестнадцатеричного значения 0800, заголовком IPv4. Заголовок IPv4 имеет аналогичное поле, называемое полем протокола IP. Поле протокола IPv4 имеет стандартный список значений, которые идентифицируют следующий заголовок, с десятичным числом 6, используемым для TCP, и десятичным числом 17, используемым для UDP. В этом случае значение 6 определяет заголовок TCP, следующий за заголовком IPv4. Как только принимающий хост понимает, что заголовок TCP существует, он может обработать поле порта назначения, чтобы определить, какой процесс локального приложения должен получить данные. Теперь вас ждет материал про списки управления доступом IPv4
img
В инфраструктуре любого предприятия есть очень много требующих внимания деталей. Например, места для серверов, среды разработки, безопасность, стеки программного обеспечения, обновления программного обеспечения, обслуживание оборудования, что все затраты на обслуживание платформы, как правило, огромны. Компаниям, которые разрабатывают и развертывают приложения, необходимо выделить много ресурсов для поддержания работы платформы - ресурсов, которые в противном случае можно было бы использовать для разработки программного обеспечения. Поэтому возникла необходимость в облачных платформах. Эти решения используют модель облачных вычислений, чтобы предоставить разработчикам все необходимое для выполнения их работы - от сред разработки на хостах и инструментов баз данных до полных возможностей управления приложениями. Разработчики, работающие в облачной платформе, имеют доступ ко всем ресурсам, необходимым для создания, развертывания и запуска программных приложений. Для больших компаний облачная платформа может обеспечить масштабируемую базу для новых приложений, которые необходимо предоставлять в короткие сроки. При использовании модели "плати по мере роста" нет необходимости в долгосрочных инвестициях в локальные платформы. Почему "опенсорс"? Теперь, когда мы заявили о преимуществах облачных вычислений перед традиционными платформами, следующий вопрос заключается в том, почему облачная платформа с открытым исходным кодом является лучшим вариантом, чем запатентованная облачные решения. Самый очевидный ответ - стоимость: лицензии на проприетарные решения всегда предполагают более затратные вложения. Еще одним важным преимуществом является гибкость и свобода выбора из самых разнообразных структур, облаков и услуг. Платные платформы, с другой стороны, могут привязать вас к инструментам и услугам, которыми они владеют. В обмен они предлагают определенные преимущества, такие как соблюдение соглашения об уровне обслуживания (SLA) и освобождение от препятствий, таких как тестирование и интеграция, но эти преимущества едва ли перевешивают преимущества открытости. Ниже представлен список облачных платформ с открытым исходным кодом для предприятий, которые сегодня пользуются популярностью на рынке. Cloud Foundry Созданный компанией VMWare затем приобретённый компанией Pivotal Software, Cloud Foundry отличается тем, что он доступен как автономное приложение с открытым исходным кодом, что делает его независимым от поставщика. Его можно развернуть в VMware vSphere или других облачных инфраструктурах, таких как HP Helion, Azure или AWS. Или даже можно самостоятельно разместить его на сервере OpenStack. Благодаря использованию пакетов сборки Cloud Foundry упрощает поддержку среды выполнения и инфраструктуры. При каждой компиляции приложения Cloud Foundry Application Runtime выбирает наиболее удобный для него пакет сборки. Затем buildpack занимается компиляцией приложения и подготовкой его к запуску. Cloud Foundry разработана для быстрой разработки и развертывания приложений с помощью высокомасштабируемой архитектуры и удобных для DevOps рабочих процессов. Эта технология наряду с другим языками так же, поддерживает языки, как Python, Ruby, PHP, Java и Go. Тем не менее, чтобы правильно вписаться в Cloud Foundry, рекомендуется, чтобы ваш проект соответствовал 12-факторному стандарту приложений - методологии, специально разработанной для разработки оптимальных приложений SaaS. WSO2 Если часто работаете над сервис-ориентированной архитектурой (SOA), то скорее всего у вас есть большое количество внутренних и внешних API. Это тот сценарий, когда WSO2 в большей степени проявляет себя благодаря своему API-менеджеру, способному обрабатывать весь цикл API от начала до конца. WSO2 обеспечивает соответствие большинству требований, которые могут быть выдвинуты клиентами, включая управление версиями, документацию API и разгрузку SSL. WSO2 использует концепцию магазина, в которой разработчики могут находить, пробовать и оценивать API. Развертывание является простым и простым, предоставляя множество опций для управления потоком API. Он также предоставляет функцию автоматического восстановления в случае приостановки работы конечной точки. Все эти качества направлены на сокращение времени вывода на рынок, упрощение управления затратами и, в целом, повышение гибкости бизнес-процессов. Большим плюсом WSO2 API Manager является его простая интеграция с WSO2 Identity Server - решением IAM (Identity and access manager), управляемым API. Эта интеграция предлагает удобную платформу для аутентификации в облачных средах. Cloudify Cloudify - это фреймворк оркестрации, предназначенная для моделирования приложений и услуг при автоматизации их жизненных циклов. Фреймворк включает в себя возможность развертывания в любой облачной среде или центре обработки данных. Он также предлагает инструменты для мониторинга всех аспектов развернутых приложений, определения условий отказа и их решения вручную или автоматически. Одной из наиболее заметных особенностей Cloudify является моделирование проекта на основе TOSCA. Это нововведение позволяет разработчикам использовать YAML для создания чертежей топологий приложения. YAML - считываемый человеком язык сериализации данных, используемый для написания определений на основе спецификации TOSCA, что даёт разработчикам стандартизированный способ описания взаимосвязей между приложениями, системами и компонентами облачной инфраструктуры. Облачная оркестрация Cloudify обеспечивает прочную базу для управления ИТ и обеспечения безопасности, позволяя пользователям применять ограничения доступа с различными ролями и уровнями разрешений. Для общения с внешними сервисами, такими как контейнеры Kubernetes, облачные сервисы (AWS, Azure, vSphere, OpenStack) и инструменты управления конфигурацией (Pucket, Anulable, Chef), Cloudify использует свой набор официальных плагинов, в то время как многие другие сервисы работают с существующими плагинами. OpenShift OpenShift - платформа на базе Kubernetes, с гибким и очень быстрым установщиком и поддержкой большого числа API, что позволяет разработчикам расширять платформу, исходя из своих потребностей. Он построен с учетом безопасности, что иллюстрируется примером: контейнеры должны запускаться от имени обычных пользователей, и когда это не так, OpenShift требует явного переопределения для запуска контейнера. Использование Kubernetes требует значительного количества серверов, и для его освоения требуется определенное обучение. Именно поэтому эта платформа не подходит для небольших проектов, если в ближайшем будущем она не превратится в более масштабный проект. Пользователи OpenShift подчеркивают возможность его быстрой установки и настройки, а также простоту обслуживания модулей и надстроек. Еще один плюс - факт наличия собственного Git репозитория. В противовес этому имеется некая сложность в чтении и интерпретации логов. В частности, когда происходит сбой при загрузке проекта, трудно понять, где проблема. Tsuru Rede Globo, вторая по величине коммерческая телесеть во всем мире, запустила Tsuru как продукт на базе Docker PaaS (платформа как сервис), способный организовывать и запускать приложения в производственной среде. Это платформа с открытым исходным кодом, поддерживающая сайты с миллионами пользователей, разработанная компанией Globo.com. Пользователи Tsuru утверждают, что это существенно улучшает время вывода на рынок, не отказываясь от простоты, высокой доступности, безопасности или стабильности. Его можно запускать на различных облачных инфраструктурах, будь то публичная или частная, при условии, что они поддерживаются Docker-машинами. Также он поддерживает практически все известные язык программирования, что даёт разработчикам свободу выбора в соответствии с их предпочтениями. С помощью Tsuru можно использовать различные хранилища данных, включая базы данных SQL или NoSQL, или альтернативы в памяти, такие как Memcached или Redis. Чтобы управлять приложением, вы можете выбрать один из своих предпочтений и подключить его к приложению. Чтобы управлять приложением, вы можете выбрать между использованием командной строки или веб-интерфейсом, а затем развернуть через Git. Инфраструктура Tsuru займется всеми рутинными делами. Stackato Stackato - это полиглотный продукт PaaS, основанный на Cloud Foundry и Docker, который работает поверх облачной инфраструктуры и служит платформой для запуска приложений. Пользователи Stackato говорят, что он предоставляет гибкую и надежную платформу приложений, которая помогает повысить производительность как администраторов облачных вычислений, так и разработчиков. Он хорошо подходит для развертывания корпоративных облачных сред, сочетая гибкость непосредственного доступа к виртуальной машине в облачной инфраструктуре с автоматизированной конфигурацией, обеспечиваемой полнофункциональной системой PaaS. Среди поддерживаемых облачных инфраструктур можно показать HP Cloud Services, Citrix XenServer, AWS, OpenStack, VMware. В Stackato у каждого приложения есть свой контейнер Linux (LXC), который гарантирует эффективное и безопасное совместное использование ресурсов. Его спектр услуг состоит из Helion Control Plane, который Stackato использует для связи с основным облаком и управления всем циклом услуг; Helion Service Manager - хранилище дополнительных служб, доступных для приложений; Helion Cloud Foundry - гибкая среда выполнения, предназначенная для упрощения хостинга и разработки приложений; Helion Code Engine, сервис непрерывной доставки, интегрированный с репозиториями Git, частными или публичными, и Helion Stackato Console, веб-интерфейс для управления всеми функциями Helion Cloud. Alibaba Хотя и сложно представить компанию Alibaba в числе облачных платформах с открытым исходным кодом и PaaS, бизнес Alibaba Cloud Computing растет быстрыми темпами. Она уже завоевала 50% китайского рынка облачных технологий, а также удачно обслуживает рынки за пределами Китая. Например, они начинают оказывать биллинговую поддержку в долларах США по 168 странам и разрабатывать услуги, специально предназначенные для зарубежных рынков. Сервисы облачных платформ, включенные в предложение Alibaba, включают множество бесплатных функций, включая контейнерные сервисы для Docker и Kubernetes, Container Registry, Auto Scaling и DataWorks, защищенную среду для разработки данных в автономном режиме. Его службы хорошо задокументированы и предоставляют все необходимое, чтобы сразу начать перенос приложений в облако, в том числе много обучающих видеороликов. Следуя нескольким простым шагам и не инвестируя ни цента, Alibaba обеспечивает развертывание приложения в кратчайшие сроки. Заключение К счастью для всех разработчиков, облачные технологии становятся более доступными. Пару лет назад, конкурируя за контейнерные технологии (Docker, Kubernetes, Mesos, Nomad, ECS, назовем несколько) угрожали разделить рынок на изолированные отсеки, создавая значительные риски всякий раз, когда нужно было выбрать платформу. Но, несмотря на то, что в наши дни на выбор предоставляются все больше платформ, различия между сегодняшними вариантами с открытым исходным кодом заключаются только в деталях: разных схемах затрат, разных инструментах управления, разных подходах к безопасности. Другими словами, если выбирали одну облачную платформу с открытым исходным кодом и вас она не устраивает, легко можете перейти к другой, не обременяя себя расходами. В зависимости от технической задачи вы можете выбрать платформу, которая лучше отвечает вашим потребностям и позволяет забыть о таких проблемах, как емкость сервера, промежуточное программное обеспечение, платформы, виртуальные машины, хранилища данных и т.д. После того, как вы освободитесь от всего этого, вы сможете вложить все свои ресурсы и все свое внимание в одно, что действительно важно для вас: как можно быстрее сделать доступным приложение пользователям.
img
Мессенджеры с каждым днем все больше и больше интегрируются в нашу жизнь. Это невольно наводит на мысль о «бесшовной» интеграции мгновенных сообщений и бизнес инструментов. Размышляя на этот счет, под наш исследовательский порыв попал популярный в России мессенджер Telegram и CRM Битрикс24. Нам захотелось присылать информацию о созданном лиде в Битриксе в групповой чат Telegram. Мы написали небольшой скрипт на .php и адаптировали его на Linux – машине. Что из этого получилось, спешим рассказать :) Попробовать Битрикс24 Бот в Телеграме Итак, первым делом создаем бота в Телеграме. В нашей базе уже есть пошаговый материал по созданию бота, поэтому, нажмите на кнопку ниже и пройдите по ссылке. Выполните все шаги, которые указаны в пункте «Создание бота в Telegram» - это займет примерно 5 минут. Как сделаете, переходим к следующему пункту. Создание бота Скрипт обработки Все ли получилось на этапе ранее? У вас должен быть токен вида 331754110:AAHkMNalOz5I_Schh2kvj7ONhRcE8HuKV-c и ID (идентификатор) группового чата. Если все на месте, то вашему вниманию предлагается сам скрипт (комментарии по ходу скрипта после двойного слеша //): <?php $token = "Ваш_токен"; // тут вводим ваш токен; $chat_id = "ID_чата"; // указываем идентификатор группового чата $lead_name=$_GET['name']; //получает методом GET название лида, ответственного, источник и его идентификатор; $lead_respons=$_GET['respons']; $lead_source=$_GET['source']; $lead_link=$_GET['link']; $lead_link1 = "https://ваш_домен_битрикс.bitrix24.ru/crm/lead/show/$lead_link/"; // данную конструкцию мы используем для того, чтобы корректно сформировать и отправить ссылку на лида в Telegram; #Оправляем в телеграм $hello = "<b>Здравствуйте, коллеги!</b>"; // формируем элементы массива (сообщения), который будем отправлять в сторону Telegram – API; $hello_1 = ""; $message = "В CRM Битрикс24 добавлен новый лид - "; $repons = "Ответственный - "; $src= "Источник - "; $link = "Ссылка - "; $arr = array( // формируем сам массив; $hello => $hello_1, $message => $lead_name, $repons => $lead_respons, $src => $lead_source, $link => $lead_link1, ); foreach($arr as $key => $value) { if ($key == "Ссылка - ") { $txt .= "".$key." ".$value."%0A";} else { $txt .= "".$key." ".$value."%0A"; }}; fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r"); // отправляем данные в сторону API Телеграма; Скачать скрипт После загрузки скрипта по ссылке, смените его расширение на .php Подставляем свои данные, сохраняем скрипт как bitrixtelegram.php и закидываем его в WEB - директорию вашего сервера (сервера в вашей сети). На нашем сервере мы используем web – сервер Apache на базе CentOS – наша директория /var/www/html/. Важно! Скрипт должен быть доступен по web из внешней сети (Битрикс24 будет обращаться к нему из бизнес – процесса). Мы рекомендуем использовать https, засекьюрить директорию, внутри которой будет находиться скрипт (например, дать ей имя v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0. Тем самым, полный путь до директории будет /var/www/html/v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0). Помимо этого, рекомендуем ограничить подключение к этой директории фильтрацией по IP (на уровне web – сервера и фаервола/маршрутизатора на уровне L3). После этого, в консоли сервера, в случае Linux, даем команды (путь к файлу скрипта у вас может отличаться): chmod 755 /var/www/html/v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0/bitrixtelegram.php dos2unix /var/www/html/v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0/bitrixtelegram.php Адаптация в бизнес – процесс в Битрикс24 Да – да, мы будем использовать вебхуки (Webhook). Это отличное средство, которое позволяет внедрять кастомные сценарии в обработку любой сущности в рамках Битрикс24. По факту, Битрикс просто будет кидать GET - запрос. Переходим к настройке. Открываем CRM → Настройки → Автоматизация → Бизнес - процессы → Лид → Добавить шаблон: Даем имя шаблону и указываем параметры запуска – «При добавлении». Внутри самого бизнес процесса, из правой палитры инструментов перетаскиваем элемент Webhook: В настройка вебхука, в поле в хендлер копируем следующую конструкцию: https://telegram.merionet.ru/ v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0/ bitrixtelegram.php?name={=Document:TITLE}&respons={=Document:ASSIGNED_BY_PRINTABLE}&source={=Document:SOURCE_ID}&link={=Document:ID} Где: https://telegram.merionet.ru - хостовая часть, на которой расположился наш скрипт; v2I7TD9w3zo9QR7vg6ApNwDVvJOj9XbO61OJKdIyxI6d0 - директория в корне web – сервера, в которой лежит скрипт; bitrixtelegram.php - сам скрипт; ?name={=Document:TITLE}&respons={=Document:ASSIGNED_BY_PRINTABLE}&source={=Document:SOURCE_ID}&link={=Document:ID} - параметры, которые мы будем передавать в скрипт, а именно – имя лида, источник, ответственный и ID - лида; Проверяем :) Вручную добавляем лид в CRM: И вот что ждет нас в Telegram:
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59