Вопрос такой, я хочу сохранить у пользователя chat_id. Изначально система не знает его. Когда он переходит к боту и нажимает /start то появляется chat_id. Как можно этот caht_id перехватить у данного пользователя и занести его в систему. То что пользователь имеет данный chat_id. Попробовал вот так написать, но когда он уходит из сайта ничего не сохраняет в бд
Кнопка перехода на бота следующий
frontend/views/setting.php<a href="http://telegram.me/HollandSotrudbot?start=<?= $model->token ?>" target="_blank" class="black-btn btn-lg">
<i class="fa fa-paper-plane"></i> Подключить
</a>
В этом же контроллере
frontend/controllers/SiteController.phppublic function actionSetting($id)
{
$model = User::findOne($id);
return $this->render('setting', ['model' => $model]);
}
В контроллере телеграмма frontend/controllers/TelegramController.php
namespace frontend\controllers;
use app\models\User;
use frontend\components\TelegramComponent;
use yii\db\Exception;
use yii\web\Controller;
public function actionWebhook()
{
try{
$content = json_decode(file_get_contents('php://input'));
if(isset($data['message']['chat']['id']))
{
$chatId = $content['message']['chat']['id'];
$message = isset($data['message']['text']) ? $data['message']['text'] : false;
$send = false;
if (strpos($message, '/start') !== false) {
$explode = explode('', $message);
$token = isset($explode[1]) ? $explode[1] : false;
$data = [
'raw' => $token,
'chat_id' => $chatId,
];
$send = Telegram::start($data);
} else {
$send = 'Комманда не найдена. Если Вы уверены в том, что ошибка, обратитесь в тех поддержку';
}
$send = $send ? '' : 'Что-то пошло не по плану. Обратитесь в тех.поддержку';
}
} catch (Exception $e){
$e->getMessage();
}
}
В моделе Telegram.php
<?php
namespace frontend\models;
use common\models\User;
class Telegram
{
public static function start($data){
return self::login($data);
}
public static function login($data)
{
$token = $data['raw'];
if ($token && $user_id = User::findOne(['token' => $token])) {
$user = User::findOne($user_id->id);
if ($user->telegram_chat_id) {
return "Уважаемый $user->name, Вы уже авторизованы в системе. ";
}
$user->telegram_chat_id = $data['chat_id'];
$user->save();
return "Добро пожаловать, $user->first_name $user->last_name. Вы успешно авторизовались!";
} else {
return "Извините, не удалось найти данный токен!";
}
}
}
setWook установлен и я через контроллер могу отправить сообщение, но вот чтобы сохранить не могу