Найти в Дзене
Записки сисадмина

Python. MAX бот. Кнопки и клавиатуры ч3. Контакты, ссылки и геопозиция.

Наконец, последний блок по кнопкам в сообщениях. Осталось не так много тем, которые можно разобрать прямо сейчас, с тем функционалом, который доступен без каких-либо доработок. Сегодня поговорим о тех кнопках, которые будут полезны только бизнесу, особенно - менеджерам поддержки клиентов. Как обычно, подгружаем те модули, с которыми будем работать: from maxapi.types import LinkButton, RequestContactButton, RequestGeoLocationButton, CallbackButton, MessageCallback
from maxapi.utils.inline_keyboard import InlineKeyboardBuilder LinkButton - Кнопка с ссылкой внутри. При нажатии на нее будет предложено открыть URL. Создадим простой обработчик команды /link, который будет выводить сообщение с такой кнопкой. Внутри кнопки поместим ссылку на документацию API MAX. Это один из самых простых типов кнопок, не несет в себе никаких проблем, но, поскольку нажатие на кнопку будет вести на сторонний ресурс, ее нажатие мы не сможем никак обрабатывать. RequestContactButton - Кнопка запроса контакта пол
Оглавление

Наконец, последний блок по кнопкам в сообщениях. Осталось не так много тем, которые можно разобрать прямо сейчас, с тем функционалом, который доступен без каких-либо доработок.

Сегодня поговорим о тех кнопках, которые будут полезны только бизнесу, особенно - менеджерам поддержки клиентов.

Без лишних слов, начнем:

Как обычно, подгружаем те модули, с которыми будем работать:

from maxapi.types import LinkButton, RequestContactButton, RequestGeoLocationButton, CallbackButton, MessageCallback
from maxapi.utils.inline_keyboard import InlineKeyboardBuilder

LinkButton

LinkButton - Кнопка с ссылкой внутри. При нажатии на нее будет предложено открыть URL.

Создадим простой обработчик команды /link, который будет выводить сообщение с такой кнопкой. Внутри кнопки поместим ссылку на документацию API MAX.

-2
-3
-4

Это один из самых простых типов кнопок, не несет в себе никаких проблем, но, поскольку нажатие на кнопку будет вести на сторонний ресурс, ее нажатие мы не сможем никак обрабатывать.

RequestContactButton

RequestContactButton - Кнопка запроса контакта пользователя. В телеграмме было реализовано внутри текстовых кнопок.

Создадим обработчик /contact, который будет запрашивать у пользователя его номер:

-5
-6

Однако, пока что данный функционал не полный, т.к. мы еще не умеем обрабатывать получение контакта.

Напишем обработчик:

-7

Данная функция будет отрабатывать только в тех случаях, когда нам придет объект контакта.

Объект контакта находится в event.message.body.attachments и имеет следующую структуру:

[Contact(type='contact', payload=ContactAttachmentPayload(vcf_info='', max_info=''))]

Где:

vcf_info - Карточка контакта с номером телефона в формате vcf

max_info - Дополнительная информация о пользователе из самого мессенджера.

Поскольку сам контакт обрабатывать мы не будем, оставим этот функционал как способ обратной связи. Сообщение с контактом мы перешлем менеджеру, а клиенту отправим отбивку.

RequestGeoLocationButton

RequestGeoLocationButton - Кнопка запроса геолокации пользователя.

Работает точно так же, как и RequestContactButton.

Напишем сразу обработку команды /geo, и обработку объекта геопозиции по аналогии с контактом:

-8
-9

Из интересного: в объекте Location придет два параметра: широта и долгота.

latitude=55.841163635253906, longitude=37.509681701660156

Ими можно оперировать через message.body.attachments[0].latitude и message.body.attachments[0].longitude.

Весь код из статьи выложил здесь