Пример реализации отправки sms через протокол SMPP v 3.4

09.01.15

Интеграция - SMS рассылки

В этой статье публикуется пример реализации сервиса по отправке смс-сообщений через протокол SMPP v3.4 из программы семейства 1С:Предприятие 8x.

Начнем с того, что работодателем мне была поставлена задача - создать механизм по отправке смс-сообщений фиксированной длины с помощью сервиса, который предоставляется компанией Билайн.

После получения необходимых реквизитов от провайдера: таких как логин, пароль, сетевой адрес, номер порта и небольшого томика документации, стало понятно, что дело придется иметь с так называемым сетевым протоколом SMPP v 3.4.

Надо признаться, что до этого момента у меня не было опыта работы с каким-либо сетевым протоколом, и кроме языка 1С уровня программиста-внедренца, более никаким программным языком не владею.

ActiveХ: Winsock

Главная и основная задача была найти программные средства, которые бы позволили работать с сетевым протоколом. В 1С таких средств не оказалось, может быть я их просто не нашел, и после тщательных поисков возникла идея воспользоваться АктивХ компонентой предоставляемой компанией Microsoft - Winsock. 

Из википедии... Windows Sockets API (WSA), название которого было укорочено до Winsock. Это техническая спецификация, которая определяет, как сетевое программное обеспечение Windows будет получать доступ к сетевым сервисам, в том числе, TCP/IP. Он определяет стандартный интерфейс между клиентским приложением (таким как FTP-клиент или веб-браузер) и внешним стеком протоколов TCP/IP. Он основывается на API модели сокетов Беркли, использующейся в BSD для установки соединения между программами.

Для установки и регистрации в ОС Windows необходмых файлов данной компоненты воспользовался советом и просто установил на компьютер пакет http://www.microsoft.com/ru-ru/softmicrosoft/VisualStudioExpress.aspx

После установки пакета (я установил версию visual basic 2012 express) появилась возможность разместить на форме winsock компоненту и использовать ее свойства и методы.

Рис. 1 Расположение компоненты

Рис. 2 Методы winsock

Первым шагом алгоритма будет процедура инициализации настроек и выполнение метода подключения

 

Процедура Иницилизация() Экспорт

		мWinSocketActiveX = ПолучитьФорму("Форма").ЭлементыФормы.WinSocket;

	//иницилизация настроек для подключения
	мWinSocketActiveX.RemotePort = 3334;
	мWinSocketActiveX.RemoteHost = "217.118.84.12";
	
	ВыполнитьПодключение();
	
КонецПроцедуры // Иницилизация()

Процедура ВыполнитьПодключение()

	Если  мWinSocketActiveX.State = 0 Тогда
		 мWinSocketActiveX.Connect();
	КонецЕсли;

КонецПроцедуры

После успешной установки подключения к серверу клиенту необходимо в течении 10 секунд отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER иначе соединение будет разорвано сервером.  Поэтому в коде проверяем статус подключения,  собираем и отправляем  пакет - PDU (Protocol Data Units (Bind_Transceiver).

Процедура ОпроситьСоединение() Экспорт 

	Если мWinSocketActiveX.State = 7 Тогда
		PDU = СобратьПакет_BIND_Transceiver();
		мWinSocketActiveX.SendData(PDU);
	Иначе //обработать другие состояния!!!
		
	КонецЕсли;

КонецПроцедуры // УстановитьСоединение()

 

Для сборки PDU используем многомерный массив 1С COMSafeArray. 

Функция СобратьПакет_BIND_Transceiver()

	Матрица = Новый COMSafeArray("VT_UI1",37);
	
	Матрица.SetValue(0,0);
	Матрица.SetValue(1,0);
	Матрица.SetValue(2,0);
	Матрица.SetValue(3,37);
	//код сокращен для этой статьи***
	//***
	Матрица.SetValue(32,0);
	Матрица.SetValue(33,52);
	Матрица.SetValue(34,1);
	Матрица.SetValue(35,1);
	
	Матрица.SetValue(36,0);
	
	Возврат Матрица;
	
КонецФункции // СобратьПакет_BIND_Transceiver()

Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.

После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.

 Методом DataArrival() принимаем и обрабатываем входящие пакеты:

Процедура WinSocketDataArrival(Элемент, bytesTotal)
	
	ВходящийПакет = Неопределено;
	мWinSocketActiveX.GetData(ВходящийПакет);
		
	Если ТипЗнч(ВходящийПакет) = Тип("COMSafeArray") Тогда
		ОбработатьВходящийПакет(ВходящийПакет);
	КонецЕсли;

КонецПроцедуры

 

Процедура ОбработатьВходящийПакет(Пакет)  Экспорт
	
	//пришел пакет ENQUIRE_LINK
	Если Пакет.GetValue(4) = 0 И Пакет.GetValue(7) = 21 Тогда  
		PDU = Фабрика_PDU_ENQUIRE_LINK_RESP(Пакет);
		ОтправитьПакет(PDU);
		Если мФлагОтправитьСМС Тогда
			СобратьИОтправитьПакет_CMC();//отсюда отправялем смс-сообщение
			мФлагОтправитьСМС = Ложь;
		КонецЕсли;
	КонецЕсли;
	
	//пришел пакет bind_transceiver_resp
	Если   Пакет.GetValue(4) = 128 И Пакет.GetValue(7) = 9 Тогда  
		ОбработатьПакет_bind_transceiver_resp(Пакет); 		
	КонецЕсли;
	
	//пришел пакет submit_sm_resp
	Если   Пакет.GetValue(4) = 128 И Пакет.GetValue(7) = 4 Тогда  
		ОбработатьПакет_submit_sm_resp(Пакет);
	КонецЕсли;
	
	//пришел пакет Query_sm_resp
	Если   Пакет.GetValue(4) = 128 И Пакет.GetValue(7) = 3 Тогда  
		ОбработатьПакет_Query_sm_resp(Пакет);
	КонецЕсли;
	
	//пришел пакет UNBIND_resp
	Если   Пакет.GetValue(4) = 128 И Пакет.GetValue(7) = 6 Тогда  
		мWinSocketActiveX = Неопределено;
	КонецЕсли;
	
КонецПроцедуры // ОбработатьВходящийПакет()

 

После того как клиент и сервер успешно обменялись пакетами ENQUIRE_LINK можно отправить текст смс-сообщения

 

Процедура СобратьИОтправитьПакет_CMC()
	
	Перем PDU;
	
	Если ЗаполнитьТаблицуЗначенийСМС() Тогда
		НомерТел 			= мТабЗнДиспетчерСМС[0].НомерТелефона;
		НомерДок 			= мТабЗнДиспетчерСМС[0].НомерДокумента;
		ДатаДок  			= мТабЗнДиспетчерСМС[0].ДатаДокумента;
		СтатусСМС		 	= мТабЗнДиспетчерСМС[0].СтатусСМС;
		ИдентификаторСМС	= мТабЗнДиспетчерСМС[0].ИдентификаторСМС;
		ТипДокумента		= мТабЗнДиспетчерСМС[0].ЗаказПокупателя;
		Если СтатусСМС = 0 Тогда
			PDU = СобратьПакет_Submit_SM(НомерТел,НомерДок,ДатаДок,ТипДокумента);
			СтрокаСообщения = Формат(ТекущаяДата(),"ДЛФ=DT")+" <= Отправляю СМС на номер: " +НомерТел+". Inf...";
			Лог.ДобавитьСтроку(СтрокаСообщения);
		ИначеЕсли СтатусСМС = 10 Тогда
			PDU = СобратьПакет_Query_SM(ИдентификаторСМС);
			СтрокаСообщения = Формат(ТекущаяДата(),"ДЛФ=DT")+" <= Запрашиваю статус СМС для номера: "+НомерТел + " . Inf...";
			Лог.ДобавитьСтроку(СтрокаСообщения);
		КонецЕсли;
	Иначе
		СтрокаСообщения = Формат(ТекущаяДата(),"ДЛФ=DT")+" <= Нет данных для отправки смс. Закрываю канал связи. Inf...";
		Лог.ДобавитьСтроку(СтрокаСообщения);
		PDU = СобратьПакет_UNBIND(); // отправлять больше нечего. Закрываем соединение;
	КонецЕсли;
	
	ОтправитьПакет(PDU);
	
КонецПроцедуры // СобратьИОтправитьПакет_CMC()

// <Описание функции>
//
// Параметры
//  <Параметр1>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//  <Параметр2>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//
// Возвращаемое значение:
//   <Тип.Вид>   - <описание возвращаемого значения>
//
Функция СобратьПакет_Submit_SM(НомерТелефона,НомерДокумента,ДатаДокумента,Объект)
	
	Перем ИспользоватьРусский;
	
	ИспользоватьРусский = Истина; //настройка
	
	Если ТипЗнч(Объект) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
		СообщениеТекстЛатиница = "Vash tovar po zakazu N "+НомерДокумента+" ot " + Формат(ДатаДокумента,"ДФ=dd.MM.yyyy")+" dostavlen";
		СообщениеТекстРусский  = "Ваш товар по заказу № "+НомерДокумента+" от " + Формат(ДатаДокумента,"ДФ=dd.MM.yyyy")+" доставлен";
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.АктПретензий") Тогда
		СообщениеТекстЛатиница = "Vash tovar gotov k vydachi. Akt pretenzii N "+НомерДокумента+" ot " + Формат(ДатаДокумента,"ДФ=dd.MM.yyyy");
		СообщениеТекстРусский  = "Ваш товар готов к выдаче. Акт претензии № "+НомерДокумента+" от " + Формат(ДатаДокумента,"ДФ=dd.MM.yyyy");
	КонецЕсли;
	
	Если ИспользоватьРусский Тогда
		СообщениеТекст 			= СообщениеТекстРусский;
		МассивКодовРусскихБукв 	= ЗакодироватьРусскийТекст(СообщениеТекстРусский);
		ДлинаСообщения	        = СтрДлина(СообщениеТекст)*2;
		DataCod = 8;
	Иначе
		СообщениеТекст = СообщениеТекстЛатиница;
		ДлинаСообщения	        = СтрДлина(СообщениеТекст);
		DataCod = 0;
	КонецЕсли;
	
	ДлинаНомераТелефона 		= СтрДлина(НомерТелефона);
	ДлинаПакета = 32+ДлинаНомераТелефона+11+ДлинаСообщения;	
	МатрицаДанных = Новый COMSafeArray("VT_UI1",ДлинаПакета-1);
	
	//Заголовок
	МатрицаДанных.SetValue(0,	0);
	МатрицаДанных.SetValue(1,	0);
	МатрицаДанных.SetValue(2,	0);
	МатрицаДанных.SetValue(3,	ДлинаПакета-1);
	
	МатрицаДанных.SetValue(4,	0);
	МатрицаДанных.SetValue(5,	0);
	МатрицаДанных.SetValue(6,	0);
	МатрицаДанных.SetValue(7,	4);
	
	МатрицаДанных.SetValue(8,	0);
	МатрицаДанных.SetValue(9,	0);
	МатрицаДанных.SetValue(10,	0);
	МатрицаДанных.SetValue(11,	0);
	
	МатрицаДанных.SetValue(12,	0);
	МатрицаДанных.SetValue(13,	0);
	МатрицаДанных.SetValue(14,	0);
	МатрицаДанных.SetValue(15,	2); //номер пакета
	
	//тело
	МатрицаДанных.SetValue(16,	0);
	МатрицаДанных.SetValue(17,	5);
	МатрицаДанных.SetValue(18,	1);
	МатрицаДанных.SetValue(19,	КодСимвола("k"));  //K
	
	МатрицаДанных.SetValue(20,	КодСимвола("."));
	МатрицаДанных.SetValue(21,	КодСимвола("a")); //
	МатрицаДанных.SetValue(22,	КодСимвола("p")); //
	МатрицаДанных.SetValue(23,	КодСимвола("e")); //
	МатрицаДанных.SetValue(24,	КодСимвола("l"));//
	МатрицаДанных.SetValue(25,	КодСимвола("s"));
	МатрицаДанных.SetValue(26,	КодСимвола("i"));
	МатрицаДанных.SetValue(27,	КодСимвола("n")); //
	
	МатрицаДанных.SetValue(28,	0);
	МатрицаДанных.SetValue(29,	1);
	МатрицаДанных.SetValue(30,	1);
	
	Индекс = 31;
	Для  НомерСтроки = 1 По ДлинаНомераТелефона Цикл
		МатрицаДанных.SetValue(Индекс,КодСимвола(НомерТелефона,НомерСтроки));
		Индекс = Индекс+1;
	КонецЦикла;
	
	МатрицаДанных.SetValue(42,	0);
	МатрицаДанных.SetValue(43,	0);
	
	МатрицаДанных.SetValue(44,	0);
	МатрицаДанных.SetValue(45,	0);
	МатрицаДанных.SetValue(46,	0);
	МатрицаДанных.SetValue(47,	0);
	
	МатрицаДанных.SetValue(48,	1);
	МатрицаДанных.SetValue(49,	1);
	МатрицаДанных.SetValue(50,	DataCod);//data coding
	МатрицаДанных.SetValue(51,	1);
	
	МатрицаДанных.SetValue(52,	ДлинаСообщения);
	
	Индекс = 53;
	Если ИспользоватьРусский Тогда
		Для  НомерСтроки1 = 0 По ДлинаСообщения-1 Цикл 
			СимВ = МассивКодовРусскихБукв[НомерСтроки1];
			МатрицаДанных.SetValue(Индекс,СимВ);
			Индекс = Индекс+1;
		КонецЦикла;
	Иначе
		Для  НомерСтроки2 = 1 По ДлинаСообщения Цикл  
			ЗначениеСимвола = КодСимвола(СообщениеТекст,НомерСтроки2);
			МатрицаДанных.SetValue(Индекс,ЗначениеСимвола);
			Индекс = Индекс+1;
		КонецЦикла;
	КонецЕсли;
	
	Возврат МатрицаДанных;
	
КонецФункции // СобратьПакет_Submit_SM()
Процедура ОтправитьПакет(PDU) 

	Если мWinSocketActiveX.State = 7 Тогда
		мWinSocketActiveX.SendData(PDU);
	КонецЕсли;

КонецПроцедуры // ОтправитьПакет()

В правилах хорошего тона будет считаться отправка UNBIND пакета, если канал связи вы больше не будете использовать.

SMPP Билайн SMS СМС

См. также

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83622    40    191    

127

Подтверждение скидки и верификация дисконтной карты по СМС (SMS) или звонку для 1С

SMS рассылки Оптовая торговля Розничная торговля Оперативный учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Клиенту на номер телефона уходит СМС с четырехзначным случайным цифровым кодом. Клиент сообщает код продавцу, если код подходит, только тогда применяется скидка или бонусная программа. Вместо SMS можно направлять входящий звонок на телефон покупателя, последние четыре цифры и будут являться кодом подтверждения.

4500 руб.

06.09.2017    25100    25    0    

32

Отправка SMS через сервис Bytehand

SMS рассылки Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Расширение для конфигураций 1С, позволяющее осуществлять подключение к сервису Bytehand и отправку СМС.

1 стартмани

27.09.2023    532    1    user1984097    0    

6

Универсальная простая отправка СМС

SMS рассылки Абонемент ($m)

Расширение предназначено для оправки СМС по списку телефонов. Является универсальным и подойдёт для любой конфигурации.

2 стартмани

14.09.2023    1458    3    Viki_push    3    

50

MIE - система мониторинга важных событий. Все важные события из 1С теперь у Вас в мобильном!

Статистика базы данных Внешние источники данных WEB-интеграция SMS рассылки Мобильная разработка Мониторинг Конфигурации 1cv8 Конфигурации 1cv7 Платные (руб)

Интеграция 1С и WhatsApp или Viber или Telegram - это прошлый век. Зачем это всё, когда можно получать сообщение прямо в сам телефон минуя мессенджер? Да ещё и уведомление с сигналом?! А может ли подобный интегратор перекинуть отчёт? Массив данных? - Представляем MIE! С MIE контроль задач станет простым и избавит вас от постоянных мыслей о работе. Где бы вы ни находились, благодаря связи с 1С, приложение вовремя донесет до вас нужную информацию путем уведомлений. Больше вы не пропустите важное событие, пользователи не застанут врасплох названивая и спрашивая "а что случилось, почему не работает система?" - Вы будете в курсе событий! Оповещение из 1С приходит на мобильное устройство в течении 5и минут. Вы сами решаете какие события из 1С должны прийти на телефон. 1й месяц работы программы - бесплатный.

1200 руб.

11.04.2023    3713    0    0    

2

Автоматическая рассылка (SMS, E-Mail) при начислении бонусов регламентным заданием для Розницы 2.3

SMS рассылки Email рассылки Платформа 1С v8.3 1С:Розница 2 Управленческий учет Абонемент ($m)

Расширение конфигурации Розница 2.3 для включения автоматического формирования документа "Информационная рассылка" (SMS, E-Mail) при начислении бонусов регламентным заданием по правилу расчета бонусных баллов.

1 стартмани

05.12.2022    2303    1    Saipl    0    

0

SMS-рассылка из 1С:Розница 2.3 (бонусная система)

SMS рассылки Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Абонемент ($m)

Обработка формирует информационную рассылку клиентам (физическим лицам) на основании продаж по бонусам в течение дня.

2 стартмани

25.10.2022    2530    0    Andreyka2795    0    

2

Пример автоматического создания рассылок смс для УТ 11.4

SMS рассылки Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка формирует документ "Рассылка клиентам", заполняя списком партнеров и текстом смс, при назначении расписания на обработку можно получать необходимое количество документов, в зависимости от того, как часто происходит отправка.

1 стартмани

22.12.2021    3829    6    bob_    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 09.01.15 09:03 Сейчас в теме
Насчет применимости пока не знаю, но если встретятся подобные задачи вернусь к публикации. Плюс за иллюстрацию технологии ActiveХ: Winsock как сторонних объектов 1С 8. Обычно очень редко приходится иметь с ними дело. Чаще с внешними компоненками *.dll вызовом через COM
4. chilyagin 91 10.01.15 12:52 Сейчас в теме
(1) kostyaomsk, Спасибо за плюсик. :) Что касается области применения технологии winsock, то мне кажется, что можно на нем написать какую-нибудь аську для 1С-пользователей.
2. Tanis 09.01.15 23:43 Сейчас в теме
Доброй ночи!
Интересовался подобной возможностью, но везде говорилось, что будет списана оплата смс оповещений, с телефона пользователя, ну или корпаративного телефона.
А в данном случае, требуется оплата? Или через интернет просто уходит и все?
Спасибо!
3. chilyagin 91 10.01.15 12:49 Сейчас в теме
(2) Tanis, Доброе время суток! В моем случае данный сервис есть платный. Организация заключила договор с компанией Билайн, перечисляем абонентку.
Badakismati; +1 Ответить
5. dyak84 11.01.15 08:59 Сейчас в теме
Спасибо за информацию очень детально разжевано, все разложено по полочкам. Автор так держать. Будет чем занятся на выходных
6. jobkostya1c_ERP 100 11.01.15 12:22 Сейчас в теме
Нужно будет попробовать внедрить хотя бы Асю на 1С (вернее массовое сообщение). Видел подобную реализацию, но каким-то древним методом на 7.7 для информирования (не эта естественно технология).
7. chilyagin 91 11.01.15 16:44 Сейчас в теме
(6) kostyaomsk, Для аськи эта технология хорошо подойдет. К тому же на надо будет шифровать данные, т.к. через winsock строка передается на ура без кодирования, в ANSI
jobkostya1c_ERP; +1 Ответить
8. CheBurator 3119 11.01.15 16:52 Сейчас в теме
На клюшках смс проще всего купить доступ к сервису рассылки сообщений и из клюшек в него пихать исходные данные и все
jobkostya1c_ERP; +1 Ответить
9. chilyagin 91 11.01.15 21:03 Сейчас в теме
(8) CheBurator, К сожалению, передо мной не ставилась задача выбирать провайдера по доставке смс. Уверен, что есть другие провайдеры, у которых сервис более доступен. Билайн выбрали потому, что данный протокол обеспечивает пакетную рассылку смс, и главное - это то, что Билайн предоставляет статус по каждой доставленной смс.
11. JohnyDeath 301 11.01.15 21:08 Сейчас в теме
(9) все поставщики рассылок предоставляют вам нормальный API, в котором обязательно будет и статус сообщения. Вот небольшой список:

http://sms.ru/
http://avisosms.ru/
http://www.smspilot.ru/
https://www.bytehand.com/
http://www.epochta.ru/products/sms/
http://www.vesms.ru/
http://websms.ru/

Некоторые из них предоставляют бесплатные смс для разработчиков в целях тестирования
13. chilyagin 91 11.01.15 21:10 Сейчас в теме
(11) JohnyDeath, Я не агитирую за Билайн и за протокол SMPP :). Почему? Ответил уже в этой ветке.
30. Renard_ 10.11.15 11:04 Сейчас в теме
(11) JohnyDeath, (9)

(11) JohnyDeath,

По Украине пользуюсь пока этим сервисом https://smsclub.mobi. Хотелось бы дешевле, но, я так понимаю, для прямого договора с оператором нужны огромные объемы?
10. JohnyDeath 301 11.01.15 21:05 Сейчас в теме
Для УФ не прокатит, ибо ActiveX
12. chilyagin 91 11.01.15 21:08 Сейчас в теме
(10) JohnyDeath, :) УФ - это не тупик, а всего лишь препятствие, которое можно обойти.
14. JohnyDeath 301 11.01.15 21:25 Сейчас в теме
(12) можно узнать про ваш способ?
15. chilyagin 91 11.01.15 22:03 Сейчас в теме
(14) JohnyDeath, Пожайлуйста, :) Мне ничего не мешает написать отдельную конфигурацию для рассылки смс на обычных формах, а дальше создать процедуру для обмена между конфигурациями с УФ и конфигурацией СМС
16. JohnyDeath 301 11.01.15 22:41 Сейчас в теме
33. Simpson 8 20.02.16 00:30 Сейчас в теме
(15) Не, ну а чо...правильно. Нафига нам универсальность? Создадим кучу конфигураций каждую под определенные нужны и наладим между ними обмен.
17. LexSeIch 210 12.01.15 04:26 Сейчас в теме
Мир этому дому!
Полезная информация - взял себе на заметку. Автору спасибо!
18. Badakismati 12.01.15 13:45 Сейчас в теме
Спасибо! Как раз искал нечто подобное!
19. ig1082 279 12.01.15 15:14 Сейчас в теме
Долгое время искал подобное для Мегафона.
Компонента имеется на англоязычных ресурсах, но она довольно древняя (2003 года)
и ее не удалось подружить с 1С.
В итоге сейчас использую PHP-скрипты (просто формируется файл PHP, запускаемый на сервере 1С).
Автору + за старания.
Вопрос - предложенная схема нормально работает с длинными SMS - они в итоге склеиваются у получателя?
20. chilyagin 91 12.01.15 15:24 Сейчас в теме
(19) ig1082, В компании Билайн, предупредили, что текст смс не более 160 символов. Но полагаю, что это ограничение чисто условное. В документации по SMPP 3.4, в разделе submit_sm, можно найти описание параметра, который управляет длиной см-сообщения. Но лично в этом не практиковался
21. mmoozzgg 13.01.15 13:38 Сейчас в теме
а что помешало использовать SMTP протокол отправки? у билайна есть...
24. chilyagin 91 13.01.15 15:58 Сейчас в теме
(21) mmoozzgg, Полагаю, что нет такого сервиса отправки СМС через SMTP у Билайна
25. mmoozzgg 14.01.15 11:42 Сейчас в теме
(24) есть, сам юзаю
Процедура ОтправитьСМСБилайнSMTP(Номер, ТекстСообщения)

	СМТПСервер = "beeline.amega-inform.ru"; //Для веб формы те же логин/пароль
	СМТПСервер_Порт = "256";
	Логин = "хххххх";
	Пассворд = "хххххх";
	
	Письмо = Новый ИнтернетПочтовоеСообщение;
	Письмо.Тема = "";
	
	Отправитель = "test@test.ru";
		
	Письмо.Отправитель = Отправитель;
	Письмо.Получатели.Добавить("" + Номер + "@sms.beeline.amega-inform.ru");
	
	Письмо.Тексты.Добавить(ТекстСообщения, ТипТекстаПочтовогоСообщения.ПростойТекст);
	Письмо.ОбработатьТексты();
	
	Профиль = Новый ИнтернетПочтовыйПрофиль;
	Профиль.АдресСервераSMTP = СМТПСервер;
	Профиль.ПортSMTP = СМТПСервер_Порт;
	Профиль.ПользовательSMTP = Логин;
	Профиль.ПарольSMTP = Пассворд;	
	Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Plain;
	
	Попытка
		Почта = Новый ИнтернетПочта;
		Почта.Подключиться(Профиль);
		Почта.Послать(Письмо);
		Почта.Отключиться();	
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

КонецПроцедуры
Показать
jobkostya1c_ERP; +1 Ответить
28. chilyagin 91 14.01.15 13:13 Сейчас в теме
(21) mmoozzgg,
а что помешало использовать SMTP протокол отправки? у билайна есть...

Ничего не помешало. Просто поставили задачу таким образом и в придачу дали томик документации. Это был SMPP :)
29. mmoozzgg 14.01.15 15:04 Сейчас в теме
(28) ну за статью winsock конечно плюс
22. марксист 13.01.15 14:34 Сейчас в теме
есть ли возможность создание смс переписки в 1с через smpp,нет ли каких нить ограничений?
23. chilyagin 91 13.01.15 15:56 Сейчас в теме
(22) марксист, Если я вас правильно понял, то вряд ли это получиться. В телефон вы все равно вставляете симку сотовых операторов. Вы можете переписываться используя технологию TCP/IP. Можете в 1С написать сервер и клиент на winsock. Протокол кодирования SMPP для этого не нужен. У вас просто получиться аська для 1С
26. progersan 5 14.01.15 11:54 Сейчас в теме
плюс за интересную статью.
минус за правописание "товар готов к выдачи" ;)
клиенты наверное в шоке.. или только те, кто знает русский язык.
27. chilyagin 91 14.01.15 12:53 Сейчас в теме
(26) progersan, За грамматику не судите строго. Текст сообщение ноу-хау юристов нашей организации :)))
31. chilyagin 91 10.11.15 16:23 Сейчас в теме
Заключайте абонемент, и оператор будет безразлично какой объем вы отправите
32. olegpim 25.11.15 11:30 Сейчас в теме
Можете выложить полный код функции СобратьПакет_BIND_Transceiver()?
progoleg; +1 Ответить
34. Simpson 8 20.02.16 00:33 Сейчас в теме
(32) olegpim, в этом нет необходимости. Скоро доделаю библиотеку отдельную, которая будет отсылать смс сообщения из 1С намного проще. Библиотека основана на Jamma.SMPP. Правда пришлось её доработать под отправку сообщений на кирилице и отправку длинных СМС.
35. chilyagin 91 20.02.16 07:56 Сейчас в теме
(34) Simpson, Может быть вы займетесь саморекламой в другом месте? Инфостарт, уверен, предоставит вам такую возможность, и все сообщество, с удовольствием, оценит по достоинству ваш потенциальный продукт.
36. Simpson 8 20.02.16 09:52 Сейчас в теме
(35) а это не самореклама, она мне ни к чему
37. orehova123 16.05.16 23:07 Сейчас в теме
Вот и до меня добралось SMPP, только мегафоновское и мануалом на 188 страниц. Срок - 2 дня. Поэтому автору - огромное спасибо за статью
38. Bayker 25.05.16 07:25 Сейчас в теме
(37) orehova123, Добрый день
Мы тоже заключили договор с мегафоном, вот только кроме IP адреса ничего не получили и тем более мануал (сказали больше ничего не дадут), скажите у Вас получилось по этой статье настроить отправку через мегафон?
39. zyto 30.06.16 15:10 Сейчас в теме
А всё-таки, где можно взять полный текст СобратьПакет_BIND_Transceiver()
или где найти описание что именно там должно быть?
40. zyto 30.06.16 17:22 Сейчас в теме
Чуть подробнее:
Пытаюсь настроить взаимодействие 1С и Naumen (Naumen SoftPhone).
Сделал:

мWinSocketActiveX.RemotePort = 9000;
мWinSocketActiveX.RemoteHost = МойIP;
мWinSocketActiveX.Connect();


Потом через обработку ожидания каждую секунду проверяю статус:
Сообщить(мWinSocketActiveX.State);


Получаю примерно такие результаты:
6
7
7
7
7
7
8
8
8
...

Т.е. соединение автоматически разрывается через некоторое время.
Что нужно послать что бы соединение сохранялось, и где про это можно почитать?
41. chilyagin 91 29.08.16 10:37 Сейчас в теме
Если используете протокол SMPP v 3.4 ,то для поддержания соединение необходимо обмениваться респ.пакетами
42. gremromchello 26.10.16 16:43 Сейчас в теме
Александр (chilyagin) привет. Дали задачу по реализации отправки СМС через Мегафон c SMPP 3.4 Пользуясь твоей наработкой устанавливаю связь -> обмен LINK пакетами идет и связь поддерживается. Скачать пока не могу. Потому изобретаю что то сам. Не могу разобраться в каком виде передается текст (русский). Реализовал кодирование в UCS2 (HEX на ACII + разбиение на байтовые блоки) но в каком виде их запихивать в пакет PDU не пойму. Подскажи если есть возможность.
43. chilyagin 91 27.10.16 08:38 Сейчас в теме
(42) gremromchello, Добрый день, Роман! Winsock компонента обменивается данными через многомерный массив 1С COMSafeArray. В статье приведен пример процедуры построения такого многомерного массива. Соответствие кодирования информации (символов) можете поискать в интернете или в "прицепе" к данному сообщению. Также в статье найдете пример функции сборки пакета "СобратьПакет_Submit_SM". На этом примере вы сможете понять, как монтировать текст сообщения
Прикрепленные файлы:
ТаблицаСимволов.mxl
44. gremromchello 28.10.16 10:06 Сейчас в теме
(43) Спасибо. Вот только таблица символов у меня другая. Но при анализе пакета в wireshark на вид все ок.
45. пользователь 11.08.17 16:36
Сообщение было скрыто модератором.
...
Оставьте свое сообщение