2017-08-26 5 views
2

Je dois programmer en php en raison des besoins de l'entreprise ... mais je travaille avec php pour la première fois ... et c'est la première fois que je travaille avec le télégramme bot: '( d'une certaine manière, avant, quand je courais la commande /start et doWork tout a fonctionné ...Comment créer des boutons en ligne dans PHP Bot Télégramme

mais maintenant je dois modifier le bot, d'une manière que toutes les commandes sont « cachées » derrière un bouton télégramme ... ici comment je modifié ma page php:

if(strpos($text, "/start") === 0) 
{ 
    $response = "Ciao $firstname, benvenuto!"; 

    $keyboard = [ 
     'inline_keyboard' => [ 
      [ 
       ['text' => 'forward me to groups'] 
      ] 
     ] 
    ]; 

    $encodedKeyboard = json_encode($keyboard); 
    $parameters = 
     array(
      'chat_id' => $chatId, 
      'text' => $response, 
      'reply_markup' => $encodedKeyboard 
     ); 
    $parameters["method"] = "sendMessage"; 
    echo json_encode($parameters); 

} 

Avec BotFather j'ai couru la commande /setinline aussi ...

Donc je pense que je travaille comment je parameters tableau .. quelqu'un peut-il m'aider s'il vous plaît?

Ps .: (si quelqu'un peut me suggérer aussi un IDE, je travaille avec ... s'il vous plaît je suis en utilisant notepad ++ maintenant)

Merci à tous

Répondre

2

d'abord tout ce que vous n'avez pas besoin d'utiliser /setinline commande dans botFather. cette commande est pour "mode inline" pendant que vous utilisez un inline_keyboard qui est un clavier personnalisé en mode conversation normale.

aussi vous devez fournir un callback_data dans votre tableau de clavier pour chaque bouton:

$keyboard = [ 
    'inline_keyboard' => [ 
     [ 
      ['text' => 'forward me to groups', 'callback_data' => 'someString'] 
     ] 
    ] 
]; 
$encodedKeyboard = json_encode($keyboard); 
$parameters = 
    array(
     'chat_id' => $chatId, 
     'text' => $response, 
     'reply_markup' => $encodedKeyboard 
    ); 

send('sendMessage', $parameters); // function description Below 

Enfin, vous devez l'envoyer par boucle. voici une fonction que j'utilise dans mes codes:

function send($method, $data) 
{ 
    $url = "https://api.telegram.org/bot<Bot-Token>". "/" . $method; 

    if (!$curld = curl_init()) { 
     exit; 
    } 
    curl_setopt($curld, CURLOPT_POST, true); 
    curl_setopt($curld, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($curld, CURLOPT_URL, $url); 
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true); 
    $output = curl_exec($curld); 
    curl_close($curld); 
    return $output; 
} 

P.S. J'utilise personnellement PhpStorm, c'est agréable;)