Telegram api,无法获取 phone 号码
Telegram api, can't get phone number
在代码中我写了一些注释。
我需要获取用户的 phone 号码。 Api telegraph 允许您使用 keyboardButton.setText("Share your number>").setRequestContact(true);
用户接收消息并单击一次发送联系人。之后我尝试在控制台 System.out.println(update.getMessage().getContact());
中显示联系人,但我总是得到 null
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
long chat_id = update.getMessage().getChatId();
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
}
}
当用户按下按钮时对象 update.getMessage().getContact() 不为空 "Share your number >"
尝试像这样更改您的代码:
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}else{
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
删除此行进行检查
if(update.hasMessage() && update.getMessage().hasText())
分享联系人回复没有文字
在代码中我写了一些注释。
我需要获取用户的 phone 号码。 Api telegraph 允许您使用 keyboardButton.setText("Share your number>").setRequestContact(true);
用户接收消息并单击一次发送联系人。之后我尝试在控制台 System.out.println(update.getMessage().getContact());
中显示联系人,但我总是得到 null
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
long chat_id = update.getMessage().getChatId();
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
}
}
当用户按下按钮时对象 update.getMessage().getContact() 不为空 "Share your number >"
尝试像这样更改您的代码:
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}else{
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
删除此行进行检查
if(update.hasMessage() && update.getMessage().hasText())
分享联系人回复没有文字