У меня проблемы с перерывом в рабочем процессе. В настоящее время работают следующие элементы:
Внешний веб-сервер может отправлять HTTPS-запрос Telegram Bot, используя следующую функцию PHP:
function sendMessage($chatID, $messaggio, $token) {
//echo "sending message to " . $chatID . "\n";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chatID;
$url = $url . "&text=" . urlencode($messaggio);
$ch = curl_init();
$optArray = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $optArray);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
Эта функция включает внешний сервер, на котором бот отправляет сообщения указанному пользователю телеграммы или в групповом чате.
Telegram Bot может выполнять сценарии python при выполнении соответствующих команд
updater = Updater(token=creds.telegram_token, use_context=True)
dispatcher = updater.dispatcher
def help(update, context):
with open('help.txt', 'r') as file:
data = file.read()
context.bot.send_message(chat_id=update.effective_chat.id, text=data)
print('helped')
help_handler = CommandHandler('help', help)
dispatcher.add_handler(help_handler)
updater.start_polling()
Следующий скрипт python работает 24/7 на экземпляре AWS EC2 (очевидно, он не просто отображает справочный документ). Пользователи, которые выполняют /help
в групповом чате, где бот находится успешно, заставляют его запускать справочную функцию.
Проблема: Я хотел бы, чтобы внешний сервер быть в состоянии вызвать функцию справки на экземпляре EC2. Я смог бы выполнить это sh, если бы второй бот просто отправил команду /help
первому боту, за исключением того, что telegram не позволяет ботам общаться друг с другом.
Причина, по которой я Это связано с тем, что в python я разработал сложный объектно-ориентированный сценарий, предполагая, что вызов сценария с внешнего сервера будет тривиальным. С тех пор я обнаружил, что боты не могут общаться друг с другом и что, похоже, нет способа вызвать команду помощи напрямую из запроса HTTPS.
Я хотел go через API телеграммы, потому что в настоящее время Экземпляр EC2 занес в белый список только IP-адреса телеграмм API. Из соображений безопасности я не чувствую себя комфортно, добавляя внешний сервер в белый список, потому что он находится на общем хостинге, который часто является жертвой хакерских атак. Даже если бы я использовал этот подход, я не знаю, как запустить сценарий для запуска на экземпляре EC2 из простого запроса HTTPS. Шлюз API может запускать лямбда-функцию, но требуемый сценарий слишком сложен для лямбды и использует пакеты python, не поддерживаемые лямбда.
Я нашел несколько похожих вопросов, где ответ был «установить веб-сервер на экземпляре EC2 для приема входящих запросов HTTPS. " Вероятно, это мой единственный вариант, но ответы не дали никаких советов о том, как это сделать.
Я не думаю, что возможно установить сценарии python непосредственно на внешнем веб-сервере. потому что это общий хостинг без доступа к оболочке.
Есть ли какой-нибудь совет? Кажется, что такой простой шаг к go из файла php к сценарию python, но все очевидные маршруты заблокированы по соображениям безопасности.