Добра, народ)
Столкнулся со следующей проблемой: VK не отображает клавиатуру бота, содержащую кнопки-ссылки (тип кнопки: open_link). Лог неудачных запросов пуст, остальная часть кода также выполняется - в результате чего выяснилось, что проблема кроется непосредственно в коде отправки клавиатуры или в её обработке VK. Мой код выглядит следующим образом, базируется на самолично улучшенной библиотеке vk_api.php.
Код функции отправки клавиатуры:
class vk_api{
private $token = '';
private $v = '';
public function __construct($token, $v){
$this->token = $token;
$this->v = $v;
}
public function sendButton($sendID, $message, $gl_massiv = [], $inline = False, $one_time = False) {
$buttons = [];
$i = 0;
foreach ($gl_massiv as $button_str) {
$j = 0;
foreach ($button_str as $button) {
$buttons[$i][$j]["action"]["type"] = button[3];
if ($button[0] != null)
$buttons[$i][$j]["action"]["payload"] = json_encode($button[0], JSON_UNESCAPED_UNICODE);
if (button[3] == 'open_link')
$buttons[$i][$j]["action"]["link"] = $button[4];
$buttons[$i][$j]["action"]["label"] = $button[1];
$buttons[$i][$j]["color"] = $button[2];
$j++;
}
$i++;
}
$buttons = [
"one_time" => $one_time,
"buttons" => $buttons,
"inline" => $inline
];
$buttons = json_encode($buttons, JSON_UNESCAPED_UNICODE);
return $this->request('messages.send', ['random_id'=>rand(0,2147483647),'message'=>$message, 'peer_id'=>$sendID, 'keyboard'=>$buttons]);
}
}
Код использования функции отправки клавиатуры:
$vk->sendButton($peer_id, $TEXT_Start, $BTN_MainSet, False);
Код назначения переменных кнопок:
$TEXT_Start = 'Вы находитесь в собственной жилячейке.';
$BTN_Moving = [['Main Menu' => 'Moving'], $TIL_Moving, 'negative', 'text'];
$BTN_LookAround = [['Main Menu' => 'Look Around'], $TIL_LookAround, 'positive', 'text'];
$BTN_Settings = [['Main Menu' => 'Settings'], $TIL_Settings, 'secondary', 'text'];
$BTN_Inventory = [['Persistent Buttons' => 'Inventory'], $TIL_Inventory, 'secondary', 'open_link', 'https://vk.com/im'];
$BTN_GameChat = [['Persistent Buttons' => 'Game Сhat'], $TIL_GameChat, 'secondary', 'open_link', 'https://vk.com/im'];
$BTN_MainSet = [[$BTN_Moving,$BTN_LookAround],[$BTN_Settings],[$BTN_Inventory,$BTN_GameChat]];
Из собственных догадок: возможно, проблема заключается в некорректном написании ссылки (в документации VK API указано, что тип переменной ссылки должен быть URL). Пробовал использовать urlencode, однако, он не помогает исправить ситуацию.
Также, пробовал искать информацию о своей проблеме в интернете, и нашёл лишь данного
пользователя с аналогичной проблемой, он так и не смог решить данную проблему.
Заранее благодарю за любую помощь)