Как отправлять SMS с сайта через smsc.ru

Введение

СМС Центр (https://smsc.ru/) - это сервис для отправки SMS через API (и множества др. функций). 

Тарифы - https://smsc.ru/tariffs/

Здесь мы покажем как создать API исходящий запрос и как использовать его на форме отправки СМС. 

Исходящий API 

Создаем исходящий API на /asapi с кодом smsc (GET, json)

Создаем процедуру Request: 

CREATE PROCEDURE [dbo].[api_smsc_request]
	@parameters ExtendedDictionaryParameter READONLY, 
	@username nvarchar(32) 
AS
BEGIN
	declare @login nvarchar(128) = isnull(dbo.as_setting('smsc.login', ''), '')
    declare @psw nvarchar(128) = isnull(dbo.as_setting('smsc.psw', ''), '')
    
	declare @phone nvarchar(128) = isnull((select value2 from @parameters where [key]='phone'), '')
    declare @text nvarchar(max) = isnull((select value2 from @parameters where [key]='text'), '')
    
    if(@login='') begin 
    	select 0 Result, 'Не указан в настройках логин smsc.ru' Msg 
        return
    end 
    if(@psw='') begin 
    	select 0 Result, 'Не указан в настройках пароль smsc.ru' Msg 
        return
    end 
    if(@phone='') begin 
    	select 0 Result, 'Не указан номер телефона' Msg 
        return
    end 
    if(@text='') begin 
    	select 0 Result, 'Не указан текст СМС' Msg 
        return
    end 
    
	-- SELECT 1
	select '' Msg, 1 Result, 'https://smsc.ru/sys/send.php?login='+@login+'&psw='+@psw+'&phones='+@phone+'&mes='+ @text Url 

END

В настройках мы должны прописать логин и пароль к сервису smsc.ru, перед этим необходимо создать на нем кабинет и пополнить баланс.  

Процедура Response по умолчанию: 

CREATE PROCEDURE [dbo].[api_smsc_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY, 
	
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select '' Msg, 1 Result, @response Response
END

В целом метод готов к использованию. Его мы будем вызывать из формы отправки сообщения. 

Страница и форма отправки СМС

Создаем страницу sms, помещаем на нее форму отправки СМС (не забываем проставить Роли для формы): 

<div class="as-form" data-code="sms" data-itemid="kak-otpravlyat-sms-s-sayta-cherez-smsc-ru"></div>

В URL мы передаем телефон и текст по умолчанию в виде Телефон;Текст

В JS прописываем обработку вызова API после выполнения действия на форме: 

$(function(){
  as.formcallbacks["sms_saveItem"] = function(data){
    var ad = JSON.parse(data.additionalData);
    console.log(ad, "sms_saveItem");
    if(ad){
      var el = ad[0];
      if(el.result){
		var msg = el.msg;
        if(!msg){ 
            for(var i =0; i < el.items.length; i++)
            {
                if(el.items[i].key=="spCallbackResult") msg =el.items[i].title;
            }
        }
        as.sys.bootstrapAlert(msg || "OK", {type: "success", hidePrev: true, delay: 10000000});
      }else{
        as.sys.bootstrapAlert(el.msg || "Operation error", {type: "danger", hidePrev: true});
      }       
    }
  }

});

Теперь создаем форму sms с 2 колонками phone, text (Многострочное поле).  Оба поля обязательные.

GetItem формы sms:

CREATE PROCEDURE [dbo].[fm_sms_getItem]
    @itemID nvarchar(512),	
	@username nvarchar(256)
AS
BEGIN
	declare @phone nvarchar(256) = dbo.str_splitPart(@itemID, ';', 1)
    declare @text nvarchar(256) = dbo.str_splitPart(@itemID, ';', 2)
    -- SELECT 1
	select @phone phone, isnull(@text , 'Falcon Space') text, '{"maxlength": 70}' options_text
    -- SELECT 2
    select 1 LineLabel
END

SaveItem формы SMS: 

CREATE PROCEDURE [dbo].[fm_sms_saveItem]
   @username nvarchar(256), 
   @itemID nvarchar(512),
   @parameters ExtendedDictionaryParameter READONLY	
AS
BEGIN	
	declare @pphone nvarchar(max)
	select @pphone = Value2 from @parameters where [key]='phone'
	declare @ptext nvarchar(max)
	select @ptext = Value2 from @parameters where [key]='text'
	-- SELECT 1 
	select 1 Result, ' ' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer
	
	-- SELECT 2 Вызов внешнего действия
    select 'apirequest' type, 'smsc' code, 'phone' p1_name, @pphone p1_value, 'text' p2_name, @ptext p2_value

END

Где-то на страницах указываем ссылку на страницу в виде: 

/sms/79008007060;А это текст смс

Как выглядит форма отправки: 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы