Here I have written a sql store Procedure to send SMS using Thrid pary api.
Step 1 :- Configure sp_configure to enable Ole Automation Procedures
Step 2 :- Create sp_OACreate
Step 3 :- Open sp_OAMethod
Step 4 :- Send sp_OAMethod
Step 5 :- Get Error using sp_OAGetErrorInfo
Step 6 :- Destroy Object using sp_OADestroy
Step 7 :- Configure sp_configure to disable Ole Automation Procedures
USE [DemoDb]
GO
/****** Object: StoredProcedure [PWS].[Sms_Sender] Script Date: 25-04-2015 12:14:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [PWS].[Sms_Sender]
( @MobileNo bigint,
@smstext as varchar(300))
as
BEGIN
Declare @obj int,@Result int
Declare @sUrl as varchar(500)
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @sResponse VARCHAR(50)
if((SELECT value FROM sys.configurations where name='show advanced options')=0)
begin
Exec sp_configure 'show advanced options', 1;
RECONFIGURE with override;
end
if((SELECT value FROM sys.configurations where name='Ole Automation Procedures')=0)
begin
Exec sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE with override;
end
--exec [PWS].[sp_Enable_OleAutomation]
EXEC @Result = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @obj OUT
set @sUrl='http://enterprise.smsgupshup.com/GatewayAPI/rest?method=sendMessage&send_to=#MobNo#&msg=Test&userid=userId&password=*******
&msg=#Msg#&v=1.1&msg_type=TEXT&auth_scheme=PLAIN'
set @sUrl=REPLACE(@sUrl,'#MobNo#',@MobileNo)
set @sUrl=REPLACE(@sUrl,'#Msg#',@smstext)
EXEC @Result = sp_OAMethod @obj, 'Open', NULL, 'GET', @sUrl, false
EXEC @Result = sp_OAMethod @obj, 'send'
select @obj
if @Result <> 0
Begin
EXEC sp_OAGetErrorInfo @obj, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
Raiserror('sp_OAMethod Send FAILED!', 16, 1)
end
else
Begin
EXEC @Result = sp_OAGetProperty @obj,'responseText', @sResponse OUT
end
Exec sp_OADestroy @obj
if((SELECT value FROM sys.configurations where name='Ole Automation Procedures')=1)
begin
Exec sp_configure 'Ole Automation Procedures',0;
RECONFIGURE;
end
if((SELECT value FROM sys.configurations where name='show advanced options')=1)
begin
Exec sp_configure 'show advanced options', 0;
RECONFIGURE;
end
end
Step 1 :- Configure sp_configure to enable Ole Automation Procedures
Step 2 :- Create sp_OACreate
Step 3 :- Open sp_OAMethod
Step 4 :- Send sp_OAMethod
Step 5 :- Get Error using sp_OAGetErrorInfo
Step 6 :- Destroy Object using sp_OADestroy
Step 7 :- Configure sp_configure to disable Ole Automation Procedures
USE [DemoDb]
GO
/****** Object: StoredProcedure [PWS].[Sms_Sender] Script Date: 25-04-2015 12:14:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [PWS].[Sms_Sender]
( @MobileNo bigint,
@smstext as varchar(300))
as
BEGIN
Declare @obj int,@Result int
Declare @sUrl as varchar(500)
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @sResponse VARCHAR(50)
if((SELECT value FROM sys.configurations where name='show advanced options')=0)
begin
Exec sp_configure 'show advanced options', 1;
RECONFIGURE with override;
end
if((SELECT value FROM sys.configurations where name='Ole Automation Procedures')=0)
begin
Exec sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE with override;
end
--exec [PWS].[sp_Enable_OleAutomation]
EXEC @Result = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @obj OUT
set @sUrl='http://enterprise.smsgupshup.com/GatewayAPI/rest?method=sendMessage&send_to=#MobNo#&msg=Test&userid=userId&password=*******
&msg=#Msg#&v=1.1&msg_type=TEXT&auth_scheme=PLAIN'
set @sUrl=REPLACE(@sUrl,'#MobNo#',@MobileNo)
set @sUrl=REPLACE(@sUrl,'#Msg#',@smstext)
EXEC @Result = sp_OAMethod @obj, 'Open', NULL, 'GET', @sUrl, false
EXEC @Result = sp_OAMethod @obj, 'send'
select @obj
if @Result <> 0
Begin
EXEC sp_OAGetErrorInfo @obj, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
Raiserror('sp_OAMethod Send FAILED!', 16, 1)
end
else
Begin
EXEC @Result = sp_OAGetProperty @obj,'responseText', @sResponse OUT
end
Exec sp_OADestroy @obj
if((SELECT value FROM sys.configurations where name='Ole Automation Procedures')=1)
begin
Exec sp_configure 'Ole Automation Procedures',0;
RECONFIGURE;
end
if((SELECT value FROM sys.configurations where name='show advanced options')=1)
begin
Exec sp_configure 'show advanced options', 0;
RECONFIGURE;
end
end
No comments:
Post a Comment