Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Управление телеграм ботом
Подсистема управления телеграм ботом позволяет управлять командами бота, а также видеть логи выполнения команд, ошибки бота и т.д.
Код sql пакета - telegram (если у вас уже был в проекте бот, нельзя обновлять автоматически, т.к. замещается процедура telegram_bot_action).
Страница tgbot
Каждая команда имеет свою процедуру, выполняющую отклик на команду.
Команда может в точности соответствовать поле команда, либо быть начальным значением вводимой команды (в этом случае необходимо установить параметр Сравнение первых N символов).
Меню
В боте есть предустановленные команды:
Меню - устанавливает меню на основе команд и их настроек (Меню роли, Строка в меню, Порядок).
Роль меню - по умолчанию all (показывается всем). Если указать роли сайта через запятую, то этот пункт в меню будет выводиться только тем, у кого ТГ логин соотнесен с пользовалем системы в соответствующей роли.
Помощь - либо указывает общий текст помощи, либо если указана команда через пробел, то выводит по ней подсказку (она задается в поле Подсказка в help).
Эти команды действувуют, если админ не создал свои команды с теми же названиями.
В меню может быть до 10 строк. Порядок определяет сотрировку элементов внутри строки.
Если вы хотите использовать емодзи или смайлики, то необходимо скопировать (Ctrl+C , Ctrl +V) из телеграм и вставить в название команды.
Блокировка пользователей
Есть черный список пользователей, где можно указать либо telegram логин или chatID. Если пользователь попал в черный список, то на любую команду ему идет сообщение, что он заблокирован (текст управляется через настройку Отклик бота: Сообщение о блокировке пользователя - tgBlockUserResponse).
Выполнение команд
Каждая команда это отдельная процедура (название процедуры определяется кодом, который назначается при создании команды и не меняется), которая выдает три SELECT
- SELECT 1 - результат операции,
- SELECT 2 - команда-сообщение отправки боту
- SELECT 3 - внешние действия
По каждой команде ведется лог обращений и можно посмотреть какой был запрос и отклик + время на обработку.
При нажатии на телеграм идет переход к общей переписке этого пользователя с ботом.
Каждую команду можно отключать (переключатель Отключено). Отключенные команды исключаются из меню и недоступны для пользователей.
Если команда не найдена, то выдается сообщение пользователю (управляется через настройку tgNotFoundCommand).
Лог ошибок бота
Лог ошибок бота ведется отдельно от общих ошибок сайта.
Технически это as_trace с code='tg' и header='tg:Error'. На странице лог выведен в отдельной таблице.
Страница вывода переписки /tgchats
На странице можно выбрать телеграм и просмотреть лог переписки, а также что-то написать от имени бота пользователю телеграм
Это не является полноценным чатом, но позволяет анализировать переписку бота с пользователем, а также вклиниваться в нее по необходимости.
Многоступенчатые команды телеграм бота
Многоступенчатая команда - это запуск некой команды с предполагаемым последующим запросом дополнительных данных (т.е. дальнейший ввод пользователя считается не командой, а дополнительными данными к текущей команде).
Примеры подобных команд:
- Заполнение анкеты
- Заявка на заказ некой услуги
- Регистрация на сайте (создание личного кабинета через Телеграм)
Если вам необходимо пошагово запросить информацию у пользователя в рамках одной команды, то используем параметры step (в parameters) и выходной параметр nextStep.
CREATE PROCEDURE [dbo].[tg_multicommand1_command]
@command nvarchar(max),
@telegram nvarchar(256),
@chatID bigint,
@parameters ExtendedDictionaryParameter readonly,
@result bit output,
@msg nvarchar(max) output,
@nextStep nvarchar(128) output
AS
BEGIN
set @nextStep=''
declare @messageID bigint = (select top 1 try_cast(value2 as bigint) from @parameters where [key]='messageID')
declare @step nvarchar(128) = isnull((select top 1 value2 from @parameters where [key]='step'), '')
set @result = 1
if (@step ='') begin -- первый шаг
set @msg = 'Укажите имя'
set @nextStep = 's2'
end
if(@step = 's2') begin -- второй шаг
set @msg = 'Укажите фамилию'
set @nextStep = 's3'
end
if(@step = 's3') begin -- второй шаг
set @msg = 'Ваша заявка принята'
set @nextStep = ''
end
--SELECT 1
select @result Result, @msg Msg
-- SELECT 2
select 'sendMessage' [Type], @msg [Text], @chatID ChatId, @messageID ReplyToMessageId, 0 DisableNotification
END
Пояснение:
- Если step = '' - это первый шаг в команде.
- Если из процедуры вернули непустой nextStep, то это значит что команда многоступенчатая и следующий ввод пользователя считает продолжением этой команды (и будет передан step, равный значению текущего nextStep).
- Если из процедуры вернули пустой nextStep, то это либо была простая команда (с 1 шагом), либо это было завершение многоступенчатой команды. В этом случае бот будет ожидать новой команды при следующем вводе пользователя.
- Данные по шагам и результаты ввода хранятся в tg_settings - currentCommand, currentCommandStep и currentCommandData. Данные в data хранятся в виде step1=XXX~~step2=YYY...
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта