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())

分享联系人回复没有文字