1) Ставим из портов trelegram-cli
|
cd /usr/ports/net-im/telegram make install |
2) Заходим в telegram-cli, регистрируемся. По help — список комманд.
Нюансы: сначала нужно добавить контакты. Отправлять сообщения тоже можно не сразу, а только после выполнения комманды contact_list. Или запускать telegram-cli с ключем -W
Пробелы в именах при операциях с коммандами необходимо заменять на _
Например отправка сообщения:
|
msg Gribov_Pavel "Привет" |
3) Для получения списка контактов и их состояния, можно использовать что-то типа на PHP (требует доработки):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#!/usr/local/bin/php <?php /* * (с) 2016 Грибов Павел * http://грибовы.рф * * Если исходный код найден в сети - значит лицензия GPL v.3 * * В противном случае - код собственность ГК Яртелесервис, Мультистрим, Телесервис, Телесервис плюс * */ $path="/usr/local/bin/telegram-cli"; //где находится консольный телеграм whereis telegram-cli function GetContacts(){ global $path; $result=array(); $rez=`( echo "contact_list" ; echo "safe_quit" ) | $path -RCW -U root | grep -v halt | grep -v "All" | grep "under" -A 100000 | grep -v "licen" `; $res_arr= explode("\n", $rez); foreach ($res_arr as $value) { $value=trim($value); $value=preg_replace("/[^a-zA-ZА-Яа-я0-9\s]/","", $value); if ($value!=""){ $value= str_replace(" ", "_", $value); $result[$value]["name"]=$value; }; }; return $result; }; function StatusInfo($contact_list){ return $contact_list; }; $contact_list=GetContacts(); $contact_list=StatusInfo($contact_list); var_dump($contact_list); ?> |
Из огромных минусов такого способа информирования — нельзя знать наверняка, получил контакт сообщение или нет. Во первых нет в API получения статуса отправленого сообщения, а во вторых — при свернутом в трей телеграмме, статус контакта будет offline. Т.е. нет уверенности, на самом деле контакт в оффлайне, или у него приложение просто свернуто. Этот огромный жирный минус перечеркивает все достоинства Telegram, и соответственно использовать его для информирования например событий в Zabbix не представляется возможным