# Клавиатура

К сообщению можно прикреплять кнопки, удалять их и менять местами. Текст отображается по центру кнопки и обрезается, если не помещается полностью при текущем размере экрана.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2F9QOwb6yRqb8Iuns8BzNi%2Fimage.png?alt=media&#x26;token=1ffe3902-8932-4f77-89bd-792801e852b2" alt=""><figcaption><p>Клавиатура в сообщении</p></figcaption></figure>

Кнопки можно перемещать между собой в строке и между строк с помощью зажатия левой кнопкой мыши или долгим зажатием на мобильном устройстве.

{% hint style="warning" %}
**Внимание!** Нельзя прикреплять кнопки к медиа-группе (когда 2 и более вложений).
{% endhint %}

## Типы кнопок

**Текстовая кнопка**

Нажатие на нее выполнит переход к следующему шагу в боте.

**Кнопка-ссылка**

Позволяет перейти по ссылке, указанной в настройках данной кнопки.

**Контакт**\
Подписчик нажимает кнопку и автоматически делится своим номером телефона. Ничего вводить вручную не требуется - номер сохраняется в карточку подписчика в переменную `{%phone%}`.

{% hint style="info" %}
Контакт будет обрабатываться только текущего пользователя, если приложить контакт другого человека, через функционал Telegram, то он обработан не будет.

Если у пользователя уже заполнена переменная `{%phone%}`, то она не будет перезаписана.
{% endhint %}

**Местоположение**\
При нажатии кнопки "местоположение" подписчик отправляет свою геолокацию.&#x20;

## **Стандартная клавиатура**

По умолчанию, клавиатура показывается под полем ввода в диалоге с пользователем.&#x20;

{% hint style="warning" %}
**Внимание!** Максимальный размер стандартной клавиатуры — 5 столбцов × 10 строк. При этом максимальное количество кнопок: 40.
{% endhint %}

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FG250h48ge0aMU5ZrkkBv%2Fimage.png?alt=media&#x26;token=d4f3f676-3ef3-4e27-90e9-28fa3d482951" alt=""><figcaption><p>Стандартная клавиатура</p></figcaption></figure>

При нажатии на кнопку стандартной клавиатуры в чат с пользователем отправляется сообщение с текстом данной кнопки от его имени.

Если установить опцию **Скрыть клавиатуру после нажатия**, то стандартная клавиатура будет скрываться после нажатия на кнопку.

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

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

**Внимание!** После остановки или удаления бота стандартная клавиатура у пользователя не скроется. Чтобы ее убрать, необходимо отправить сообщение с помощью бота, но уже без кнопок и с включенной галочкой в шаге - **Удаление клавиатуры**.

Клавиатура с кнопками может быть скрыта. Чтобы ее показать, нужно нажать на кнопку с четырьмя точками.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2Fj0aVgTivRKJ25PFuSPZg%2Fimage.png?alt=media&#x26;token=79a97b9e-0658-4809-b25b-83264a6d1c83" alt=""><figcaption><p>Показать клавиатуру Telegram</p></figcaption></figure>

**Особенности стандартной клавиатуры:**

* Располагается под формой для ввода сообщения
* Удаляется после получения нового сообщения от бота с включенной галочкой - Удаление клавиатуры
* Скрывается под иконкой с четырьмя точками (можно не заметить эту иконку и потерять клавиатуру)

## **Клавиатура внутри сообщения**

Inline-клавиатура (или inline-кнопки) - это клавиатура, которая показывается под определенным сообщением.

{% hint style="warning" %}
**Внимание!** Максимальный размер встроенной клавиатуры — 5 столбцов × 6 строк. При этом максимальное количество кнопок: 10.
{% endhint %}

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2F8G0S2XLsHheerajjnC47%2Fimage.png?alt=media&#x26;token=ae932740-79cc-4bc0-a362-ca0e14ba1cc1" alt=""><figcaption><p>Клавиатура внутри сообщения</p></figcaption></figure>

**Особенности Inline-клавиатуры:**&#x20;

* Располагается под определенным сообщением
* Cохраняется в истории сообщений
* При нажатии на кнопку текст с нее не отправляется
* Можно использовать кнопку-ссылку с отслеживанием переходов по ссылке и выполнением дальнейших шагов после перехода
* Не скрывается (с одной стороны это плюс - ее нельзя не заметить, с другой стороны - на эти кнопки можно нажимать бесконечное количество раз)
* Удалить данные кнопки можно только путем удаления отправленных сообщений
* Отправленные сообщения, содержащие такие кнопки, можно изменять

### Соглашения&#x20;

В чат-ботах Senler можно использовать **соглашения** для запроса согласия пользователя с условиями (например, на обработку персональных данных) в рамках сценария бота.

{% hint style="warning" %}
**Соглашения в чат-ботах работают только при включённой клавиатуре.**\
Подтверждение согласия осуществляется с помощью кнопок клавиатуры, поэтому при отключённой клавиатуре показ и принятие соглашений невозможны.
{% endhint %}

Документы соглашений создаются и настраиваются в разделе\
**Проект → Соглашения**.

{% content-ref url="../../../../proekt/soglasheniya/soglasheniya-v-chat-bote" %}
[soglasheniya-v-chat-bote](https://help.senler.ru/senler/proekt/soglasheniya/soglasheniya-v-chat-bote)
{% endcontent-ref %}

## Скрытие клавиатуры после нажатия

{% hint style="warning" %}
**Внимание!** Эта опция касается только стандартной клавиатуры. Inline кнопки не скрываются.
{% endhint %}

Опция **Скрыть клавиатуру после нажатия** позволяет убрать клавиатуру в значок в виде 4-х точек, чтобы она не мешала пользователю.

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

{% hint style="warning" %}
**Внимание!** Кнопки скрываются даже если вместо нажатия на кнопку пользователь начнет набирать сообщение.
{% endhint %}

## Переменные

В тексте кнопок можно использовать [глобальные](https://help.senler.ru/senler/kanaly/telegram/peremennye/globalnye-peremennye) или [пользовательские](https://help.senler.ru/senler/kanaly/telegram/peremennye/polzovatelskie-peremennye) переменные.

{% hint style="warning" %}
**Внимание!** Если переменная не будет найдена или будет иметь пустое значение, сообщение с кнопкой не отправится.
{% endhint %}

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FD3npfty868a608223Oo3%2Fimage.png?alt=media&#x26;token=2e09ee84-a6ff-43b2-87d0-8b311b0b09b7" alt=""><figcaption><p>Пример кнопки, которая содержит переменную</p></figcaption></figure>

## Удаление старых кнопок

Можно удалить старые кнопки у всех пользователей только путем удаления отправленных сообщений, которые были отправлены не более 48 часов назад.&#x20;

## Не работают кнопки

Если бот не реагирует на нажатие кнопок, выполните автоматическую настройку в разделе Настройки - вкладка Подключение. Это должно решить проблему, так как в редких случаях перестает работать API Callback Telegram, из-за этого сервис не получает информации о нажатии на кнопки.

К сожалению автоматическая настройка никак не позволит учесть предыдущие нажатия кнопок, поэтому если у вас были пользователи, которые нажимали на кнопки и не перешли на следующий шаг, их нужно будет перенести вручную.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FQjGifsEpdqpyVSpEpeXP%2Fimage.png?alt=media&#x26;token=dc787acd-c1e4-4468-9abf-04c3583bd3ab" alt=""><figcaption><p>Автоматическая настройка подключения TG</p></figcaption></figure>

## Полезные материалы

{% embed url="<https://core.telegram.org/bots/features#keyboards>" %}
Источник информации по клавиатуре в документации Telegram
{% endembed %}
