> { new List

Как отправить сообщение с клавиатурой? · vknet/vk · Discussion #1106 (original) (raw)

Для примера используем простую клавиатуру с одной кнопкой, имеющей надпись "Привет":

var keyboard = new MessageKeyboard { Buttons = new List<List> { new List { new MessageKeyboardButton { Action = new MessageKeyboardButtonAction { Type = KeyboardButtonActionType.Text, //Тип кнопки клавиатуры Label = "Привет", //Надпись на кнопке }, Color = KeyboardButtonColor.Default //Цвет кнопки } } } };

Так же есть построитель клавиатур который предосталяет удобный Fluent интерфейс

var keyboard = new KeyboardBuilder() .AddButton("Подтвердить", "btnValue", KeyboardButtonColor.Primary) .SetInline(false) .SetOneTime() .AddLine() .AddButton("Отменить", "btnValue", KeyboardButtonColor.Primary) .Build();

Для отправки данной клавиатуры нужно просто передать ее при отправке сообщения в свойстве Keyboard:

Api.Messages.Send(new MessagesSendParams { UserId = 12345678, //Id получателя Message = "Message", //Сообщение Keyboard = keyboard, // Клавиатура RandomId = new Random().Next(999999) //Уникальный идентификатор });

Подробную информацию о клавиатурах можно найти здесь.

You must be logged in to vote

Как работать с payload кнопок:

Обработчик VKMessageManager

// У нас есть данная клавиатура, которую мы отправим с сообщением (см.выше): var keyboard = new KeyboardBuilder() .AddButton("Привет", "hello", KeyboardButtonColor.Primary) // "hello" является полезной нагрузкой (payload) .SetInline(false) .Build();

// Воспользуемся обработчиком сообщений VKMessageManager с авторизацией от группы (ссылка выше) VKMessageManager manager = new VKMessageManager(); manager.OnNewMessage += (message, sender) => {

switch (message.Payload) // Получаем payload кнопок, после чего обрабатываем его
{
    case "{\"button\":\"hello\"}": // payload кнопок приходит в данном формате, "hello" наша полезная нагрузка (payload)
      
        await Api.Messages.SendAsync(new MessagesSendParams()
        {
            PeerId = message.PeerId.Value,                      // Отправим сообщение туда, откуда получили
            RandomId = random.Next(int.MinValue, int.MaxValue), // Уникальный идентификатор
            Message = "Кнопка \"Привет\" работает!!!"           // Сообщение
        });
                    
        break;
 }

}; manager.StartMessagesHandling();

You must be logged in to vote

0 replies