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 (требует доработки):
#!/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 не представляется возможным