Telegram messenger позволяет программисту создавать свой собственный бот.
у моего бота есть клавиатура пользователи могут выбрать каждый ключ, и бот покажет правильный ответ.
в моем примере, когда пользователь нажимает «mobile» или «/ mobile», ответом бота становится новая клавиатура: «sony», «Nokia», «Lg». и нажав nokia, бот покажет правильный ответ
Также пользователь может напрямую напечатать «Nokia» и ответить на него роботу.
моя проблема заключается в:
Есть ли зачем заставлять пользователей выбирать nokia, «только» после пресса моб?
другое слово, когда пользователь вводит nokia напрямую, бот показывает ему: «сначала нужно выбрать мобильный»
$data = json_decode(file_get_contents('php://input'), true);
$client = new Zelenin\Telegram\Bot\Api($token);
$chatid = $data['message']['chat']['id'];
$text = $data['message']['text'];
$messageid = $data['message']['message_id'];
if($text == "/mobile" || "mobile"){
$params = array('chat_id' => $chatid, 'action' => 'typing');
$response = $client -> sendChatAction($params);
//keyboard
$keyboard = array("sony \xF0\x9F\x93\x9E","nokia \xF0\x9F\x8E\xA5","LG \xF0\x9F\x92\xB0");
$start_keys = array('keyboard'=>array($keyboard));
$encodedMarkup = json_encode($start_keys);
$message = " \xF0\x9F\x93\x8C please press correct key ...";
$content = array('chat_id' => $chatid,'reply_markup' => $encodedMarkup,'text' => $message);
$response = $client -> sendMessage($content);
$response = $client -> forwardMessage(array('chat_id' => $agroup,
'message_id' => $messageid, 'from_chat_id' => $chatid));
} else {
$params = array('chat_id' => $chatid, 'action' => 'typing');
$response = $client -> sendChatAction($params);
$message = " \xF0\x9F\x93\x8C please press ...";
$response = $client -> sendMessage($content);
}
?>
Вы можете добавить поле с именем menu в таблицу users с установленным по умолчанию значением SelectMobile.
Когда пользователь нажимает кнопку, отличную от мобильной, установите флажок, если это был SelectMobile, попросите его сделать это. Когда пользователь нажмет на мобильный, обновите это поле до SelectBrand. Опять же, если пользователь отправляет товары, отличные от торговых марок, скажите ему, что он должен отправить указанную торговую марку.
Других решений пока нет …