Мой Python код ниже. По сути, он устанавливает соединение с базой данных SQL Server и получает список уведомлений для размещения на канале Slack. Несколько уведомлений - если их время находится на близком расстоянии - иногда отправляются вместе на канал Slack в виде сообщения.
В настоящее время выводится либо
User John submitted new notification. Link:
, либо
User John submitted new notification. Link:
User Jane submitted new notification. Link:
User Max submitted new notification. Link:
Python код:
import requests
import json
import adodbapi
import adodbapi.ado_consts as adc
import adodbapi.is64bit as is64bit
sqlconn = adodbapi.connect('Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog="MyDatabase";Data Source=localhost,1360');
cur = sqlconn.cursor()
cur.execute('''
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE @PostedOn datetime
SELECT @PostedOn=LastChecked FROM Notifications
select Email,a.PostedOn, '<https://www.website.com/' +CASE WHEN a.QuestionId IS NOT NULL THEN
'question' ELSE 'article' END+'/'+CONVERT(varchar,COALESCE(A.questionId,A.ArticleId))+'|Link>'
from UserProfile u
inner join answer a on a.UserId=u.UserId
where exists(select * from Topic et where et.UserId=u.UserId)
AND u.IsExpert=1
AND A.Postedon>@PostedOn
update Notifications
set LastChecked=GETDATE()
''')
sqlconn.commit()
url = 'http://ipaddress:port/bot/chatsecrets/notification-network'
headers = {'content-type': 'application/json'}
hasrows=0
postlist=''
template ='''User {0} submitted new notification. {1}:'''
for row in cur.fetchall():
postlist = postlist +'\n'+template.format(row[0],row[2])
hasrows=1
if hasrows:
response = requests.post(url, data=json.dumps({'secret': postlist}), headers=headers)
print (postlist)
Я хотел бы настроить код так, чтобы бот мог отправлять новое сообщение Slack для каждого нового уведомления, а не собирать список уведомлений и отправлять их как массовое обновление.