2015-07-18 23 views
7

Tôi có một bàn phím tùy chỉnh nhưng để xử lý câu trả lời tôi cần một lực lượng trả lời vì vậy tôi nhận được câu hỏi trở lại trong thông báo tiếp theo. Tôi đã làm điều này:API bot Telegram: Tôi có thể trộn bàn phím tùy chỉnh và lực đẩy không?

   var opts = { 
       reply_markup: JSON.stringify({ 
       keyboard: [['OK','Cancel']], 
       one_time_keyboard: true, 
       resize_keyboard: true, 
       force_reply: true 
       }) 
      }; 

Bàn phím hoạt động nhưng không phải là lực đẩy. Buộc trả lời các tác phẩm của riêng mình? Tôi không thể sử dụng nó kết hợp với một bàn phím tùy chỉnh?

Trả lời

4

Có thể sẽ rất muộn để trợ giúp bạn, nhưng ở đây nó sẽ diễn ra.

Hiện nay chỉ có một reply_markup lĩnh vực là cho phép và lĩnh vực này chỉ phải chứa một trong các loại sau đây: ReplyKeyboardMarkup hoặc ReplyKeyboardHide hoặc ForceReply (xem docs)

Trong mọi trường hợp, bạn có thể sử dụng ReplyKeyboardMarkup rằng sẽ bật lên một phong tục bàn phím trong ứng dụng người dùng trực tiếp và mã bot của bạn để nó chỉ chấp nhận một trong những câu trả lời trong bàn phím tùy chỉnh của riêng bạn.

Hơn nữa, nếu bạn thực sự muốn buộc người dùng trả lời, bạn có thể tiếp tục gửi cùng một ReplyKeyboardMarkup sau mỗi câu hỏi không hợp lệ của mỗi người dùng.

2

Bạn cần phải xác định đánh dấu của bạn như thế này:

$replyMarkup = array(
    'force_reply' => true, 
    'selective' => true 
); 

Nếu bạn cần phải có custom keyboard bạn có thể làm theo này:

$keyboradsValue = array(
    array("button 1","button 2"), 
    array("button 3","button 4"), 
); 
$replyMarkup = array(
    'keyboard' => $keyboradsValue, 
    'force_reply' => true, 
    'selective' => true 
); 

Sau đó bạn cần để mã hóa đối tượng của bạn sử dụng json_encode

$encodedMarkup = json_encode($replyMarkup, true); 

Cuối cùng, bạn chỉ cần đặt mã ở trên vào truy vấn của mình tring ở phần còn lại của sendMessage.

+0

Bạn có thực sự thử điều này không? –

+0

có! Nó hoạt động chính xác –

Các vấn đề liên quan