В клавиатуру чат бота вк, написанного на PHP, не удается встроить кнопку ссылку
Господа, добрый вечер. Вопрос следующий. Сталкивался ли кто нибудь с разработкой ботов вк с клавиатурой на языке PHP с помощью callback API? Дело в том, что есть необходимость вставить кнопку - ссылку, однако при ее вставке (вот код кнопки, который добавляется к остальным кнопкам (обычным) в массив, который потом отправляется вместе с ответом бота
[
'action' => [
'type' => "open_link",
'link' => 'example.com',
"payload" => json_encode('8', JSON_UNESCAPED_UNICODE),
'label' => 'Text',
],
'color' => 'default'
];
притом, формат ссылки пробовал вставлять, как с http так и без) Однако при таком добавлении кнопки в массив с остальными кнопками (обычными), бот зависает и не выводит всю клавиатуру При этом без этой кнопки - все выводится корректно. Лог неудавшихся запросов к серверу тоже молчит. Быть может нужно как то дополнительно кодировать ссылку(пробовал кодировать функцией urlencode()) или иначе строить логику кнопки? Не нашел в документации такого случая, сможете подсказать?
Ответы (1 шт):
Пример функции:
class message_send_keyboard{
public function send($msg, $keyboard, $user_id, $access_token){
$request_params = array(
"user_id" => $user_id,
"random_id" => "0",
"message" => $msg,
"keyboard" => json_encode($keyboard, JSON_UNESCAPED_UNICODE),
"access_token" => $access_token,
"v" => "5.103");
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?".$get_params);}}
Ответ на ваш вопрос:
$key_general = [
"one_time" => false,
"buttons" => [
[
["action" => [
"type" => "open_link",
"link" => "example.com",
"label" => "Your URL",
"payload" => '{"button": "1"}'],
"color" => "primary"]
]]];
Выполнение:
$ms = new message_send_keyboard;
$ms->send("Hello World", $key_general, $user_id, $access_token);