gifts2017

Внешняя компонента для отсылки СМС через телефон, подключенный к компьютеру

Опубликовал Владимир Стахорский (rockford) в раздел Программирование - Внешние компоненты

Внешняя компонента для отсылки СМС через телефон, подключенный к компьютеру

Компонента AddInSendSMS предназначена для рассылки СМС через телефон, подключенный к компьютеру.

Поддерживается передача как сообщений на латинице (максимальная длина 39015 символов) так и на кириллице (максимальная длина 17085 символов)

Для использования компоненты необходимо скопировать файл AddInSendSMS в каталог программы 1C или базы данных.

Описание методов:

SendSMS(НомерАбонента, ТекстСообщения, Кодировка, Отчет);

Параметры:

  • НомерАбонента:  

Номер получателя (в международном формате без лидирующего "+"). Например "380671234567"

  • ТекстСообщения:  

Текст сообщения.

  • Кодировка

Формат кодирования сообщения:

        0 - Допускаются только символы латинского алфавита. Максимальная длина текстового сообщения 39015 символов.
        1 - Допускаются любые символы. Максимальная длина текстового сообщения 17085 символов.

  • Отчет: Получать отчет о доставке

        0 - Нет
        1 - Да


Возвращает:
  1   Успешный вызов
-1    Не могу открыть COM порт
-2    Не поддерживается SMS (команда AT+CSMS=0 вернула ошибку)
-3    Не могу установить режим PDU (команда AT+CMGF=0 вернула ошибку)
-4    Ошибка при передаче сообщения
-10  Не установлен телефон сервис-центра передачи СМС

Примеры использования:

Для 1С 7.7

ЗагрузитьВнешнююКомпоненту("AddInSendSMS.dll");
AddinSendSMS=СоздатьОбъект("AddIn.SendSMS");
AddinSendSMS.PortNumber=1;
AddinSendSMS.PortTimeout=10000;
AddinSendSMS.PortBaudRate=19200;
AddinSendSMS.SMSCenter ="380672020000";

НомерАбонента="380671234567";
ТекстСообщения = "Тестовое сообщение";

Рез=AddinSendSMS.SendSMS(НомерАбонента,ТекстСообщения,1,0);
Если
Рез=1 Тогда
   
Сообщить("Сообщение успешно послано абоненту : "+ НомерАбонента);
Иначе
   
Сообщить("Ошибка при посылке сообщения абоненту : "+ НомерАбонента);
КонецЕсли;

Для 1с 8.х

ЗагрузитьВнешнююКомпоненту("AddInSendSMS.dll")
AddinSendSMS=Новый ("AddIn.SendSMS");
AddinSendSMS.PortNumber=2;
AddinSendSMS.PortTimeout=10000;
AddinSendSMS.PortBaudRate=19200;
AddinSendSMS.SMSCenter ="380672020000";

НомерАбонента="380671234567";
ТекстСообщения = "Тестовое сообщение";

Рез=AddinSendSMS.SendSMS(НомерАбонента,ТекстСообщения,1,1);
Если
Рез=1 Тогда
   
Сообщить("Сообщение успешно послано абоненту : "+ НомерАбонента);
Иначе
   
Сообщить("Ошибка при посылке сообщения абоненту : "+ НомерАбонента);
КонецЕсли;

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Внешняя компонента + демонстрационная обработка 7.7
.1249550349 107,77Kb
25.09.09
206
.1249550349 107,77Kb 206 Скачать
Демонстрационная обработка 8.1 (без компоненты)
.1249560960 7,19Kb
25.09.09
40
.1249560960 7,19Kb 40 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Межов (mini_root) 06.08.09 13:30
Маленький совет: добавь в текст код с примером использования и опиши как функционирует компонента и чего требует.

2. Андрей Межов (mini_root) 06.08.09 13:34
Исходников, как я понимаю, не будет?
3. Den (dance000) 06.08.09 14:29
Странная компонента, у меня вырубился комп при попытке протестировать ее! ((
4. Владимир Стахорский (rockford) 06.08.09 14:38
(3) Тестировалось на WinXp Sp2 вроде все нормально. Опишите подробней
5. Serj (Serj1C) 06.08.09 15:29
regsrv32 AddInSendSMS.dll

8.1:

{Форма.Форма(3)}: Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается
AddinSendSMS=новый COMОбъект("AddIn.SendSMS");
по причине:
Интерфейс не поддерживается

Или как надо объект создать?
6. Владимир Стахорский (rockford) 06.08.09 15:35
(5) Пример для 8.х добавил в описание
7. Serj (Serj1C) 06.08.09 15:52
(6) неа, не канает...

{Форма.Форма(4)}: Тип не определен (AddIn.SendSMS)
AddinSendSMS=Новый ("AddIn.SendSMS");

Вот, добавил еще в начало:
ПодключитьВнешнююКомпоненту("AddIn.SendSMS");

вроде пошло дальше, но Рез = 0 пока...
8. Serj (Serj1C) 06.08.09 15:55
точнее результат -2.
А что значат параметры 1 и 0 в SendSMS ??
9. Андрей Межов (mini_root) 06.08.09 16:03
автору: лучше заведи в компоненте метод через который можно получить текстовое описание ошибки, а то -2 как -29345345 ни о чем не говорят
10. Андрей Межов (mini_root) 06.08.09 16:07
или бросай исключение(из COIM компонента на шарпе в 8.x вполне нормально перехватываются)
11. Андрей Межов (mini_root) 06.08.09 16:07
12. Владимир Стахорский (rockford) 06.08.09 16:10
(8,9) добавил описание метода SendSMS и кодов ошибок
13. Андрей Межов (mini_root) 06.08.09 16:15
еще одна тонкость: здесь не очень хороший редактор в плане вставки кода - воспользуйся внешней обработкой "Разукрашка" http://infostart.ru/projects/4014/ (она сгенерит тебе HTML, который можно вставить в режиме прямого редактирования HTML в здешнем редакторе).
14. Андрей Межов (mini_root) 06.08.09 16:19
0 и 1 для задания кодировки лучше заменить на свойство, тогда будет:

.....
x.UseUnicode=1;
.....

15. Вячеслав Н. Бойко (boy13) 06.08.09 17:44
Интересно узнать, как надо подключать телефон к компьютеру и что за телефон должен быть. (Смарт/Комунникатор/Обычный). Интересно было бы узнать принцип действия и поглядеть исходный код. Но за разработку - однозначно плюс!
16. dushelov (Душелов) 06.08.09 17:48
(15) Любой телефон, подключенный через компорт/эмулятор компорта. Работа с телефоном осуществляется обычной передачей АТ-команд. Ничего сложного.
17. Александр Калиновский (kalinovsky) 06.08.09 17:49
(14) на мой взгляд не логично... а если при каждом отправлении кодировка меняется?... каждый раз свойство менять?... а с точки зрения прграммирования ВК - это не один вызов функций...
18. Андрей Межов (mini_root) 06.08.09 17:53
19. Сергей (Che) Коцюра (CheBurator) 07.08.09 10:58
неинтересно.. если бы была отправка СМС без мобилы....
20. dushelov (Душелов) 07.08.09 11:08
21. Евгений Мартыненков (JohnyDeath) 07.08.09 11:24
(20) уже заждались компоненты по этой теме! ))
23. Invaa (Invaa) 12.08.09 16:32
Присоединил коммуникатор с использованием ActiveSync'a и bluetooth, COM-порт 8. В параметрах демонстрационной обработки изменил только порт (т.к. оператор как и в примере Киевстар). При попытке отправки выдает результат "-1". В чем может быть проблема?
24. Владимир Стахорский (rockford) 15.08.09 10:14
(23) Возможно ActiveSync и виноват. Попробуйте его выключить
25. Invaa (Invaa) 20.08.09 16:25
(24) Попробовал, тот же результат, для коммуникатора недоступен сервис "Bluetooth Serial Port". Попробую через usb.
26. Саня Пупкин (pupkinSana) 21.08.09 14:37
Хорошая вещь в теории, но у меня все настроено как описано и телефон все поддерживает, а не отправляет никак пишет ошибку -4. А у себя на фирме давно прикрутил утилитку с сайта simplesms.ru для пакетной отправки уведомлений клиентам из 1С 77. Хоть 1000 штук отправляй, правда 2-3 сек. на одну смс приходится...
27. Владимир Стахорский (rockford) 23.08.09 12:25
(26) Попробуйте увеличить таймаут
28. Саня Пупкин (pupkinSana) 24.08.09 09:07
(27) Увеличивал и уменьшал таймаут и скорость - бесполезно.
29. Роман Мельников (Sabron) 16.09.09 04:45
Что включает в себя "-4 Ошибка при передаче сообщения" и как с ней бороться?
30. artem2922 (pizhenkov) 01.10.09 17:05
Выходит Ошибка при посылке сообщения абоненту

-4 Ошибка при передаче сообщения

И что делать куда рыть не знаю :o
31. Олег Бушев (DrMabuzo) 25.11.09 10:33
смотрю коменты тут старенькие - как она ведет себя после изменения правил набора, я из Украины и у нас теперь номера набираются без 8 впереди............
32. Владимир Стахорский (rockford) 26.11.09 10:20
(31) номер набирается в международном формате, а в нем никто 8 не отменял.
33. Олег Бушев (DrMabuzo) 26.11.09 12:55
не работает............................
Ошибка при посылке сообщения абоненту :
34. urban_a urban_a (urb) 27.11.09 20:27
постоянно ошибка -4. Если текст сообщения оставлять пустым, что пишет, что сообщение отправлено. Реально ничего не приходит. Автор, отзовитесь. На двух телефонах провобовал
aleksandrananiev; +1 Ответить
35. Дмитрий Тополь (dmitrytop) 25.03.10 09:30
Если номер получателя состоит из 11 цифр(в России), а не из 12, то ошибка -4
36. Сергей NSerget (NSerget) 27.08.10 17:02
Обработка работает отлично. Есть только одно: При превышениии длины 70 символов, то выдает ошибку -4. В то время как на латинице отсылает длинные смс.
формат номера получателя для Украины 38ХХХ ХХ ХХ ХХХ (12 символов)

Хотя ошибался - не получаться отправить смс длиной больше 62 символа :o
У Киевстара смс центр "380672021111"
37. Олег Бушев (DrMabuzo) 27.08.10 20:08
(36) У меня отправляется намного больше символов (сопряженное сообщение из трех). Только я пишу в латинице

отправляю тоже с киевстара и с такого же смс центра

да, вспомнил почему у меня такая трабла была - если отправляешь цифры, то преобразуй их в строку, символ разделения разрядов не поддерживается тут (т.е. надо отправлять не 10 000, а 10000)
38. Олег Бушев (DrMabuzo) 27.08.10 20:34
отправляю тоже с киевстара и с такого же смс центра

да, вспомнил почему у меня такая трабла была - если отправляешь цифры, то преобразуй их в строку, символ разделения разрядов не поддерживается тут (т.е. надо отправлять не 10 000, а 10000)
39. Константин Семичев (konstantin-semichev) 30.08.10 18:56
Идея супер, реализация недоделана, поскольку на сервере
ЗагрузитьВнешнююКомпоненту("AddInSendSMS.dll")

не рабоает, то ипользовать не очень удобно, хочетья чтобы сервер смски отправлял, а для этого надо сом объектделать (панель упр>админ>Службы компонентов.), а тут засада. новое СОМ приложение создать не удается,

Пишет "Часть компонентов установить не удалось: AddInConnection Ошибка DllRegisterService при установке компонента.
:?: развитие темы есть ?
Windows XP Sp3
40. Олег Бушев (DrMabuzo) 30.08.10 19:00
у меня компонента работает на 2003 сервере, работала и на висте в свое время...
41. mimos 26.01.12 23:39
попробовал на модемчике wavecom fastrack - смс не отправляет.
42. Сергей Дьяченко (sergfox) 15.02.12 15:05
Добрый день

а подтверждение получения СМС планируется реализовать, и работа с входящими СМС?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа