Domanda [PHP] bot telegram inline keyboard

CaffeLatte

Utente Electrum
17 Gennaio 2013
263
53
26
170
Buongiorno, sto sviluppando un bot telegram e sto cercando di inserire una tastiera inline se l'utente invia determinati comandi:

Qui è dove penso ci sia l'errore, sarà sicuramente relativo ai parametri :
PHP:
//STRUTTURA:
apiRequestWebhook("METODO", array(PARAMETRI));
//CODICE
apiRequestWebhook("sendMessage", array('chat_id' => $chat_id, "text" => $testo, 'reply_markup' =>
                ['inline_keyboard' => [['text' => 'inline']]],
                    "parse_mode" => "Markdown"));


La funzione apiRequestWebhook:
PHP:
function apiRequestWebhook($method, $parameters)
{
    if (!is_string($method)) {
        error_log("Method name must be a string\n");
        return false;
    }

    if (!$parameters) {
        $parameters = array();
    } else if (!is_array($parameters)) {
        error_log("Parameters must be an array\n");
        return false;
    }

    $parameters["method"] = $method;

    header("Content-Type: application/json");
    echo json_encode($parameters);
    return true;
}
Il bot risponde se uso la keyboard "normale".
 
Ciao, c'è qualche messaggio di errore? Da una rapida occhiata il problema pare essere nel modo in cui sia accede ai parametri dentro l'array.
Per esempio:
PHP:
$chat_id="aa"; $testo="aaa";
$var = array("chat_id" => $chat_id, "text" => $testo, "reply_markup" => array("inline_keyboard" => array("text" => "inline")), "parse_mode" => "Markdown");

echo $var["reply_markup"]["inline_keyboard"]["text"];

l'output è "inline". Ho provato brevemente qui writephponline.com
 
  • Mi piace
Reazioni: zipippino
popolato.. ma attivo? non mi fa andare nel sito per creare un account.
Ciao, c'è qualche messaggio di errore? Da una rapida occhiata il problema pare essere nel modo in cui sia accede ai parametri dentro l'array.
Per esempio:
PHP:
$chat_id="aa"; $testo="aaa";
$var = array("chat_id" => $chat_id, "text" => $testo, "reply_markup" => array("inline_keyboard" => array("text" => "inline")), "parse_mode" => "Markdown");

echo $var["reply_markup"]["inline_keyboard"]["text"];

l'output è "inline". Ho provato brevemente qui writephponline.com
Questa sintassi di solito funziona, cosa dovrei modificare? Inline_keyborad è un array di "bottoni" e reply markup è un array di "oggetti"
 
  • Mi piace
Reazioni: zipippino
PHP:
['inline_keyboard' => [['text' => 'inline']]]

PHP:
 array("inline_keyboard" => array("text" => "inline"))

Facendo un piccolo test vedo che il primo modo da errore, mentre utlizzando array() invece di [ ] si accede agli elementi dentro l'array.
Modificando questa parte il tuo script funziona? :)
 
  • Mi piace
Reazioni: zipippino
PHP:
['inline_keyboard' => [['text' => 'inline']]]

PHP:
 array("inline_keyboard" => array("text" => "inline"))

Facendo un piccolo test vedo che il primo modo da errore, mentre utlizzando array() invece di [ ] si accede agli elementi dentro l'array.
Modificando questa parte il tuo script funziona? :)
Ho provato sia come ha detto tu che aggiungendo un "array"
PHP:
apiRequestWebhook("sendMessage", array('chat_id' => $chat_id, "text" => $testo, 'reply_markup' =>  array("inline_keyboard" => array(array("text" => "inline")))));
Perchè