Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как сделать ежедневную отправку отчета в групповой чат Telegram?
Удобно получать ежедневную сводку с ключевыми показателями в Телеграм.
При этом вы можете сделать так, что разные лица проекта могут получать свой набор метрик.
Мы рассмотрим вариант создания общего отчета по состоянию этапа проекта с отправкой в групповой чат проекта.
Как реализовать привязку чата к проекту
Для начала необходимо обеспечить связку проекта и чата в телеграме. Для этого у проекта должно быть поле с ID чата (в нашем случае это innerChatID).
ВАЖНО. В чат должен быть добавлен бот (можно с обычными правами).
ChatID можно получить через экспорт переписки чата в Телеграме в формате JSON (параметр ID для Chat).
Указываем данный ID в БД в таблице Проекты (при этом обязательно со знаком "-").
Как отправлять отчет ежедневно в Telegram
В процедуре sync_hour формируем select для отправки отчетов по всем активным проектам, где есть чаты:
CREATE PROCEDURE [dbo].[falcon_nt_sync_hour]
AS
BEGIN
-- эта процедура запускается каждый час
-- отправляем в 9 утра несколько отчетов в телеграм - по 1 на каждый активный этап
-- отчет формируется в виде строки в функции getStageInfo
if(DATEPART(HOUR, GETDATE())=9) begin
select 'telegram' [type], getStageInfo(stageID, 1) [text], cast(innerChatID as nvarchar) [to] from (
select
id, name, innerChatID,
(select top 1 id from as_est_cats stage where estimateID = p.estimateID and statusID in (2,4,9) order by id desc ) stageID
from rudenas2x.dbo.tt_projects p
where innerChatID is not null and innerChatID <>0 and statusID is null
) t1
order by name
end
END
Как сформировать сам отчет
Отчет можно формировать в отдельной sql функции с использованием Эмоджи, HTML верстки и других способов разметки Телеграма.
Пример структуры подобной функции:
alter FUNCTION [dbo].getStageInfo
(
@stageID int ,
@innerInfo bit=1
)
RETURNS nvarchar(max) as
BEGIN
declare @res nvarchar(max) =''
declare @today date = getdate()
select @res = CAST(0xA127 AS NVARCHAR(MAX)) + ' ЭТАП '+ name + char(10) +
'Выполнено: '+ isnull(cast(cast(completed/nullif(total, 0)*100 as int) as nvarchar), 0) + '%' + char(10) +
'Закрыто: '+ isnull(cast(cast(closed/nullif(total, 0)*100 as int) as nvarchar), 0) + '%' + char(10) +
'Время: '+ iif(year(deadline)<2000, '',
iif( datediff(day,deadline, getdate()) > 0, 'Дедлайн просрочен на ' + cast(datediff(day,deadline, getdate()) as nvarchar) +'дн' ,
''+cast(cast(datediff(day,startDate, getdate()) as float) * 100 / nullif(cast(datediff(day,startDate, deadline) as float), 0) as nvarchar)+'%')
)+ char(10) +
'Обновлено: '+ isnull( dbo.as_timeDelay(datediff(minute, updatedDate, getdate())), '' ) + char(10) +
'----------------' +char(10) +
'Открытых часов по задачам: ' + cast(openHours as nvarchar) + char(10) +
'Вчера часов: ' + cast(yesterdayHours as nvarchar) + char(10) + char(10) +
'Открытых багов: ' + cast(openBugs as nvarchar) + char(10) +
'Задач на проверку: ' + cast(checkingTickets as nvarchar) + char(10)
from (
-- здесь извлекаем данные по этапу по @stageID
) t1
return @res
END -- FUNCTION
Примечание:
1. Групповой чат - ID обязательно указываем со знаком минус.
2. Для работы телеграм бота токен должен быть прописан в web.config
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта