По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Многоуровневый коммутатор будет использовать информацию из таблиц, которые созданы (плоскость управления) для построения аппаратных таблиц. Он будет использовать таблицу маршрутизации для построения FIB (информационной базы пересылки) и таблицу ARP для построения таблицы смежности. Это самый быстрый способ переключения, потому что теперь у нас есть вся информация уровня 2 и 3, необходимая для пересылки аппаратных пакетов IP. Давайте посмотрим на информационную таблицу о пересылке и таблицу смежности на некоторых маршрутизаторах. Будем использовать ту же топологию, что и ранее. 3 роутера и R3 имеет интерфейс loopback0. Будем использовать статические маршруты для полного подключения: R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2 R2(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2 Это статические маршруты, которые мы будем использовать. Теперь посмотрим на таблицу маршрутизации и FIB: show ip cef показывает нам таблицу FIB. Вы можете видеть, что есть довольно много вещей в таблице FIB. Ниже даны разъяснения по некоторым из записей: 0.0.0.0/0 - это для интерфейса null0. Когда мы получим IP-пакеты, соответствующие этому правилу, то оно будет отброшено. 0.0.0.0 /32 - это для всех-нулевых передач. Забудьте об этом, так как мы больше не используем его. 3.3.3.0 /24 - это запись для интерфейса loopback0 R3. Обратите внимание, что следующий переход - это 192.168.12.2, а не 192.168.23.3, как в таблице маршрутизации! 192.168.12.0/24 - это наша непосредственно подключенная сеть. 192.168.12.0/32 зарезервировано для точного сетевого адреса. 192.168.12.1/32 - это IP-адрес на интерфейсе FastEthernet 0/0. 192.168.12.2/32 - это IP-адрес на интерфейсе FastEthernet 0/0 R2. 192.168.12.255/32 - это широковещательный адрес для сети 192.168.12.0/24. 224.0.0.0/4 - соответствует всему многоадресному трафику. Он будет удален, если поддержка многоадресной рассылки отключена глобально. 224.0.0.0/24 - соответствует всему многоадресному трафику, зарезервированному для трафика управления локальной сетью (например, OSPF, EIGRP). 255.255.255.255/32 - широковещательный адрес для подсети. Давайте подробно рассмотрим запись для network 3.3.3.0/24: Номер версии говорит нам, как часто эта запись CEF обновлялась с момента создания таблицы. Мы видим, что для достижения 3.3.3.0/24 нам нужно перейти к 192.168.23.3 и что требуется рекурсивный поиск. Следующий прыжок-192.168.12.2. Он также говорит, что это valid cached adjacency (допустимая кэшированная смежность). Существует целый ряд различных смежностей: Null adjacency: используется для отправки пакетов в интерфейс null0. Drop adjacency: это для пакетов, которые не могут быть переданы из-за ошибок инкапсуляции, маршрутов, которые не могут быть разрешены, или протоколов, которые не поддерживаются. Discard adjacency: это относится к пакетам, которые должны быть отброшены из-за списка доступа или другой политики. Punt adjacency: используется для пакетов, которые отправляются на плоскость управления для обработки. Пакеты, которые не пересылаются CEF, обрабатываются процессором. Если у вас есть много таких пакетов, то вы можете увидеть проблемы с производительностью. Вы можете видеть, сколько пакетов было обработано процессором: Вы можете использовать команду show cef not-cef-switched, чтобы проверить это. Количество пакетов указано по причине: No_adj: смежность не является полной.. No_encap: Информация об ARP является неполной. Unsupp’ted: пакет имеет функции, которые не поддерживаются. Redirect: Перенаправление ICMP. Receive: Это пакеты, предназначенные для IP-адреса, настроенного на интерфейсе уровня 3, пакеты, предназначенные для нашего маршрутизатора. Options: В заголовке пакета есть параметры IP-адреса. Access: ошибка сравнения со списком доступа Frag: ошибка фрагментации пакетов Мы также можем взглянуть на таблицу смежности, в которой хранится информация уровня 2 для каждой записи: Вы можете использовать команду show adjacency summary, чтобы быстро посмотреть, сколько у нас есть смежностей. Смежность - это отображение от уровня 2 до уровня 3 и происходит из таблицы ARP. R1#show adjacency Protocol Interface Address IP FastEthernet0/0 192.168.12.2(9) R1 имеет только один интерфейс, который подключен к R2. Вы можете увидеть запись для ip 192.168.12.2, который является интерфейсом FastEthernet 0/0 R2. Давайте увеличим масштаб этой записи: Мы видим там запись для 192.168.12.2 и там написано: CC011D800000CC001D8000000800 Что означает это число? Это MAC-адреса, которые нам нужны, и Ethertype ... давайте разберем поподробнее его: CC011D800000 - это MAC-адрес интерфейса R2 FastEthernet0 / 0 CC001D800000 - это MAC-адрес интерфейса R1 FastEthernet0/0. 0800 - это Ethertype. 0x800 означает IPv4. Благодаря таблицам FIB и смежности у нас есть вся информация уровня 2 и 3, которая нам требуется для перезаписи и пересылки пакетов. Имейте в виду, что перед фактической пересылкой пакета мы сначала должны переписать информацию заголовка: Исходный MAC-адрес. Конечный MAC-адрес. Контрольная сумма кадров Ethernet. TTL IP-пакета. Контрольная сумма IP-пакетов. Как только это будет сделано, мы сможем переслать пакет. Теперь у вас есть представление о том, что такое CEF и как обрабатываются пакеты. Возникает вопрос, а в чем разница между маршрутизаторами и коммутаторами, поскольку многоуровневый коммутатор может маршрутизировать, а маршрутизатор может выполнять коммутацию. Различие между устройствамистанвится все меньше, но коммутаторы обычно используют только Ethernet. Если вы покупаете Cisco Catalyst 3560 или 3750, то у вас будут только интерфейсы Ethernet. У них есть ASICs, поэтому коммутация кадров может выполняться со скоростью линии связи. С другой стороны, маршрутизаторы имеют другие интерфейсы, такие как последовательные каналы связи, беспроводные сети, и они могут быть модернизированы модулями для VPN, VoIP и т. д. Вы не сможете настроить такие вещи, как NAT/PAT на (маленьком) коммутаторе. Однако грань между ними становится все тоньше Маршрутизаторы используются для маршрутизации, коммутаторы уровня 2-для коммутации, но многоуровневые коммутаторы могут выполнять комбинацию того и другого. Возможно, ваш коммутатор выполняет 80% коммутации и 20% маршрутизации или наоборот. TCAM можно "запрограммировать" на использование оптимальных ресурсов с помощью шаблонов SDM. SDM (Switching Database Manager) используется на коммутаторах Cisco Catalyst для управления использованием памяти TCAM. Например, коммутатор, который используется только для коммутации, не требует никакой памяти для хранения информации о маршрутизации IPv4. С другой стороны, коммутатору, который используется только в качестве маршрутизатора, не потребуется много памяти для хранения MAC-адресов. SDM предлагает ряд шаблонов, которые мы можем использовать на нашем коммутаторе, вот пример коммутатора Cisco Catalyst 3560: Выше вы можете видеть, что текущий шаблон является "desktop default", и вы можете видеть, сколько памяти он резервирует для различных элементов. Вот пример других шаблонов: Вот шаблоны SDM для коммутатора. Мы можем изменить шаблон с помощью команды sdm prefer: Вы должны перезагрузить устройство прежде, чем он вступит в силу: SW1#reload Теперь давайте еще раз проверим шаблон: По сравнению с шаблоном "desktop default" мы теперь имеем двойное хранилище для одноадресных MAC-адресов. Однако для маршрутов IPv4 ничего не зарезервировано. Это хорошая идея, чтобы установить шаблон SDM, для того чтобы соответствовать необходимому использованию вашего коммутатора. Если вы делаете как коммутацию, так и маршрутизацию и не уверены в том, какой шаблон выбрать, то вы можете посмотреть на текущее использование TCAM, вот как это сделать: На данном рисунке многое не отображено, но вы можете видеть, как заполняется TCAM в данный момент. Теперь вам есть что сравнить с шаблонами SDM.
img
В первой части этого материала мы изучили базовую веб-архитектуру, а во второй разобрали структуру веб-приложения. Настало время более детально рассмотреть HTTP и REST. Понимание HTTP имеет решающее значение для веб-разработчиков, поскольку оно облегчает поток информации в веб-приложении, позволяя улучшить взаимодействие с пользователями и повысить производительность сайта. Что такое HTTP? В клиент-серверной модели клиенты и серверы обмениваются сообщениями по принципу «запрос-ответ»: клиент отправляет запрос, а сервер возвращает ответ. Хранить трек из этих сообщений сложнее, чем звучит, поэтому клиент и сервер придерживаются общего языка и набора правил. Этот «язык», или протокол, называется HTTP. Протокол HTTP определяет синтаксис (формат и кодировку данных), семантику (значение, связанное с синтаксисом) и тайминг (скорость и последовательность). Каждый HTTP-запрос и ответ, которыми обмениваются клиент и сервер, рассматривается как одна HTTP-транзакция. HTTP: Общая информация Есть несколько вещей, которые стоит отметить про HTTP, прежде чем погрузиться в детали. Во-первых, HTTP текстовый протокол, что означает, что сообщения, которыми обмениваются клиент и сервер, являются битами текста. Каждое сообщение содержит две части: заголовок и тело. Во-вторых, HTTP - это протокол прикладного уровня, то есть это просто абстракционный уровень, который стандартизирует взаимодействие хостов. Сам HTTP не передает данные. Получение запроса и ответа от одной машины к другой по-прежнему зависит от базового протокола TCP/IP. Напоминаем, что TCP/IP - это двухкомпонентная система, которая функционирует как фундаментальная «система управления» Интернета. Наконец, возможно, вы видели протокол «HTTPS» в адресной строке браузера и интересовались, является ли HTTP тем же самым, что HTTP + «S». Если коротко, то HTTPS разновидность HTTP, с небольшой разницей. Простой HTTP-запрос или ответ не зашифрован и уязвим для различных типов атак. HTTPS, напротив, является более безопасной протоколом связи, которая использует TLS/SSL шифрование для обеспечения безопасности. SSL - это протокол безопасности, который позволяет клиенту и серверу взаимодействовать по сети безопасным способом - чтобы предотвратить сниффинг и подмену во время передачи сообщений по сети. Клиент обычно указывает, требуется ли ему подключение TLS/SSL, используя специальный номер порта 443. Как только клиент и сервер соглашаются использовать TLS/SSL для обмена данными, они согласовывают соединение с отслеживанием состояния, выполняя так называемое «квитирование TLS». Затем клиент и сервер устанавливают секретные сеансовые ключи, которые они могут использовать для шифрования и дешифрования сообщений, когда они разговаривают друг с другом. Многие крупные веб-сайты, такие как Google и Facebook, используют HTTPS - в конце концов, это то, что сохраняет ваши пароли, личную информацию и данные кредитных карт в безопасности. Что такое API HTTP: Углубляясь в детали Теперь, вооружившись базовыми знаниями, погрузимся глубже в структуру HTTP. Мы можем начать с посещения https://www.github.com, чтобы связаться с сервером GitHub. Если вы используете Chrome или Firefox с установленным расширением Firebug, вы можете подробно изучить HTTP-запрос, перейдя на вкладку «Сеть» или «Network». С открытой кладкой «Сеть», перейдите на сайт www.github.com, введя его в адресную строку, и вы должны увидеть что-то подобное: Затем на левой панели щелкните по первому пути, «github.com.» Теперь вы должны увидеть следующее: Заголовок запроса HTTP Заголовки HTTP обычно содержат метаданные (данные о данных). Метаданные включают тип запроса (GET, POST, PUT или DELETE), путь, код состояния, тип содержимого, используемый браузер, cookie, текст сообщения (иногда) и многое другое. Рассмотрим наиболее важные части заголовка на примере GitHub, начиная с раздела «Заголовки ответа»: Request URL: https://github.com/ - Запрошенный URL-адрес Request Method: GET - Тип используемого метода HTTP. В нашем случае наш браузер сказал: «Эй, сервер GitHub, я хочу ПОЛУЧИТЬ (GET) домашнюю страницу». Status Code:200 OK - Стандартизированный способ информирования клиента о результате запроса. Код состояния 200 означает, что сервер успешно нашел ресурс и отправляет его вам. Remote Address:192.30.252.129:443 - IP-адрес и номер порта веб-сайта GitHub, который мы посетили. Обратите внимание, что это порт номер 443 (это означает, что мы используем HTTPS вместо HTTP). Content-Encoding: gzip - Кодировка ресурса, который мы получили обратно. В нашем случае сервер GitHub сообщает нам, что содержимое, которое он отправляет назад, сжато. Возможно, Github сжимает файлы, чтобы страница быстрее загружалась. Content-Type: text/HTML; charset = utf-8 - Задает представление данных в теле ответа, включая тип и подтип. Тип описывает тип данных, в то время как подтип указывает конкретный формат для этого типа данных. В нашем случае, мы имеем текст, в формате HTML. Во второй части указывается кодировка символов для HTML-документа. Чаще всего это будет UTF-8, как и выше. Есть также куча информации заголовка, которую клиент должен был отправить, чтобы сервер мог знать, как ответить. Посмотрите на раздел «Заголовки запросов» или «Headers»: User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 - Программное обеспечение, которым пользуется пользователь. Иногда веб-сайт должен знать, с какого устройства он просматривается. Поэтому браузер отправляет эту последовательность User-Agent, которую сервер может использовать для определения того, что используется для доступа к веб-сайту Accept-Encoding: gzip, deflate, sdch - Указывает кодировку содержимого, которую может обработать браузер. Мы видим, что указан gzip, и поэтому сервер Github смог отправить нам содержимое в формате gzip. Accept-Language: en-US, en; q = 0.8 - Описывает язык, на котором должна отобразиться веб-страница. В нашем случае «en» означает английский. Host: github.com - Описывает хост, на который мы идем Cookie:_octo=GH1.1.491617779.1446477115; logged_in=yes; dotcom_user=iam-peekay; _gh_sess=somethingFakesomething FakesomethingFakesomethingFakesomethingFakesomethingFakesomethingFakesomethingFakesomethingFake; user_session=FakesomethingFake somethingFakesomethingFakesomethingFake; _ga=9389479283749823749; tz = America% 2FLos_Angeles _ - Фрагмент текста, который веб-сервер может хранить на компьютере пользователя и впоследствии извлекать. Информация сохраняется как пара имя-значение. Например, одна из пар имя-значение, сохраненных GitHub для моего запроса, является «dotcom_user=iam-peekay,», которая сообщает GitHub, что мой userid – Iam-peekay. Что теперь со всеми этими парами имя-значение? Итак, у нас есть много пар имя-значение. Но как создаются эти пары имя-значение? Каждый раз, когда браузер будет открывать веб-сайт, он будет искать на компьютере файл cookie, установленный веб-сайтом ранее. Так что, при посещении www.github.com, браузер будет искать файл cookie, который GitHub сохранил на жестком диске компьютера пользователя. Если он найдет файл cookie, он отправит все пары имя-значение в заголовке запроса. Веб-сервер GitHub теперь может использовать данные cookie различными способами, такими как рендеринг контента на основе сохраненных пользовательских предпочтений, подсчет количества времени, проведённого на сайте. Если браузер не находит файл cookie - либо потому, что сайт никогда не посещался, либо пользователь заблокировал или удалил его - браузер не отправляет данные cookie. В этом случае сервер GitHub создает новый идентификатор в качестве пары имя-значение, вместе с любыми другими необходимыми ему парами имя-значение, и отправляет его пользователю через заголовок HTTP. Получив данные, устройство хранит их на своем жестком диске. Тело HTTP Выше мы узнали, что сервер содержит большинство важных «метаданных» (данные о данных), которые необходимы для связи с клиентом. Теперь поговорим о теле HTTP запроса. Тело – это основная часть сообщения. В зависимости от типа запроса он может быть и пустым. В нашем случае вы можете увидеть тело на вкладке «Response». Поскольку мы сделали запрос GET на www.github.com, тело содержит содержимое HTML-страницы для www.github.com. Дополнительные упражнения Надеюсь, такой разбор позволит вам лучше понять структуру HTTP. На практике вы можете просмотреть на другие ресурсы, запрашиваемые вашим браузером (изображения, файлы JavaScript и т.д.) при посещении www.github.com. Теперь рассмотрим различные методы HTTP запросов, которые клиент может инициировать. Методы HTTP Команды или методы HTTP указывают серверу, что делать с данными, определенными по URL. URL-адреса всегда идентифицируют определенный ресурс. Когда клиент использует URL-адрес в сочетании с командой HTTP, это сообщает серверу, какое действие необходимо выполнить с указанным ресурсом. Примеры URL-адресов: GET http://www.example.com/users (получить всех пользователей) POST http://www.example.com/users/a-unique-id (создание нового пользователя) PUT http://www.example.com/comments/a-unique-id (обновить комментарий) DELETE http://www.example.com/comments/a-unique-id (удалить комментарий) Когда клиент делает запрос, он указывает тип запроса, используя одну из этих команд. Наиболее важными являются GET, POST, PUT и DELETE. Есть и другие методы, такие как HEAD и OPTIONS, но они используются редко, поэтому в данном материале мы пропустим их. GET GET является наиболее часто используемым методом. Он используется для чтения информации по данному URL-адресу с сервера. Запросы GET доступны только для чтения, что означает, что данные никогда не должны быть изменены на сервере - сервер должен просто извлечь данные без изменений. Таким образом, запросы GET считаются безопасными операциями, поскольку сколько бы не вызывай его, ответ будет одинаковым. Кроме того, запросы GET являются идемпотентными. Это означает, что отправка нескольких запросов GET на один и тот же URL-адрес должна привести к тому же эффекту, что и один запрос GET, поскольку запрос GET просто запрашивает данные с сервера, а не изменяет их. Запросы GET отвечают кодом состояния 200 (ОК), если ресурс был успешно найден, и 404 (NOT FOUND), если ресурс не был найден. (Отсюда термин «404 page» для сообщений об ошибках при посещении несуществующих или неправильно набранных URL-адресов.) POST POST используется для создания нового ресурса, например, через форму регистрации. Функция POST используется при необходимости создания дочернего ресурса (например, нового пользователя) для какого-либо родительского ресурса (http://example.com/users). Родительский ресурс запроса на создание новой сущности определяется по URL-адресу, и сервер обрабатывает новый ресурс и связывает его с родительским ресурсом. POST не является ни безопасным, ни идемпотентным. Это связано с тем, что выполнение двух или более идентичных запросов POST приведет к созданию двух новых идентичных ресурсов. Запросы POST отвечают кодом состояния 201 (CREATED) вместе с заголовком местоположения со ссылкой на вновь созданный ресурс. PUT PUT используется для обновления ресурса, идентифицированного по URL, с использованием информации в теле запроса. PUT также может использоваться для создания нового ресурса. Запросы PUT не считаются безопасными операциями, поскольку они изменяют данные на сервере. Однако он является идемпотентным, поскольку несколько идентичных запросов PUT на обновление ресурса должны иметь тот же эффект, что и первый. Запросы PUT отвечают кодом состояния 200 (OK), если ресурс был успешно обновлен, и 404 (NOT FOUND), если ресурс не был найден. DELETE DELETE используется для удаления ресурса, определенного по URL-адресу. Запросы DELETE являются идемпотентным, поскольку если УДАЛИТЬ ресурс, он будет удален, и даже если вы сделаете несколько идентичных запросов DELETE, результат будет одинаковым: удаленный ресурс. Скорее всего, вы просто получите сообщение об ошибке 404, если отправить запрос DELETE для одного и того же ресурса несколько раз, поскольку сервер не сможет найти его после удаления. Запросы DELETE отвечают кодом состояния 200 (OK) в случае успешного удаления или 404 (NOT FOUND), если не удалось найти удаляемый ресурс. Все вышеуказанные запросы возвращают значение 500 (ВНУТРЕННЯЯ ОШИБКА СЕРВЕРА), если обработка завершается неуспешно и сервер выдаёт ошибку. Что же такое REST? Перейдем к последнему термину – REST. Возможно, вы слышали термин RESTful application ранее. Важно понимать, что это означает, потому что, если вы используете HTTP для обмена данными между клиентом и сервером, полезно следовать рекомендациям REST. На самом деле, HTTP-методы, которые мы рассмотрели выше, не что иное, как часть REST. REST расшифровывается как Representational State Transfer (Передача состояния представления). Это архитектурный стиль проектирования приложения. Основная идея заключается в том, что для выполнения вызовов между машинами используется протокол «без состояния», «клиент-сервер», «кэшируемый» - и чаще всего этот протокол HTTP. В общем, REST это согласованный набор ограничений для проектирования приложения. Эти ограничения помогают сделать систему более производительной, масштабируемой, простой, изменяемой, видимой, портативной и надежной. Полный список ограничений очень длинный, и вы можете прочитать об этом здесь. В этой статье остановимся на двух наиболее важных из них: 1. Унифицированный интерфейс - Uniform interface: это ограничение позволяет определить интерфейс между клиентом и сервером путь, чтобы упростить и разъединить архитектуру. Там написано, что: Ресурсы должны быть идентифицируемыми в запросе (например, с помощью идентификаторов ресурсов в URI). Ресурс (например, данные в базе данных) - это данные, которые определяют представление ресурса (например, JSON, HTML). Ресурсы и представления ресурсов - это концептуально разные сущности - клиент взаимодействует только с представлением ресурсов. Клиент должен иметь достаточно информации для управления ресурсами на сервере с помощью представления ресурса. Каждое сообщение, которым обмениваются клиент и сервер, должно быть самоописательным и содержать информацию о том, как обрабатывать сообщение. Клиенты должны отправлять данные о состоянии с использованием основного содержимого HTTP, заголовка HTTP-запроса, параметров запроса и URL-адреса. Серверы должны отправлять данные о состоянии с помощью тела HTTP, кодов ответов и заголовков ответов. Примечание: Описанные выше команды HTTP составляют основную часть ограничения «унифицированного интерфейса», поскольку они представляют собой единообразные действия, которые происходят с ресурсами. 2. Отсутствие состояния - Stateless: это ограничение говорит о том, что все данные о состоянии, необходимые для обработки запроса клиента, должны содержаться в самом запросе (URL, параметры запроса, тело HTTP или заголовки HTTP), а сервер должен отправить все необходимые данные о состоянии клиенту через сам ответ (заголовки HTTP, код состояния и тело ответа HTTP). Примечание: Состояние - или состояние приложения - это данные, необходимые серверу для выполнения запроса. Это означает, что для каждого запроса мы пересылаем информацию о состоянии туда и обратно, так что сервер не должен поддерживать, обновлять и отправлять состояние. Наличие системы без сохранения состояния делает приложения намного более масштабируемыми, потому что ни один сервер не должен беспокоиться о поддержании одного и того же состояния сеанса на протяжении нескольких запросов. Все необходимое для получения данных о состоянии доступно в самом запросе и ответе. Заключение HTTP далеко не прост. Но, как вы видите, это критически важный компонент отношений между клиентом и сервером. Для создания RESTful приложений требуется по крайней мере базовое понимание HTTP. С таким багажом знаний, следующий проект для вас будет намного проще.
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