Задать вопрос
@Maxim_Evg3nievich

Телеграм бот, как обработать геолокацию?

Учу php, пытаюсь написать бота для телеграм. Запрашиваю геолокацию через кнопку с request-location
В ответе приходит точка на карте.Не понимаю как обработать её и записать в переменные $lat,$lon
код:
$output = json_decode(file_get_contents('php://input'),true);
$id = $output['message']['chat']['id'];
$token='***';
$ApiKey='***';      
$message= $output['message']['text'];
$Location=$output['longitude']['latitude'];
switch ($message) {
case '/start':
    $message = 'Привет! Нажми отправить местоположение чтобы начать.';
    sendMessage($token, $id, $message . KeyboardMenu());
    break;
case $Location:
    $lat = $Location['latitude'];
    $lon = $Location['longitude'];
    if (isset($Location['longitude']['latitude']))
        {
            $message = "Отлично! ваше местонахождение определено." .$lat. $lon;
        }
   else
       {
            $message ="error";
       }
   sendMessage($token, $id, $message,$lat,$lon . KeyboardMenu().get_address($lat, $lon, $ApiKey));
break;
 default:
    $message='Неправильный запрос.';
    sendMessage($token,$id,$message.KeyboardMenu());
function sendMessage($token, $id,$message)
{
file_get_contents("https://api.telegram.org/bot" . $token . "/sendMessage?
chat_id=" . $id . "&text=".$message);
}
function KeyboardMenu(){
    $buttons = [[['text'=>"Отправить местоположение", 
'request_location'=>true]],[['text'=>"Показать автосервисы"]],[['text'=>"Справка"]]];
     $keyboard =json_encode($keyboard=['keyboard' => $buttons,
                                        'resize_keyboard' => true,
                                        'one_time_keyboard'=> false,
                                        'selective' => true]);
   $reply_markup ='&reply_markup='.$keyboard.'';
   return $reply_markup;
}

Спасибо!
  • Вопрос задан
  • 3609 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
kapnuu
@kapnuu
$Location=$output['message']['location'];
только надо помнить, что message не всегда содержит location. впрочем, text там есть тоже не всегда. перед тем, как обрабатывать ответ, советую глазами посмотреть полученный json — бывает полезно)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы