gifts2017

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

Опубликовал Илья Белов (irktrans) в раздел Программирование - Практика программирования

Рассылка СМС из 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 часа.

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

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

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Дмитрий Краснопольский (Deda) (10.00 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Краснопольский (Deda) 27.08.15 05:27
+ 10 За полезную работу, которая значительно экономит время людям!
2. Сергей Пшеничников (Зеленоград) 27.08.15 09:32
Интересно. Тарифы, ограничения, наличие заготовки под 7.7 ?
3. Капитан Немо (capitan) 27.08.15 12:25
(1) Deda, хитрый ход :)
На самом деле, есть более простой способ перевести $m.
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
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа