Подсистема управления телеграм ботом позволяет управлять командами бота, а также видеть логи выполнения команд, ошибки бота и т.д.
Код sql пакета - telegram (если у вас уже был в проекте бот, нельзя обновлять автоматически, т.к. замещается процедура telegram_bot_action).
Каждая команда имеет свою процедуру, выполняющую отклик на команду.
Команда может в точности соответствовать поле команда, либо быть начальным значением вводимой команды (в этом случае необходимо установить параметр Сравнение первых N символов).
В боте есть предустановленные команды:
Меню - устанавливает меню на основе команд и их настроек (Меню роли, Строка в меню, Порядок).
Роль меню - по умолчанию all (показывается всем). Если указать роли сайта через запятую, то этот пункт в меню будет выводиться только тем, у кого ТГ логин соотнесен с пользовалем системы в соответствующей роли.
Помощь - либо указывает общий текст помощи, либо если указана команда через пробел, то выводит по ней подсказку (она задается в поле Подсказка в help).
Эти команды действувуют, если админ не создал свои команды с теми же названиями.
В меню может быть до 10 строк. Порядок определяет сотрировку элементов внутри строки.
Если вы хотите использовать емодзи или смайлики, то необходимо скопировать (Ctrl+C , Ctrl +V) из телеграм и вставить в название команды.
Есть черный список пользователей, где можно указать либо telegram логин или chatID. Если пользователь попал в черный список, то на любую команду ему идет сообщение, что он заблокирован (текст управляется через настройку Отклик бота: Сообщение о блокировке пользователя - tgBlockUserResponse).
Каждая команда это отдельная процедура (название процедуры определяется кодом, который назначается при создании команды и не меняется), которая выдает три SELECT
По каждой команде ведется лог обращений и можно посмотреть какой был запрос и отклик + время на обработку.
При нажатии на телеграм идет переход к общей переписке этого пользователя с ботом.
Каждую команду можно отключать (переключатель Отключено). Отключенные команды исключаются из меню и недоступны для пользователей.
Если команда не найдена, то выдается сообщение пользователю (управляется через настройку tgNotFoundCommand).
Лог ошибок бота ведется отдельно от общих ошибок сайта.
Технически это as_trace с code='tg' и header='tg:Error'. На странице лог выведен в отдельной таблице.
На странице можно выбрать телеграм и просмотреть лог переписки, а также что-то написать от имени бота пользователю телеграм
Это не является полноценным чатом, но позволяет анализировать переписку бота с пользователем, а также вклиниваться в нее по необходимости.
Многоступенчатая команда - это запуск некой команды с предполагаемым последующим запросом дополнительных данных (т.е. дальнейший ввод пользователя считается не командой, а дополнительными данными к текущей команде).
Примеры подобных команд:
Если вам необходимо пошагово запросить информацию у пользователя в рамках одной команды, то используем параметры 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
Пояснение: