2015-07-18 6 views
7

Ho una tastiera personalizzata, ma per elaborare la risposta ho bisogno di una risposta forzata, quindi ottengo la domanda nuovamente nel messaggio successivo. Ho fatto questo:API bot di Telegram: Posso mescolare una tastiera personalizzata e una force_reply?

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

La tastiera funziona ma non il force_reply. Risposta forzata alle proprie opere? Posso non usarlo in combinazione con una tastiera personalizzata?

risposta

4

Potrebbe essere tardi per aiutarti, ma qui va.

Attualmente solo uno reply_markup campo è permettere e questo campo deve contenere solo uno dei seguenti tipi: ReplyKeyboardMarkup o ReplyKeyboardHide o ForceReply (vedi docs)

In ogni caso, è possibile utilizzare ReplyKeyboardMarkup che si aprirà una consuetudine tastiera nell'app utente direttamente e codifica il tuo bot in modo che accetti solo una delle risposte nelle tue tastiere personalizzate.

Inoltre, se si vuole veramente forzare che la risposta dell'utente, è possibile continuare a inviare la stessa ReplyKeyboardMarkup dopo valida risposta di ciascun utente.

2

è necessario specificare il vostro codice come questo:

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

Se avete bisogno di avere custom keyboard è possibile seguire questa:

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

Dopo di che è necessario codificare l'oggetto utilizzando json_encode

$encodedMarkup = json_encode($replyMarkup, true); 

Infine, basta mettere sopra il codice alla query s tring al resto di sendMessage.

+0

Hai provato? –

+0

sì! Funziona correttamente –