Каталог телеграмм и делегирование административных прав в Active Directory

Каталог телеграмм и делегирование административных прав в Active Directory Хостинг

Мы нашли простое и эффективное решение, закрывающее вопросы взаимодействия со специалистами IT-отделов, кадровой службы, бухгалтерии и других подразделений, и готовы делиться опытом.

Всем привет. Сегодня мы решили собрать и объединить весь опыт, информацию и детали с кейсами по рекламной платформе Телеграма, которая у нас есть — в виде лонгрида.

В этой статье мы рассмотрим пример использования Telegram бота на сервере с Linux CentOS, покажем, как настроить простые уведомления в чат-бот для мониторинга вашего сервера, а также несколько управляющих команд.

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

Привет уважаемому сообществу! Решил представить на этой площадке новую версию своего opensource-проекта.

Сейчас проект дошел до такой стадии, что функционал уже достаточный для коммерческого продукта, и я очень надеюсь получить какие-то идеи для развития и вывода на рынок, ну или критику, она тоже лишней не бывает.

Предыдущую версию я представлял на хабре https://habr.com/ru/post/565298/, в принципе все новые функции текущей версии это результат обсуждения той статьи.

Не буду здесь приводить технические детали проекта, они есть на хабре, кратко расскажу о возможностях.

ServiceLogonMultifactor (SLMF) предназначен для отправки сообщения о заходе на компьютер и запроса на разрешение (второй фактор) в мессенджер «Телеграм».

SLMF полностью бесплатен, код открыт, не требует никаких подписок и не зависит от внешних поставщиков услуг кроме мессенджера.

По сравнению с предыдущей версией пользователю полностью блокируется интерфейс до получения разрешения.

Добавлена возможность получать данные о внешнем IP при подключении через шлюз удаленных рабочих столов (RDG) или VPN

Отличие от других решений:

  • Решение с открытым кодом, аналогичных решений я не нашел.
  • Используется мессенджер для доставки сообщений и подтверждений. Полагаю у Телеграмм надежность выше, чем у любой собственной, даже крупной разработки;
  • SLMF показывает информацию откуда совершен вход: консоль или IP в случае удаленного подключения.
  • Пользователь и/или администратор могут гибко регулировать уровень «бдения» от просто оповещать, до полной блокировки со списком доверенных узлов, при подключении с которых приходит только уведомление.

На сегодняшний день есть понимание, что данный проект надо разделять на бесплатный для личного использования и коммерческий с дополнительными функциями.

Вот что я вижу для коммерческой версии:

  • Получение данных от RDG или VPN сервера о внешнем ИП;
  • Белые списки на основе стран, провайдеров или автономных систем AS;
  • Настройка уведомлений администратору при подключении из другой страны;
  • Отчетность по источникам подключений;
  • Централизованное управление конфигурациями;
  • Централизованный сбор логов;

Основное из этого списка уже сделано, что-то делается, что-то еще в стадии планирования.

Что я надеюсь получить от этой публикации – совет\идею\партнера, как дальше развивать этот проект. Я сам технарь, мои навыки продажника скорее отрицательны, и сам я этот проект коммерчески успешным не сделаю.

У меня уже был проект www.skypetime.ru, который хоть и окупился, даже принеся неплохую прибыль, но не оправдал возложенные на него надежды.

Мессенджер Telegram можно использовать как средство мгновенного оповещения о различных событиях в инфраструктуре, результатах выполнения скриптов или заданий планировщика. В этой статье мы покажем, как отправить текстовое уведомление в канал или группу Telegram с помощью PowerShell через API бота.

Укажите название бота и имя пользователя. BotFather сгенерирует для вам HTTP токен, который нужно скопировать и сохранить.

создать бота telegram

Your user ID: 987654321

Для отправки сообщения в Telegram нужно указать токен бота и имя вашего пользователя (группы):

Для подключения к API Telegram нужно обязательно использовать протокол TLS 1.2. Убедитесь, что TLS 1.2 включен в вашей операционной системе Windows. PowerShell по умолчанию может использовать для подключения устаревшие протоколы SSL 3.0, TLS 1.0, или TLS 1.1. Чтобы использовать TLS 1.2 в текущей сессии, выполните команду:

Чтобы отправить сообщение в Telegram, выполните команду:

$message="Тестовое сообщение в Telegram из PowerShell"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($Telegramtoken)/sendMessage?chat_id=$($Telegramchatid)&text=$($Message)"

Вы должны получить сообщение от бота.

Чтобы сделать уведомления более наглядными и красочными, можно использовать символы emoji и HTML форматирование:

$message= $currend_data + "⚠️ Скрипт обновления <b>Update1C</b> завершен с ошибками"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html"

отправка telegram сообщения из powershell

Если в вашей сети доступ в интернет выполняется через прокси сервер, вы можете указать есть с помощью параметра
-Proxy
командлета Invoke-WebRequest. Для аутентификации на прокси можно использовать аргумент
-ProxyCredential
.

$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($Telegramtoken)/sendMessage?chat_id=$($Telegramchatid)&text=$($Message)" –Proxy "http://192.168.31.55:3128"

В PowerShell 7.x командлет Invoke-WebRequest использует настройки прокси, заданные в переменных окружения. Подробнее об использовании прокси в PowerShell.

Скрипт отправки сообщения в телеграм можно оформить в функцию и добавить ее в файл профиля PowerShell в Windows:

 function Send-Telegram { [CmdletBinding()] param( [Parameter()] [string] $Message ) $tg_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" $tg_chat_id="987654321" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html" return $Response }

Чтобы открыть текстовый файл с профилем PowerShell, который автоматически применяется при запуске процесса powershell.exe/pwsh.exe, выполните команду:

добавить функцию отправки в telegram в профиль powershell

Теперь вы можете использовать функцию отправки сообщения в канал Telegram из любого скрипта PowerShell. Достаточно выполнить команду:

Send-Telegram  "My test message"

telegrambotfatherИдея создания помощника системного администратора в виде бота для мессенджера давно не давала покоя, и вот руки дошли до написания кода на PS. Бот умеет получать сообщения в виде команд, производить с командами определённые действия и возвращать результат в ту группу, где он прочитал команду. В целях безопасности реализована фильтрация по группам Telegram, чтобы ботом не могли воспользоваться посторонние.

Описание работы и код разбираются далее

$token = "<номер>:<код авторицации>"
$uri = "https://api.telegram.org/bot$token/sendMessage"

На просторах Интернета я нашёл готовые функции для PowerShell, которые позволят принимать команды из telegram, записывать их в переменную, публиковать сообщения в определённые группы:

function GetMessage
{#Читаем последнее сообщение$Request = Invoke-WebRequest -Uri "https://api.telegram.org/bot$token/getUpdates?offset=-1&timeout=1" -Method Get
$obj = (ConvertFrom-Json $Request.content).result.message#Создадим структуру, в которую запихнем полученные данные и вернем$props = [ordered]@{ 
                        ok = $content.ok
                        UpdateId = $obj.update_id
                        Message_ID = $obj.message_id
                        first_name = $obj.from.first_name
                        last_name = $obj.from.last_name
                        sender_ID = $obj.from.id
                        chat_id = $obj.chat.id
                        text = $obj.text
                       }
$msg = New-Object -TypeName PSObject -Property $props
Return $msg
}
#В функцию передаем текст сообщения и ИД чата, в который мы его отправляемfunction SendMessage($textmsg,$сhatid)
{#В телеграмм есть ограничение на размер сообщения в 4к байт. Мы не будем подстраиваться вплотную,#а будем разбивать сообщение на строки и отправлять по 50 строк за одно сообщение#попутно добавляем символ переноса строкиtry
{
$sa = @();
foreach ($s in $textmsg) {$sa += ($s -replace[char](13),[char]10) + [char]10}
$payload = @{"parse_mode" = "Markdown"; "disable_web_page_preview" = "True"}
$last_step = [math]::Truncate($sa.Count / 50);
for ($i=0; $i -lt $sa.Count / 50;$i++)
{
$b = ($i*50);$e = ($i+1)*50 - 1;
$mspart = $sa[$b..$e]
$request = Invoke-WebRequest -Uri "https://api.telegram.org/bot$token/sendMessage?chat_id=$сhatid&text=$mspart" -Method Post ` -ContentType "application/json; charset=utf-8" ` -Body (ConvertTo-Json -Compress -InputObject $payload)}
}
catch
{
$msgtext = 'Ошибка передачи сообщения: '+$_.Exception.Message;
$request = Invoke-WebRequest -Uri "https://api.telegram.org/bot$token/sendMessage?chat_id=$сhatid&text=$msgtext" -Method Post ` -ContentType "application/json; charset=utf-8" ` -Body (ConvertTo-Json -Compress -InputObject $payload)}
}
function ConvertTo-Encoding ([string]$From, [string]$To){ Begin{ $encFrom = [System.Text.Encoding]::GetEncoding($from) $encTo = [System.Text.Encoding]::GetEncoding($to) } Process{ $bytes = $encTo.GetBytes($_) $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes) $encTo.GetString($bytes) }
}
function IsAdmin ($userid, $chatid)
{ if ($chatid -gt 1) {Return $false;exit;}
$Request = Invoke-WebRequest -Uri "https://api.telegram.org/bot$token/getChatAdministrators?chat_id=$chatid" -Method Get
$content = ConvertFrom-Json $Request.content
$str = $content.result $props = [ordered]@{ id = $str.user.id Status = $str.status }
$r = $false
$msg = New-Object -TypeName PSObject -Property $props
$r = !(($msg.Id | ? {$_ -eq $userid}) -eq $null)
Return $r
}
#Флаг завершения работы, при начале работы сброшен$token = "56622550:Najsh9869xh9uzyHhd097"
$exit = $false;#Получим последнее доступное сообщение и запомним его номер и канал$msg = GetMessage;
$LastId = $msg.Message_ID;
$LastChat = $msg.chat_id;#Прочтем наш текстовый файл с командами$commandlist = gc 'c:\scripts\bot_commands.txt'#И цикл пока не поднимется флаг $exitDo
{                      }
#Читаем последнее сообщение $msg = GetMessage;#Если у последнего сообщения другой ID (чтобы не обрабатывать последнюю команду несколько раз)
#или оно из другого канала, длина сообщения больше 1 и начинается сообщение с символа / то займемся этим сообщением if ((($LastId -ne $msg.Message_ID) -or ($LastChat -ne $msg.chat_id)) -and ($msg.text.Length -gt 1) -and ($msg.text[0] -eq '/')) {#уберем из сообщения имя нашего бота (если команду писали боту) $msg.text = $msg.text -replace '@my_bot_username',''#И начинаем сравнивать сообщение с шаблонами команд, которые мы знаем
switch ($msg.text) {#Если получена команда /stop - поднимем флаг $exit и работа бота завершится '/stop' {#Но только если команду давал админ if (IsAdmin $msg.sender_ID $msg.chat_id) { $exit = $true;SendMessage "Понял, отключаюсь" $msg.chat_id } else {SendMessage "Команда доступна только администраторам группы." $msg.chat_id} }

Пишем первую команду:

 {$msg.text -like '/ping *'}
 {#Получим имя хоста $serv = ($msg.text -split ' ')[-1]; #Выполним команду ping $r = @(ping $serv -n 4)#Преобразуем ответ пинга в CP1251 $answ = ($r | ConvertTo-Encoding cp866 Windows-1251 )#Заменим возможные символы разметки markdown, чтобы не смущать телеграм при отправке сообщения $answ = ($answ -replace [regex]::escape('*'),'') -replace '_',''#И отправим полученный ответ SendMessage $answ $msg.chat_id }

Далее нам понадобится определить ID чатов (групп), в которых будет проходить обработка команд. Нужно отправить команду боту в этой группе. После чего нужно открыть ссылку https://api.telegram.org/bot/getUpdates, и найти в выводе ID нужной группы. Теперь можно фильтровать группы, в которых бот будет отвечать на команды конструкцией ($msg.chat_id -eq «<OUR GROUP ID>»).

Используем эту конструкцию для запуска утилиты whois, если получена команда /whois <domain>:

 {$msg.text -like '/whois *' -and ($msg.chat_id -eq "<OUR GROUP ID>")} { #Если получена команда - получить информацию о домене $domain = ($msg.text -replace '/whois ',''); $whois = C:\Scripts\Whois\whois64.exe $domain -nobanner | Out-String Invoke-WebRequest -Method Post -Uri $uri -Body @{chat_id=$msg.chat_id; text=$whois} }
{$msg.text -like '/getaduser *' -and ($msg.chat_id -eq "<OUR GROUP ID>")}
   { #Если получена команда - получить информацию о пользователе $user = ($msg.text -replace '/getaduser ',''); $userinfo = Get-ADUser -Filter * | ? {$_.Surname -like ($user + "*")} | fl DistinguishedName,Name,SamAccountName,City | Out-String Invoke-WebRequest -Method Post -Uri $uri -Body @{chat_id=$msg.chat_id; text=$userinfo} }

А теперь из разряда высшего пилотажа, получаем графики из Zabbix по нужному объекту мониторинга.

Читайте также:  Улучшите SEO и пользовательский опыт: быстрый перенос Joomla на поддомен

Вводим начальные переменные:

{$msg.text -like '/zgraph *' -and ($msg.chat_id -eq "<OUR GROUP ID>")} {
$object = ($msg.text -replace '/zgraph ','');
 $zabbixURL = "<URL web-интерфейса Zabbix>" $zabbixAPIURL = $zabbixURL + "api_jsonrpc.php" $zabbixGraphURL = $zabbixURL + "chart2.php?graphid=" $baseJSON = @{ "jsonrpc" = "2.0"; "id" = 1 } # Get login token. $authJSON = $baseJSON.clone() $authJSON.method = "user.login" $authJSON.params = @{ "user" = ""; "" = "" } $login = Invoke-RestMethod -Uri $zabbixAPIURL -Body ($authJSON | ConvertTo-Json) -method POST -ContentType "application/json" $baseJSON.auth = $login.result# Set Cookie. $zabbixDomain = $zabbixURL $session = New-Object -TypeName Microsoft.PowerShell.Commands.WebRequestSession $cookie = New-Object -TypeName System.Net.Cookie $cookie.Name = "zbx_sessionid" $cookie.Value = $login.result $session.Cookies.Add($zabbixDomain,$cookie)

Получаем все объекты мониторинга из Zabbix и сравниваем с введённой командой:

# get hostids $hostGetJSON = $baseJSON.clone() $hostGetJSON.method = "host.get" $hostGetJSON.params = @{ "output" = "extend" } $hostGetResult = Invoke-WebRequest -Uri $zabbixAPIURL -WebSession $session -Body ($hostGetJSON | ConvertTo-Json) -method POST -ContentType "application/json" $hosts = ($hostGetResult.toString() | ConvertFrom-Json).result
$hostname = $hosts | ? {$_.name -eq $object} $hostID = $hostname.hostid

Если переданный вместе с командой хост/узел найден в результатах запроса к Zabbix, то делаем запрос по нужному URL к Zabbix’у, фильтруем графики по ключевым словам «Memory»,»CPU lo»,»ICMP». В URL указываем параметры графиков — за последние сутки (86 400 сек.). Затем сохраняем графики в папке «C:\Scripts\zabbix_graphs\» в виде файлов .PNG и передаём в группу Telegram с помощью утилиты CURL.

if ($hostID -ne $null){# get graphids per host. $graphGetJSON = $baseJSON.clone() $graphGetJSON.method = "graph.get" $graphGetJSON.params = @{ "output" = "extend"; "hostids" = $hostID } $graphGetResult = Invoke-WebRequest -Uri $zabbixAPIURL -WebSession $session -Body ($graphGetJSON | ConvertTo-Json) -method POST -ContentType "application/json" $graphs = ($graphGetResult.toString() | ConvertFrom-Json).result $graphs = $graphs | ? {$_.name -like "*Memory*" -or $_.name -like "*CPU lo*" -or $_.name -like "*ICMP*"}# save graphs. $yyyymmdd = (Get-Date -Day 1).AddMonths(-1).toShortDateString() -replace('/') # date format is depending OS configuration $graphs | % { $graphName = $_.name# prev. day graph data. $graphURL = $zabbixGraphURL + $_.graphid + '&period=&width=800&stime=' + $yyyymmdd + '000000' $dir = "C:\Scripts\zabbix_graphs\" + $hostname.name New-Item -ItemType Directory -Force $dir $output = $dir + "\" + $hostname.name + $_.graphid + ".png" Invoke-WebRequest -Uri $graphURL -WebSession $session -Outfile $output $curlapp = 'C:\Scripts\curl\src\curl.exe' $curlchatid = $msg.chat_id $curluriphoto = """$uriphoto$curlchatid""" $curloutput = """$output""" & $curlapp -s -X POST $curluriphoto -F photo=@$curloutput --insecure } } else {Invoke-WebRequest -Method Post -Uri $uri -Body @{chat_id=$msg.chat_id; text="host not found"}}
}

От идеи к воплощению

Меня зовут Елизавета Бурдина, я руководитель продуктового офиса компании iFellow. Сегодня расскажу вам, с чего начался наш новый продукт iFellow ServiceBot.

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

Для оптимизации работы с корпоративной Service Desk платформой нам требовался удобный и понятный всем интерфейс. Хотелось создать единое пространство, аккумулирующее работу с потребностями в техподдержке.

Обсудив с коллегами и клиентами различные формы реализации такой идеи, проведя внутреннее исследование, мы остановились на разработке собственного Telegram-бота. Тем более, что Telegram сегодня — самый распространенный канал связи среди IT-специалистов. В нем уже есть большое количество чат-ботов для оформления заказов, обратной связи от пользователей, поддержки клиентов и других задач. А для профессионального Service Desk, например, Jira SD, еще нет. Это связано как со сложностью самих систем, так и особенностей информационной безопасности.

В качестве корпоративной системы поддержки использовали Jira Service Management. Интерфейс отправки запросов и отслеживания их статусов через Telegram получился более нативным и удобным. На упаковку идеи, создание MVP и полноценный запуск потребовалось всего 4 месяца.

Как это работает

  1. Telegram-бот интегрируется с корпоративной Service Desk-платформой.
  2. При поступлении запроса от пользователя информация сразу поступает в систему, где с ней может работать исполнитель.
  3. Уведомления о необходимых уточнениях, изменении статуса заявки приходят заказчику также через интерфейс бота.

От внутреннего продукта до продвижения вовне

Формат работы с Service Desk через Telegram-бота оказался настолько востребованными у некоторых наших заказчиков из банковской сферы и ритейла, что сейчас мы планируем предложить нашу разработку более широкому кругу клиентов.

На рынок представим два варианта — коробочный и в виде ядра продукта. В первом случае это будет специальный плагин для Jira Service Desk с готовой конфигурацией, устанавливаемый за пару кликов. Настройки можно менять под корпоративные задачи.

Во втором — приложение может быть интегрировано в любую Service Desk-систему. Ядро содержит сразу пять типовых технических запросов, а остальные функции будут кастомизироваться под специфические для каждой отрасли процессы.

Надеемся, решение оценят компании:

  • с большим штатом сотрудников и разветвленной филиальной сетью;
  • большим количеством обслуживаемого оборудования и ПО;
  • обеспечивающие техническую поддержку внешних пользователей, в том числе через интерфейс системы Jira Service Management.

Сейчас уже разворачиваем бот для одного из заказчиков. Конфигурация будет отличаться от нашей внутренней версии дополнительным контуром безопасности. План на 2023 год — развитие продукта и добавление дополнительного функционала.

Подробнее о рекламной платформе, способах выхода, и ее особенностях

1 — Немного о платформе:

Рекламная платформа Телеграма (Telegram Ads Platform) была запущена в конце 2021 года. Она позволяет настраивать таргетированные рекламные кампании на всю аудиторию Телеграма по СРМ-модели (точнее на всех, кто подписан на каналы от 1000 подписчиков)

-То есть в ней вы сможете охватить максимально возможную аудиторию Телеграма

-Она позволяет быстро масштабировать рекламные кампании

-И это сильно ее отличает от тех же бирж (в которых вы размещаете посты в каналах из каталога этой биржи, и чаще всего согласовывая каждый пост или пакет постов)

2 — Основные правила и особенности:

Финансовые условия выхода в ТГ Эдс напрямую:

-При прямом входе — минимальный бюджет от 2 млн евро (это и есть тот самый недешевый порог входа:))

-50% из этого бюджета замораживаются (холдятся) самим Телеграмом (и будут разморожены при условии, что вы открутите еще 10 млн евро бюджета за следующие 12 месяцев)

-Если открутите меньше 10 млн евро — то эти 50% (1 млн евро) уйдут Телеграму 🙂

-Оставшийся 1 млн евро будет доступен для рекламы сразу

-Оплата идет за показы (по CPM-модели)

-Минимальная ставка от 2 евро за 1000 показов (по последним данным — ставки в диапазоне от 2-2,7 евро, в зависимости от тематики)

-Рекламный формат — только текст (кол-во символов, включая пробелы — не более 160)

-Нельзя использовать КАПС, кодировку юникод, маркированные списки и т.д.

-Подробнее о правилах размещения рекламы в ТГ Эдс тут

Исходя из вышеописанного — на текущий момент есть 3 варианта:

1) Выходим напрямую

Ну, тут все понятно. Правила были описаны выше.

-2 млн евро минимальный бюджет

-Половина замораживается, половина доступна для открутки рекламы

-Прямой контракт с Телеграмом

-В зависимости от юрисдикции — может добавиться НДС к бюджету

-Готовьтесь к достаточно долгому подключению, если входите по заявке через сайт (есть кейсы и по 3 месяца)

*Для компаний, зарегистрированных в РФ/СНГ недоступно

2) Выходим через синдикаты

Здесь порог уже снижается. Суммы начинаются от 200-250 тыс евро. Есть комиссии.

-В таком формате по бюджетам риски снижаются в 8-10 раз

-Но, как и в прямом входе — остальные параметры идентичны (т.е. — также замораживается 50% бюджета)

-Но есть один плюс — есть потенциальная возможность быстрее разморозить холд средств, так как каждый участник/каждая группа участников снижается риски друг друга и достигает тот самый коммитмент в 10 млн евро

-При этом — нужно будет ждать определенное кол-во времени, пока наберется группа участников в один из потоков (синдикатов)

*Для компаний, зарегистрированных в РФ и Республике Беларусь недоступно. Доступно для зарубежных юрисдикций, компаниям из СНГ/ЕАЭС доступно — при условии, что отсутствуют проблемы с валютными переводами на международном уровне

3) Выход в индивидуальном формате

Сейчас этот вариант снова доступен. Но с учетом некоторых параметров (включая и проблемы с валютными переводами) стоит готовиться к минимальным бюджетам (чекам) от 35-60К евро

-Некоторое время назад были предложения от ресселеров по индивидуальному входу, с чеком от 200-300 тыс евро

-Но февральские события помножили эти предложения на ноль, и после них — Телеграм закрыл компаниям из РФ/СНГ возможность использовать ТГ Эдс

-Снова появились в небольшом количестве предложения по выходу в ТГ Эдс в индивидуальном формате

Читайте также:  Навигация по лабиринту: как найти идеальный путь для достижения своих целей

-В зависимости от условий и ситуаций этой возможностью компании из РФ/СНГ снова смогут воспользоваться

-Но с учетом постоянных изменений, проблем с валютными переводами, НДС для этих юрисдикций, чек будет гораздо больше, чем при использовании зарубежной юрисдикции (вне СНГ/ЕАЭС)

-Если выходите через зарубежную юрисдикцию — будет проще и даже дешевле

-Если выходите через РФ/СНГ-юрисдикцию — доступно, с ограничениями и нюансами, и стоимость выхода будет в среднем дороже!

4 — Особенности рекламы в ТГ Эдс (и кому может подойти лучше всего?):

-Показывается она в публичных каналах от 1000 подписчиков

-Рекламный пост показывается ниже всей ленты новостей, сообщений и контента в канале (обычно — после самого последнего просмотренного поста)

Выглядит это примерно так:

Для кого подойдёт этот рекламный канал?

Если упростить — то подойдет для достаточно широкого круга рекламодателей, но стоит ориентироваться на следующие параметры для оценки:

-B2B (с более широкой ЦА или понятным продуктом — например: финансовые, маркетинговые, бухгалтерские/юридические, ИТ-решения для бизнеса и т.д.)

-У вас достаточно большой или растущий рынок

-Вы можете обслуживать или хотите дотянуться до большого кол-ва клиентских сегментов

-Ваш бизнес неограничен территориально/локально, и не имеет жесткой физической привязки к месту или конкретной локации (те же рестораны, работающие, только в одном городе/регионе вряд ли смогут полноценно вести РК в ТГ Эдс)

*Скорее всего, не подойдет B2B/B2G компаниям, с очень нишевым продуктом, промышленным сегментом или специфической воронкой продаж, небольшой ёмкостью рынка и/или низким LTV (например — если вы продаете «башенные краны»)

5 — Что с аналитикой?

Вот тут самое интересное. Ее пока нет 🙂

Точнее на базовом уровне она есть. И вы сможете видеть:

-Ставку по СРМ

-Кол-во подписок в канал/бота (при условии, что под этот рекламный канал вы делаете отдельного бота/канал, иначе данные могут размываться, особенно, если «льете» трафик еще и с других источников)

-Можно посчитать конверсию из показов в подписку на канал/бота (но на тех же условиях, что описаны выше)

-ЮТМ-метки поставить нельзя

-Посчитать СРС, посчитать полноценное кол-во переходов, замерить конверсии, замерить эффективность на уровне креативов, и глобально посчитать базовые и необходимые показатели воронки внутри кабинета Телеграма — нельзя!

При использовании определённых механик, «ухищрений» и утилит избежать большей части таких проблем с аналитикой можно

6 — Немного цифр, примеров и кейсов:

Что по цифрам:

-По последним данным, аудитория Телеграма превысила 700 млн пользователей

-Если смотреть в разрезе по самой аудитории, то больше всего пользователей находятся: РФ/СНГ/Восточная Европа, Ближний восток и регион MENA, Юго-восточная Азия, уже меньше в Латинской Америке, меньше всего в Европе, США, Австралии

Немного статистики и кейсов:

-За первые месяцы работы официальной рекламы ТГ было откручено около 1 млн долларов бюджета (на текущий момент уже гораздо больше)

-Есть кейсы рекламы от крупных брендов из РФ: Сбер, ПИК, Яндекс, и тд..

-Очень много рекламы крипто/NFT проектов и каналов

-Средний диапазон конверсий из показов в подписку может варьироваться от 3 до 12% (12% — это прям бенчмарк, и было в самом начале, но сейчас уже будет пониже), при этом, все сильно зависит от тематики, креативов и специфики рынка/продукта

Вот немного примеров по рекламе/креативам в ТГ Эдс:

Какие сложности пришлось решать

Сама по себе задача – уместить всю функциональность Service Desk в интерфейс бота, «подружить» его с техническими и бизнес-запросами – сложная и интересная. В процессе возникало достаточно много технических ограничений, была большая работа со справочниками, типами полей.

Сложнее всего было выстроить систему информационной безопасности. Для этого потребовалось синхронизировать Telegram с нашей внутренней системой авторизации пользователей, подключенной к корпоративными решениям, почте, Jira и т. д.

Доступ к чат-боту можно получить только используя шифрованные токены. Пройти аутентификацию и авторизацию без них не получится. Механизм защиты одинаков для мобильной, web- и desktop-версий Telegram.

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

Как бот оценили сотрудники

Все, кто не пользуется корпоративным VPN и сайтом поддержки, активно переходят в Telegram и перестают отправлять запросы в Service Desk через почту. Безусловно, есть и доля сотрудников, которые пока по-прежнему работают с центром поддержки через привычный им web-интерфейс Jira.

Ежедневно бот обрабатывает порядка 10-15 заявок. Но чем больше форм запросов мы сможем реализовать для бизнес-подразделений компании, тем больше коллег будут им пользоваться в дальнейшем.

Делегирование прав на сброс паролей и разблокировку учетных записей

Представим, наша задача – предоставить группе HelpDesk право на сброс пароля и разблокировку аккаунтов пользователей в домене. Итак, создадим новую группу в AD с помощью PowerShell:

New-ADGroup "HelpDesk" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupScope Global

Добавьте в группу нужных пользователей:

Add-AdGroupMember -Identity HelpDesk -Members ivanovaa, semenovvb

Delegate Control

Выберите группу, которой вы хотите предоставить административные полномочия.

выбрать группу для делегирования полномочий

  • Create, delete, and manage user accounts;
  • Reset user passwords and force password change at next logon;
  • Read all user information;
  • Create, delete and manage groups;
  • Modify the membership of a group;
  • Manage Group Policy links;
  • Generate Resultant Set of Policy (Planning);
  • Generate Resultant Set of Policy (Logging);
  • Create, delete, and manage inetOrgPerson accounts;
  • Reset inetOrgPerson passwords and force password change at next logon;
  • Read all inetOrgPerson information.

Либо создайте собственное задание делегирования (Create a custom task to delegate). Я выберу второй вариант.

Create a custom task to delegate

User Object

В списке разрешений нужно выбрать те привилегий, которые вы хотите делегировать. В нашем примере мы выберем право на разблокировку (Read lockoutTime и Write lockoutTime) и сброс пароля (Reset password).

Read lockoutTime и Write lockoutTime

Нажмите Next и на последнем экране подтвердите назначение выбранных полномочий.

мастер делегирования полномочий в Active Directory

Set-ADAccountPassword petricdb -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “PPPPa$$w0rd1” -Force -Verbose) –PassThru

Пароль должен сброситься успешно (если он соответствует доменной политике паролей).

Должна появится ошибка доступа, т.к. вы не делегировали полномочий на создание учетных записей.

Для контроля действий пользователей, которым вы делегированными административные права, вы можете использовать журналы контроллеров домена. Например, вы можете отследить кто сбросил пароль пользователя в домене, узнать кто создал учетную запись пользователя в AD или отследить изменения в определённых группах AD.

Особенности делегирования прав в Active Directory

Административные права в AD можно делегировать на довольно детальном уровне. Одной группе можно предоставить право на сброс пароля в OU, другой – на создание и удаление аккаунтов, третьей на сброс пароля. Можно настроить наследование разрешений на вложенные OU. Вы можете делегировать права в AD на четырех уровнях:

  1. Сайта AD;
  2. Всего домена;
  3. Конкретной OU в Active Directory;
  4. Конкретного объекта AD.

Несколько рекомендаций по правильному использованию делегирования администраивных полномочий в AD:

  • Не рекомендуется делегировать разрешения непосредственно для кокретных учетных записей пользователей. Вместо этого создайте в AD новую группу безопасности, добавьте в нее пользователя и делегируйте полномочия на OU для этой группы. Если вам понадобится предоставить такие же права в домене еще одному пользователю, вам будет достаточно добавить его в группу безопасности;
  • Старайтесь не использовать запрещающих разрешений, т.к. они имеют приоритет над разрешающими;
  • Периодически выполняйте аудит делегированных полномочий в домене (отчет с текущими списками разрешений на OU можно сгенерировать с помощью PowerShell).
  • Не делегируйте права на управление OU с административными аккаунтами. Иначе легко может произойти ситуация, когда любой сотрудник службы поддержки может сбросить пароль администратора домена. Все чувствительные пользователи и группы с повышенными привилегиями нужно размещать в отдельной OU, на которую не распространяется правила делегирования.

Предоставление права на добавление компьютеров в домен AD

По умолчанию любой пользователь домена может присоединить в домен 10 компьютеров. При добавлении в домен 11-го компьютера появится ошибка:

Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased.

You have exceeded the maximum number of computer accounts you are allowed to create in this domain

Вы можете изменить это ограничение на уровне всего домена, увеличив значение в атрибуте ms-DS-MachineAccountQuota (ссылка). Либо (гораздо правильнее и безопаснее), делегировав право на ввод компьютеров в домен в определенной OU конкретной группе пользователей (helpdesk). Для этого нужно предоставить право создавать объекты типа (Computer objects). В мастере делегирования выберите Create selected objects in this folder.

Create selected objects in this folder

А в секции Permissions выберите Create All Child Objects.

делегировать право на создание объектов в AD

Делегирование прав в Active Directory с помощью PowerShell

С помощью PowerShell вы можете вывести список прав, которые делегированы на OU или изменить текущие разрешения. Для получения и изменения прав в Active Directory используются командлеты
Get-ACL
и
Set-ACL
(эти же командлеты PowerShell используются для управления NTFS разрешения на файлы и папки).

Следующий простой скрипт выведет список нестандартных разрешений, которые делегированы на определенное организационное подразделение в AD:

Вы можете получить отчет с разрешениями в виде графической таблицы Out-GridView:

Экспорт делегированных полномочий на OU в Active Directory

В полученном отчете сразу видно, что для группы HelpDesk делегированы права на сброс паролей пользователей в OU.

Для делегирования прав на OU можно использовать утилиту dsacls. Например:

Также вы можете назначить права на организационный контейнер с помощью PowerShell (в этом примере делегируются права на сброс пароля):

По аналогии с помощью PowerShell можно делегировать и другие права на организационные контейнеры AD.

Читайте также:  Разблокируйте информацию DNS онлайн прямо сейчас

Отправка в чат Telegram уведомлений с сервера

С помощью ранее созданного бота и полученных ID можно отсылать с сервера уведомления в Telegram чат, и таким образом получать какие-то интересные нам данные или алерты.

Для отправки сообщения в чат, нужно использовать следующий URL:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id=336116180 -d text="Доброе утро, страна"

отправка сообщений в telegram бот через api и url

Для чего можно использовать такие Telegram уведомления? Например, при создании резервной копии вы можете отправлять уведомления о ее создании или же отправлять ссылку на скачивание копии в чат с ботом. Вы можете отправлять себе в Telegram уведомления с информацией о сбоях в системе. Можно добавить в крон выполнение каких-либо проверок с последующей отправкой в Telegram.

Еще пример использования подобных уведомлений:

Добавьте этот код в /etc/profile и будете получать уведомления в Telegram при каждом входе пользователей на сервер:

отправка сообщений в telegram через post и curl

Хочу напомнить, что во всех командах, нужно указывать именно своей token(API) и ID чата.

Какие задачи решает бот

Во-первых, помогает организовать оперативную IT-поддержку компании и сотрудников. Больше никаких сложных интерфейсов сайтов и систем, подключений к VPN и проблем при миграции с платформы на платформу – все удобно, просто и всегда под рукой. Достаточно написать запрос в Telegram и вопрос будет оперативно принят командой техподдержки.

С помощью бота можно:

  • подать запрос на доступ к какому-либо ПО;
  • заказать необходимое оборудование для рабочего места;
  • оставить заявку на техобслуживание;
  • сообщить о сбоях в работе систем;
  • заказать справки в отделе кадров, бухгалтерии;
  • оформить пропуски гостям.

Во-вторых, бот выступает единым окном для обращения в Service Desk и коммуникации с различными подразделениями. Он улучшает и упрощает внутреннее взаимодействие сотрудников, ускоряет работу техподдержки и других служб, и значительно экономит время всех участников процесса. Возможность контактировать автоматизированным способом — хорошее решение для распределенных команд на проектах.

Что планируем добавить

  1. Возможность согласовывать и продвигать по жизненному циклу запросы непосредственно из интерфейса бота.
  2. Возможность выполнять задачи через Telegram. Это позволит инженерам технической поддержки улучшить качество сервиса в целом.
  3. Возможность оформлять запросы на закупки компании. Это сложная, многоступенчатая форма с серьезным циклом согласований, так как с ней будут работать несколько бизнес-подразделений. Сейчас решаем, какие «массивные» вопросы добавлять в интерфейс чат-бота, чтобы не перегрузить его.

Просмотр и удаление назначенных прав в Active Directory

На любую OU в AD можно назначить любое количество правил делегирования. Вы можете получить список групп и делегированные им права в свойствах OU в консоли ADUC. Перейдите на вкладку Security.

Здесь содержится список объектов AD, которым предсоатвлены разрешения на этот контейнер. Список предоставленных полномочий можно посмотреть на вкладке Advanced. Как вы видите для группы HelpDesk разрешен сброс паролей.

расширенные настройки делегирования в AD

Вы можете лишить определенную группу администраивных прав, назначенных ранее через делегирование. В списке разрешений найдите группу, который вы делегировали права и нажмите Remove.

Также со вкладки Security -> Advanced вы можете самостоятельно настроить делегирование полномочий, назначая нестандартные разрешений различным группам безопасности.

Теперь переходим непосредственно к запуску РК

7 — Регистрация, создание аккаунта, пополнение бюджета:

Процесс выглядит следующим образом:

2) Проходим авторизацию и привязываем свой ТГ аккаунт (нажимаем: Log in > Указываем номер телефона > Нажимаем Next > Подтверждаем вход в платформу в ТГ — нажатием Confirm > Выбираем свой аккаунт (персональный) или создаем организацию > Заполняем анкету)

3) Создаем проект и организацию

4) Отправляем заявку на подключение, заполнив форму

-Ждем подключения — точнее проходим процесс подключения (напрямую — достаточно долго)

5) Пополняем бюджет

Создаем первую РК и креатив:

1) Создаем новое объявление (нажимаем «Create new ad»)

2) Начинаем настраивать первый креатив и объявление (открывается интерфейс создания объявления)

-Указываем заголовок (его видите только вы, нужен для внутренней идентификации)

-Добавляем текст объявления (не более 160 символов)

-Укажите ставку за СРМ (минимально — от 2 евро за 1000 показов)

-Укажите бюджет, который вы готовы потратить на данное рекламное объявление

*Язык — не означает регион/страну, в которой будет идти показ (в целом — в ТГ Эдс нет возможности указывать конкретные регионы и территории)

-Укажите тематики (в которых Вы планируете давать рекламу)

-Укажите конкретные каналы, в которых вы хотели бы показать рекламу (если есть — лимит до 50)

-Исключите тематики, в которых вы не хотите показывать рекламу (рекомендуем это делать)

-Исключите каналы, в которых вы не хотите показывать рекламу (лимит — до 50)

-Поставьте галочку согласия с условиями размещения рекламы

-Нажмите создать объявление (Create Ad)

*Важно — после создания объявления, изменить параметры таргетинга не выйдет (но можно создать копию объявления и перезапустить его с обновлениями, нажав кнопку создания похожих объявлений — Create a similar ad)

Какие разделы и функции еще есть в рекламной платформе?

1) Статусы объявлений:
-Stopped (остановленные – статус по умолчанию для всех объявлений и черновиков)
-In Review (на проверке у модераторов)
-Declined (по сути – отклоненные объявления, требующие корректировок)
-Active (объявления запущены и показываются)
-On Hold (приостановленные объявления, вы можете запустить их в любой момент)

2) Информация об объявлении:
-Просмотр статистики
-Изменение бюджета
-Корректировка содержания (кроме параметров таргетинга)

3) Рекламный бюджет:
-Текущий бюджет (изменение бюджетов кампании или объявлений)
-Удаление объявлений, перезапуск новой копии с корректировкой бюджета
-История транзакций

Общие рекомендации при запуске кампаний (и некоторые наблюдения):

-По возможности используйте отдельные каналы/чат-боты для рекламных кампаний в ТГ Эдс (для больших возможностей по оценке эффективности РК и подсчета некоторых метрик)

-Чат-боты позволяют использовать больше возможностей для рекламных кампаний в ТГ Эдс и заранее простраивать цепочки коммуникаций и дальнейшие шаги в воронке, для аудитории приходящей через ТГ Эдс

Создание чат-бота в Telegram

BotFather создать нового бота telegram

Нажмите START. Чтобы создать нового бота, выберете в меню /newbot, введите имя бота в формате “имя_bot». После создания бота, вы получите API токен бота, который нужен будет в дальнейшей настройке.

https://api.telegram.org/bot<token>/getUpdates
— где <token> это API который выдал BotFather.

user_id бота telegram На скриншоте выделен ваш ID.

Итак, мы создали бота в Telegram и получили авторизационные данные.

Управление Linux сервером в чат-боте Telegram

Есть набор скриптов, которые позволяет управлять сервером Linux из Telegram чата, отправляя различные команды в чат с ботом. Для этого нужно установить Python, ряд инструментов и загрузить на сервер скрипты.

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# yum install xz -y
# tar -xpJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# yum groupinstall "Development tools" -y

# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

установка Python 3 в centos 7

Создайте симлинк для Python:

# ln -s /usr/local/bin/python3 /usr/bin/python3

И установите ПО для самого бота:

# pip3 install python-telegram-bot --upgrade

pip3 install python-telegram-bot

  • bot.sh
  • config.py
  • bot.py

Рассмотрим файл config.py. В нем нам нужно указать token(API) и ID вашего чата с ботом, а также путь до директорий с бэкапами и директории, размер которой вы будете в дальнейшем проверять:

config.py настройки telegram бота

Файл bot.sh не требует настройки, в нем лишь указываем путь до bot.py:

bot.sh

И самый основной файл, который собственно и позволит нам управлять сервером, это bot.py. В нем описаны функции, которые будут доступны в чате с ботом и собственно туда, мы можем добавлять свой собственный функционал. Например, в первом блоке описываются доступные команды бота в чате:

python скрипт для telegram бота

Тут описываются все функции, которые будут доступны, после ввода команды /help.

Ниже описывается сама функция, например,

#функция команады ifconfig
def ifconfig(bot, update):
reload(config)
user = str(update.message.from_user.id)
if user in config.admin: #если пользовательский id в списке admin то команда выполняется
run_command("ifconfig")
bot.sendMessage(chat_id=update.message.chat_id, text=textoutput)

И эту функцию, нужно описать как команду:

ifconfig_handler = CommandHandler('ifconfig', ifconfig)
dispatcher.add_handler(ifconfig_handler)

То есть как видим, это выполнение стандартной функции проверки сетевых настроек ifconfig.

При знакомстве с ботом я попытался добавить собственную команду, например для проверки Apache:

# service httpd status

Но только через настройку данного файла это не сработало. Как я понял, здесь можно выполнить только команду описанную одним словом или символами. Я решил проблему создав файл apache_status.sh с содержимым:

#!/bin/bash
service httpd status

И создал на него симлинк:

Теперь при вызове команды apachestatus, у меня выводит статус веб-сервера apache:

apachestatus

# touch /etc/systemd/system/telegram-bot.service
# chmod 664 /etc/systemd/system/telegram-bot.service

После чего заходим в файл сервиса:

# nano /etc/systemd/system/telegram-bot.service

И добавляем содержимое:

[Unit]
Description=Telegram bot
After=network.target
[Service]
ExecStart=/root/admin/bot.sh
[Install]
WantedBy=multi-user.target

Теперь добавляем сервис в автозагрузку и запускаем:

# systemctl start telegram-bot.service
# systemctl enable telegram-bot.service
# systemctl status telegram-bot.service

Теперь, если в чате с вашим ботом ввести /help, вы получите список доступных команд.

список доступных команд в telegram боте

Например, в данный момент у меня на сервере остановлен веб-сервер Apache:

команда состояния сервера в telegram боте

Запустим его на сервере и проверим статус через Telegram:

проверка статуса apache из telegram

Еще несколько примеров выполнения команд:

команды для сервера linux в telegram боте

Таким образом, вы можете выполнять мониторинг своего Linux сервера или даже частичное администрирование через Telegram, что поможет сильно сократить время на выполнение типовых действий.

Так же хотел бы заметить, что авторизация сервера с ботом происходит именно по ID и token(API) (любой другой человек, не зная ваших данных, подключиться не сможет).

На момент выпуска статьи, тестовый бот удален.

8 – Итоги, и как войти (еще раз)

1 – Напрямую. Бюджет от 2 млн евро

2 – Через синдикаты. Ориентировочный бюджет от 200-250 тыс евро

3 – Индивидуальный вход. Ориентировчный бюджет от 30-60 тыс евро

Спасибо за внимание! Надеемся, что материал оказался полезен!

Оцените статью
Хостинги