Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PUSH уведомления напрямую из SQL Server (может кому понадобится)  [new]
Нестандартное мышление
Member

Откуда:
Сообщений: 23
Всем привет
Долго ломал голову, как бы отправлять PUSH через FIREBASE напрямую из SQL, не используя сервисы или другие приложения
Вот решение (если кому пригодится)
+
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Для разрешения выполнения процедур OA выполнить вот это******/
/*
USE [master]
sp_configure 'show advanced options', 1 
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures', 1 
GO 
RECONFIGURE; 
GO 
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

use DB
GRANT EXECUTE ON master..sp_OACreate to usr
GRANT EXECUTE ON master..sp_OASetProperty to usr
GRANT EXECUTE ON master..sp_OAMethod to usr
GRANT EXECUTE ON master..sp_OADestroy to usr

*/
CREATE PROC [dbo].[usp_SEND_FCM_MESSAGE_TEST]
AS
DECLARE @Object INT;
DECLARE @Status INT;
DECLARE @ResponseText nvarchar(4000);
DECLARE @StatusText nvarchar(4000);
DECLARE @ResponseBody  nvarchar(4000);
DECLARE @Authorization nvarchar(4000) ='key=AAAA6koGkM8:APA91bGcnmbWVcPQeKwpD18IvBBqczuGU9VfzEVc_sS4vAuc8MuFjwR-laSb33jx60ra3efhzE-WLuNy7OitTMyqEZYW_Sdy75ipZX6Z9tqNbzygDWeFdbCJNw9SchVdayeeSvK-u2i0'
DECLARE @Sender nvarchar(4000) = 'id=1006994291535';

DECLARE @Success varchar(10);
DECLARE @ErrorCode varchar(10);
DECLARE @requestBody NVARCHAR(4000) = N'{
"to": "dAvktxTh6i8:345435345345435-V9ISsi2IVlnwnzyIFHWeQ0qmYn1KyLK_QIT-QeZH68FBe2kTBFrG70HfDOg-23I2WiTsDirfCWaBzsL0noL8OWe4E80jnLhlMIdqR",
"data": {
	"ShortDesc": "Some short desc",
	"IncidentNo": "any number",
	"Description": "detail desc"
  },
  "notification": {
	"title": "ServiceNow: Incident No. number",
    "text": "This is Notification",
	"sound":"default"
  }
}'

EXEC sp_OACreate 'WinHttp.WinHttpRequest.5.1', @Object OUT;
EXEC sp_OAMethod @Object, 'Open', NULL, 'POST',  'https://fcm.googleapis.com/fcm/send', 'false'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/json; charset=utf-8'
DECLARE @len INT = len(@requestBody) 
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Length', @len
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Authorization', @Authorization
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Sender', @Sender
EXEC sp_OAMethod @Object, 'send', null, @requestBody
EXEC sp_OAGetProperty @Object, 'Status', @Status OUTPUT
EXEC sp_OAGetProperty @Object, 'ResponseText', @ResponseText OUTPUT
EXEC sp_OAGetProperty @Object, 'statusText', @StatusText OUTPUT
EXEC sp_OADestroy @Object

PRINT cast(@Status as varchar(100)) +'('+@StatusText+') '+ @ResponseText


Сообщение было отредактировано: 28 авг 19, 17:59
28 авг 19, 17:51    [21959324]     Ответить | Цитировать Сообщить модератору
 Re: PUSH уведомления напрямую из SQL Server (может кому понадобится)  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Нестандартное мышление,

Если уж очень нужно лучше бы CLR написали чем это г-но использовать.
28 авг 19, 23:37    [21959445]     Ответить | Цитировать Сообщить модератору
 Re: PUSH уведомления напрямую из SQL Server (может кому понадобится)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Нестандартное мышление,

sp_OA следует отстреливать, как только заметишь :) Для домашних поделок еще допустимо, но вот на производстве совершенно нет.
29 авг 19, 11:28    [21959659]     Ответить | Цитировать Сообщить модератору
 Re: PUSH уведомления напрямую из SQL Server (может кому понадобится)  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3462
Не трогайте его (ц)

"нестандартное" - да, а вот по поводу второго слова какие-то смутные сомнения
29 авг 19, 12:44    [21959737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить