"Вам СМС от Террасофт" - часто приходится видеть такое у клиентов? Для нас это достаточно распространённая задача, поэтому решил описать, как мы ее решаем в реальных проектах. Вообще для отправки смс есть 2 технических подхода: использовать интернет-сервисы рассылок или установить локальный GSM-шлюз (таким шлюзом может выступать 3G-модем с соответствующим ПО). Сегодня мы рассмотрим первый вариант...
С точки зрения пользователя все просто – в разделы Контрагенты и Контакты добавляется кнопка «SMS», при нажатии на которую открывается окно для ввода текста сообщения:
Телефон Контрагента/Клиента подтягивается автоматически из средства связи с типом «Мобильный телефон». Естественно можно выбрать несколько Контрагентов/Контактов для отправки смс.
Чтобы вести учет отправленных смс, создан отдельный раздел, а для Контрагента/Контакта добавлена соответствующая деталь-запрос:
Теперь к тому, как это работает. Грузим сервисы с FTP, создаем раздел, кнопки, пишем обработчик нажатия кнопки:
var Attributes = GetNewDictionary();
var DefaultValues = GetNewDictionary();
DefaultValues.Add('SelectedIDs', grdData.SelectedIDs);
DefaultValues.Add('Account_or_Contact', AccountOrContact);
Attributes('NotifyObject') = Self;
ShowEditWindowEx('wnd_SMS', Attributes, DefaultValues);
}
Непосредственно отправка выглядит так:
var SelectedIDs = GetArrayByCollection(GetDefaultValue(Self, 'SelectedIDs'));
var AccountOrContact = GetArrayByCollection(GetDefaultValue(Self, 'Account_or_Contact'));
var Phone = '';
var SmsText;
var count = SelectedIDs.length;
var countOfFailedSMS = 0;
var countOfSuccessSMS = 0;
for (var i = 0; i SelectedIDs.length; i++) {
Phone = GetMobilePhoneNumberFromAccount(AccountOrContact, SelectedIDs[i]);
SmsText = Text;
if (Phone != null)
SendSmsSinglePhone(SmsText, Phone, SelectedIDs[i], AccountOrContact);
else {
SaveSMS(AccountOrContact, SelectedIDs[i], SmsText, false);
countOfFailedSMS++;
}
}
countOfSuccessSMS = (count - countOfFailedSMS);
ShowInformationDialog("Отправлено SMS: " + countOfSuccessSMS + ' из ' + count);
}
Теперь нужно добавить параметр и фильтр Name в сервис sq_CommunicationType:
Также для настроек создается отдельный справочник:
В нем заполняются следующие поля:
Ну и наконец для отображения результатов рассылки нужно добавить справочник «Результаты: SMS» и деталь «SMS» с нужными колонками. Подробная инструкция также доступна на FTP.
Примерно также мы реализуем отправку смс в BPMonline, так что не вижу смысла отдельно писать пост по отправке смс оттуда.
Спасибо Александру за очередное расширение 3.Х. Очень нужная и востребованная вещь в жизни и в программе.