Как принять от пользователя номер телефона в телеграм боте и сохранить его в переменную на php?
Ребята, хелп. Весь мозг сломал. Делаю заказ обратного звонка через бота телеграм на php. Не могу понять, как принять от пользователя номер телефона и записать его в переменную, чтобы дальше работать с ней.
Чтобы запросить номер телефона у пользователя надо указать параметр request_contact=true для кнопки (https://core.telegram.org/bots/api#keyboardbutton), тогда при нажатии кнопки будет передаваться номер телефона, который привязан к аккаунту. Второй вариант - запросить номер телефона, предложить его ввести.
Далее полученный номер обрабатываете как вам надо.
Делаете различные состояния для ботов. В зависимости от диалога меняете состояние. На время ввода телефона бота выставляете в ожидание ввода номера. Полученное сообщение проверяете по маске на номер телефона, если это номер, то принимаете и меняете состояние, иначе пишите, что номер введен не корректно и просите повторить ввод.
Звучит страшно, но это все просто.
Если кратко - надо ввести состояния бота и с ними работать
nllm: все верно. Я уже видел подбный ответ, вы у когото оставляли. С маско все понятно, самое интересное, как переключить это состояние. Я самотрел вашего demobot, вроде как там есть описание переключения, но все урезано и не понятно
Олег Кушев: да, там сильно упрощено. Самый простой вариант хранить состояние в базе. Сохраняем chat_id и текущее состояние. Обработчики команд пишем с условием проверки состояний
Вот мой метод:
public void setButtons(SendMessage sendMessage) {
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
KeyboardButton keyboardButton = new KeyboardButton("Send number phone");
KeyboardButton keyboardButton1 = new KeyboardButton("Send location");
Message message = new Message();
List keyboardRowList = new ArrayList<>();
KeyboardRow keyboardFirstRow = new KeyboardRow();
keyboardFirstRow.add(keyboardButton);
keyboardFirstRow.add(keyboardButton1);
yan2203, Вот сейчас сам ищу. Нигде нет точной информации, мол "нажимая на кнопку, значение надо вернуть в переменную..." и т.д.
Может стоит сменить библиотеку?