Pudiera darse el caso de que encuentres algún fallo con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.
Solución:
En primer lugar, no es necesario utilizar /setinline
comando en botFather. este comando es para el “modo en línea” mientras está usando un inline_keyboard
que es un teclado personalizado en el modo de chat normal.
también debe proporcionar un callback_data
en tu teclado array para cada botón:
$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
Por último, debe enviarlo a través de curl. Aquí hay una función que uso en mis códigos:
function send($method, $data)
$url = "https://api.telegram.org/bot". "/" . $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;
PD Yo personalmente uso PhpStorm, es bueno 😉
He administrado alguna función con https://github.com/irazasyed/telegram-bot-sdk si no desea administrar la fila en la palabra clave en línea, puede omitir foreach y usar $inline_keyboard[] = $palabra_clave_datos; mostrar palabra clave
verifique la imagen por $datos_de_palabras clave array
public function inlineKeyword($chat_id, $keyword_data, $msg = '')
if (empty($msg))
$msg = "Select";
$inline_keyboard = array();
$row = 0;
$prev_value = '';
foreach ($keyword_data as $value)
if (isset($prev_value['text']) && strlen($prev_value['text']) < 10 && strlen($value['text']) < 10)
$inline_keyboard[$row - 1][] = $value;
else
$inline_keyboard[$row][] = $value;
$prev_value = $value;
$row++;
// $inline_keyboard[] = $keyword_data;
$reply_markup = $this->telegram->replyKeyboardMarkup([
'inline_keyboard' => $inline_keyboard,
'resize_keyboard' => true
]);
$response = $this->telegram->sendMessage([
'text' => $msg,
'reply_markup' => $reply_markup,
'chat_id' => $chat_id
]);