У меня есть телеграм бот, к которому привязано два вебхука - с телеграм апи и другим сервисом. Проблема заключается в том, что вебхуки у меня используются в разных файлах, которые друг от друга никак не зависят, но вебхук на другом сервисе не получает данных с телеграма (например chat_id и message_id). Он может работать, если подставлять вручную все айди и прочие значения
Не понимаю, каким образом можно брать данные с телеграма и не использовать конкретные айди при отправке сообщений
Код файла с телеграм вебхуком:
<?php
// Делается запрос
$method = 'setWebhook';
$url = 'https://api.telegram.org/bot' . BOT_TOKEN . '/' . $method;
$options = [
'url' => 'https://incrediblebot.ru/notifications_bot.php'
];
// То, что возвращается из запроса
$response = file_get_contents($url . '?' . http_build_query($options));
var_dump($response);
// Функция отправки сообщений
function sendRequest($method, $post = '') {
$ch = curl_init('https://api.telegram.org/bot' . BOT_TOKEN . '/' . $method);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
}
$data = json_decode(file_get_contents('php://input'), JSON_OBJECT_AS_ARRAY);
$chat_id = $data['message']['chat']['id']; // ID чата
$chat_type = $data['message']['chat']['type']; // Тип чата
$message = $data['message']['text']; // Текст сообщения
$user_id = $data['message']['from']['id']; // ID юзера
$username = $data['message']['from']['username']; // Юзернейм
$message_id = $data['message']['message_id']; // ID сообщения
$callback_query = $data->callback_query;
$callback_query_id = $callback_query->id;
$callback_data = $callback_query->data;
switch ($callback_data) {
case 'start':
$job_id_get = job_id_get($job_id);
exec('curl --request POST --header "PRIVATE-TOKEN: <token>" "https://example.com"');
$post = [
'chat_id' => $chat_id,
'text' => $callback_data . ' ' . $job_id_get['job_id']
];
sendRequest('sendMessage', $post);
break;
}
Код файла с вебхуком другого сервиса:
$input = file_get_contents("php://input");
$json = json_decode($input);
function sendRequest($method, $post = '')
{
$ch = curl_init('https://api.telegram.org/bot <TOKEN>' . '/' . $method);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$json = curl_exec($ch);
curl_close($ch);
}
if ($json) {
$ref = $json->object_attributes->ref;
$project_name = $json->project->name;
$name = $json->user->name;
$username = $json->user->username;
$stages = $json->object_attributes->stages[0];
if ($status == 'manual') {
job_id($job_id);
$post = [
'chat_id' => 123,
'text' => ' <b>Webhook caught manual event!</b>',
'parse_mode' => 'html',
$start_button = [[['text' => 'Start', 'callback_data' => 'start']]],
'reply_markup' => inline_keyboard($start_button)
];
sendRequest('sendMessage', $post);
}
}