【问题标题】:Telegram api, can't get phone numberTelegram api,无法获取电话号码
【发布时间】:2018-03-01 02:29:17
【问题描述】:

在代码中我写了一些 cmets。 我需要获取用户的电话号码。 Api 电报允许您使用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("#############");

    }
 }
}

【问题讨论】:

    标签: java telegram telegram-bot


    【解决方案1】:

    删除此行进行检查

    if(update.hasMessage() && update.getMessage().hasText())
    

    分享联系人回复没有文字

    【讨论】:

      【解决方案2】:

      当用户按下“分享你的号码>”按钮时,对象 update.getMessage().getContact() 不为空

      尝试像这样更改您的代码:

      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("#############");
      

      }

      【讨论】:

        猜你喜欢
        • 2016-11-13
        • 2018-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        相关资源
        最近更新 更多