2015-07-18 3 views
7

Ich habe eine benutzerdefinierte Tastatur, aber um die Antwort zu verarbeiten, brauche ich eine Force-Antwort, damit ich die Frage in der nächsten Nachricht zurückbekomme. Ich habe dies getan:Telegram Bot API: Kann ich eine benutzerdefinierte Tastatur und ein force_reply mischen?

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

Die Tastatur funktioniert, aber nicht die force_reply. Force Antwort auf seine eigenen Werke? Kann ich es nicht in Kombination mit einer benutzerdefinierten Tastatur verwenden?

Antwort

4

Es kann spät sein, Ihnen zu helfen, aber hier geht es.

Derzeit ist nur ein reply_markup Feld erlauben und dieses Feld darf nur einen der folgenden Typen enthalten: ReplyKeyboardMarkup oder ReplyKeyboardHide oder ForceReply (siehe docs)

In jedem Fall können Sie ReplyKeyboardMarkup verwenden, die eine benutzerdefinierte Pop-up wird Tastatur in der Benutzer-App direkt und Code Ihres Bot, so dass es nur eine der Antworten in Ihren eigenen benutzerdefinierten Tastaturen akzeptieren.

Darüber hinaus, wenn Sie wirklich zwingen wollen, dass der Benutzer antwortet, können Sie weiterhin ReplyKeyboardMarkup nach jedem Benutzer ungültige Antwort senden.

2

Sie benötigen Markup wie folgt angeben:

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

Wenn Sie custom keyboard haben müssen Sie diese folgen:

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

Danach müssen Sie Ihr Objekt codieren mit json_encode

$encodedMarkup = json_encode($replyMarkup, true); 

Schließlich legen Sie nur den obigen Code bei Ihrer Abfrage s tring bei dem Rest von sendMessage.

+0

Haben Sie das tatsächlich versucht? –

+0

ja! Es funktioniert korrekt –