Отправка СМС из 1С через ibatele.com

05.08.13

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

Рассылка СМС из 1С через REST API сервиса ibatele.com. Минимальный код, готовый для внедрения в любую конфигурацию.

Документация (высылается по запросу) указывает на то, что сервис имеет REST API.

Создаем общий модуль, например, ИБАТелеком (сервер)

&НаСервере 
Функция
ПолучитьСессию() Экспорт
    Настройки = ПолучитьНастройки();
    Соединение = Новый HTTPСоединение(Настройки.Сервер, , , , , Истина);
    Запрос = Новый HTTPЗапрос("/User/SessionId?login=" + Настройки.Логин + "&password=" + Настройки.Пароль);
    Ответ = Соединение.Получить(Запрос);
    Сессия = Ответ.ПолучитьТелоКакСтроку();
    Сессия = СтрЗаменить(Сессия, """", "");
 Возврат Сессия;
 
КонецФункции 

&НаСервере 
Функция ПолучитьНастройки()Экспорт 
 Настройки =Новый Структура(); 
 Настройки.Вставить("Сервер","integrationapi.net/rest/"); 
 Настройки.Вставить("Логин","USER"); 
 Настройки.Вставить("Пароль","PASSWORD");
Возврат Настройки;
КонецФункции 

&НаСервере 
Функция ПолучитьБаланс(Сессия)Экспорт 
 Настройки = ПолучитьНастройки(); 
 Соединение =Новый HTTPСоединение(Настройки.Сервер,,,,,Истина); 
 Запрос =Новый HTTPЗапрос("/User/Balance?sessionId="+ Сессия); 
 Ответ = Соединение.Получить(Запрос);
Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции 

&НаСервере 
Функция ОтправитьСМС(Сессия, Получатель, Отправитель, Текст)Экспорт 
 Настройки = ПолучитьНастройки(); 
 Соединение =Новый HTTPСоединение(Настройки.Сервер,,,,,Истина); 
 Запрос =Новый HTTPЗапрос("/Sms/Send?sessionId="+ Сессия +"&sourceAddress="+ Отправитель +"&destinationAddress="+ Получатель +"&data="+Текст); 
 Заголовки =Новый Соответствие(); 
 Ответ = Соединение.ОтправитьДляОбработки(Запрос);
 Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции 


Функция ПолучитьНастройки() формирует Структуру с настройками. В случае выноса настроек из кода в Регистр Сведений или Константы, необходимо переписать эту функцию.


Пример вызова функций

 

&НаСервере 
Процедура Тест()
    Сессия = ИБАТелеком.ПолучитьСессию();
    КодСообщения = ИБАТелеком.ОтправитьСМС(Сессия, “79501234567”, “SMSTEST”, “1C наше все!”);
    Баланс = ИБАТелеком.ПолучитьБаланс(Сессия);
КонецПроцедуры 


После регистрации доступен только один отправитель - SMSTEST


С виду все легко и просто. На 1С ничего не знает про SSL-сертификат сервиса integrationapi.net, что вызывает ошибку: "Peer certificate cannot be authenticated with known CA certificates”. 

Для корректной работы необходимо в "C:\Program Files (x86)\1cv82\8.2.18.82\bin\cacert.pem” добавить нижеуказанный текст. Путь файла может меняться в зависимости версии ОС и 1С. В случае работы с 1С-Сервером файл необходимо искать на сервере.


Certificate:

   Data:

       Version: 3 (0x2)

       Serial Number:

           34:4e:d5:57:20:d5:ed:ec:49:f4:2f:ce:37:db:2b:6d

   Signature Algorithm: sha1WithRSAEncryption

       Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA

       Validity

           Not Before: Nov 17 00:00:00 2006 GMT

           Not After : Jul 16 23:59:59 2036 GMT

       Subject: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA

       Subject Public Key Info:

           Public Key Algorithm: rsaEncryption

               Public-Key: (2048 bit)

               Modulus:

                   00:ac:a0:f0:fb:80:59:d4:9c:c7:a4:cf:9d:a1:59:

                   73:09:10:45:0c:0d:2c:6e:68:f1:6c:5b:48:68:49:

                   59:37:fc:0b:33:19:c2:77:7f:cc:10:2d:95:34:1c:

                   e6:eb:4d:09:a7:1c:d2:b8:c9:97:36:02:b7:89:d4:

                   24:5f:06:c0:cc:44:94:94:8d:02:62:6f:eb:5a:dd:

                   11:8d:28:9a:5c:84:90:10:7a:0d:bd:74:66:2f:6a:

                   38:a0:e2:d5:54:44:eb:1d:07:9f:07:ba:6f:ee:e9:

                   fd:4e:0b:29:f5:3e:84:a0:01:f1:9c:ab:f8:1c:7e:

                   89:a4:e8:a1:d8:71:65:0d:a3:51:7b:ee:bc:d2:22:

                   60:0d:b9:5b:9d:df:ba:fc:51:5b:0b:af:98:b2:e9:

                   2e:e9:04:e8:62:87:de:2b:c8:d7:4e:c1:4c:64:1e:

                   dd:cf:87:58:ba:4a:4f:ca:68:07:1d:1c:9d:4a:c6:

                   d5:2f:91:cc:7c:71:72:1c:c5:c0:67:eb:32:fd:c9:

                   92:5c:94:da:85:c0:9b:bf:53:7d:2b:09:f4:8c:9d:

                   91:1f:97:6a:52:cb:de:09:36:a4:77:d8:7b:87:50:

                   44:d5:3e:6e:29:69:fb:39:49:26:1e:09:a5:80:7b:

                   40:2d:eb:e8:27:85:c9:fe:61:fd:7e:e6:7c:97:1d:

                   d5:9d

               Exponent: 65537 (0x10001)

       X509v3 extensions:

           X509v3 Basic Constraints: critical

               CA:TRUE

           X509v3 Key Usage: critical

               Certificate Sign, CRL Sign

           X509v3 Subject Key Identifier:

               7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50

   Signature Algorithm: sha1WithRSAEncryption

        79:11:c0:4b:b3:91:b6:fc:f0:e9:67:d4:0d:6e:45:be:55:e8:

        93:d2:ce:03:3f:ed:da:25:b0:1d:57:cb:1e:3a:76:a0:4c:ec:

        50:76:e8:64:72:0c:a4:a9:f1:b8:8b:d6:d6:87:84:bb:32:e5:

        41:11:c0:77:d9:b3:60:9d:eb:1b:d5:d1:6e:44:44:a9:a6:01:

        ec:55:62:1d:77:b8:5c:8e:48:49:7c:9c:3b:57:11:ac:ad:73:

        37:8e:2f:78:5c:90:68:47:d9:60:60:e6:fc:07:3d:22:20:17:

        c4:f7:16:e9:c4:d8:72:f9:c8:73:7c:df:16:2f:15:a9:3e:fd:

        6a:27:b6:a1:eb:5a:ba:98:1f:d5:e3:4d:64:0a:9d:13:c8:61:

        ba:f5:39:1c:87:ba:b8:bd:7b:22:7f:f6:fe:ac:40:79:e5:ac:

        10:6f:3d:8f:1b:79:76:8b:c4:37:b3:21:18:84:e5:36:00:eb:

        63:20:99:b9:e9:fe:33:04:bb:41:c8:c1:02:f9:44:63:20:9e:

        81:ce:42:d3:d6:3f:2c:76:d3:63:9c:59:dd:8f:a6:e1:0e:a0:

        2e:41:f7:2e:95:47:cf:bc:fd:33:f3:f6:0b:61:7e:7e:91:2b:

        81:47:c2:27:30:ee:a7:10:5d:37:8f:5c:39:2b:e4:04:f0:7b:

        8d:56:8c:68

MD5 Fingerprint=8C:CA:DC:0B:22:CE:F5:BE:72:AC:41:1A:11:A8:D8:12

-----BEGIN CERTIFICATE-----

MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB

qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf

Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw

MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV

BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw

NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j

LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG

A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl

IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG

SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs

W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta

3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk

6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6

Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J

NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA

MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP

r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU

DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz

YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX

xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2

/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/

LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7

jVaMaA==

-----END CERTIFICATE-----

 

Сертификат действует до июля 2034 года, поэтому ниже рецепт по самостоятельному получению fingerprint сертификата с сайта.

- Заходим на https://integrationapi.net.Что отобразится на странице - не важно, главное что бы в начале урла был значек защищенного соединения.

- Далее в каждом браузере по-разному. Но необходимо “открыть” этот сертификат. Например в Хроме клик на замочке, далее закладка “соединение” и “информация сертификата”.

- В просмотре информации нажимает смотрим на закладку “путь сертификации” где выбираем самый верхний в дереве сертификат thawte.

- Этот сертификат необходимо экспортировать в формат DER (состав - копировать в файл).

- Далее с помощью openssl (под винду  http://slproweb.com/products/Win32OpenSSL.html)

openssl x509 -inform der -in filename.cer -text -fingerprint -md5 >fp.pem

- В  результате в файле fp.pem будет заветный сертификат, который и необходимо скопировать cacert.pem


Решение не оптимальное, но рабочее. Для внедрения в продакш крайне желательно:

- ввести кеширование Сессии, т.к. SID выдается на 2 часа.

- добавить проверку соединения с сервером

- добавить обработку ответов при отправки СМС.

См. также

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

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

4500 руб.

06.09.2017    25690    28    2    

35

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1547    3    6    

6

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    20202    dimanich70    81    

145

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4096    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18158    atdonya    24    

57

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    5506    ke.92@mail.ru    16    

65

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

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

2 стартмани

14.09.2023    1910    4    Viki_push    3    

54
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Deda 442 27.08.15 05:27 Сейчас в теме
+ 10 За полезную работу, которая значительно экономит время людям!
3. capitan 2507 27.08.15 12:25 Сейчас в теме
(1) Deda, хитрый ход :)
На самом деле, есть более простой способ перевести $m.
2. Зеленоград 27.08.15 09:32 Сейчас в теме
Интересно. Тарифы, ограничения, наличие заготовки под 7.7 ?
4. IBAtelecom 31.08.15 17:17 Сейчас в теме
службы технической поддержки IBA Telecom

8 (800) 555 06 41 - бесплатная линия по РФ
Тел: 8 (499) 653-61-30/ вн. 140
E-mail: support@ibatele.com

http://www.ibatele.com

У нас на сайте есть модуль для интеграции с 1С 8.2, используйте его.
Ссылка для скачивания:
Пример работы с сервисом для 1C 8.2
5. milolan 4 01.07.22 14:30 Сейчас в теме
Спасибо автору - рабочий код. немного добавлю от себя: не изменял файл cacert.pem, а дополнил текст функций.
платформа 8.3.18.1741
Функция ОтправитьСМС(Сессия, Получатель, Отправитель, Текст)Экспорт 
 Настройки = ПолучитьНастройки(); 
 ssl = Новый ЗащищенноеСоединениеOpenSSL();
 Соединение =Новый HTTPСоединение(Настройки.Сервер,,,,,15,ssl); //Таймаут и ssl
 Запрос =Новый HTTPЗапрос("/Sms/Send?sessionId="+ Сессия +"&sourceAddress="+ Отправитель +"&destinationAddress="+ Получатель +"&data="+Текст); 
 Заголовки =Новый Соответствие(); 
 Ответ = Соединение.ОтправитьДляОбработки(Запрос);
 Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции 
Показать

и аналогичные изменения в следующей функции
Функция ОтправитьСМС(Сессия, Получатель, Отправитель, Текст)Экспорт 
 Настройки = ПолучитьНастройки(); 
 ssl = Новый ЗащищенноеСоединениеOpenSSL();
 Соединение =Новый HTTPСоединение(Настройки.Сервер,,,,,15,ssl); 
 Запрос =Новый HTTPЗапрос("/Sms/Send?sessionId="+ Сессия +"&sourceAddress="+ Отправитель +"&destinationAddress="+ Получатель +"&data="+Текст); 
 Заголовки =Новый Соответствие(); 
 Ответ = Соединение.ОтправитьДляОбработки(Запрос);
 Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции 
Показать
Оставьте свое сообщение