<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=Sms</id>
	<title>Sms - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=Sms"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T12:22:10Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv: /* Отправка смс о предстоящем списании только по подписке */</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2020-05-30T10:54:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Отправка смс о предстоящем списании только по подписке&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Описание==&lt;br /&gt;
Модули sms позволяют:&lt;br /&gt;
* отправить произвольное сообщение на телефон абонента&lt;br /&gt;
* отправить пароль на телефон абонента&lt;br /&gt;
* отправить sms абонентам по заданному фильтру&lt;br /&gt;
* автоматически за несколько дней отправлять напоминания абонентам о скором списании абонплаты в случае, если после этого баланс станет отрицательным&lt;br /&gt;
* отправить сообщение о пополнении счета&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sms модулей несколько - в зависимости через какой сервис будет идти отправка sms:&lt;br /&gt;
* turbosms -  сервис [https://turbosms.ua/ turbosms.ua]&lt;br /&gt;
* lifesms - оператор Lifecell&lt;br /&gt;
&lt;br /&gt;
==Технические детали==&lt;br /&gt;
&lt;br /&gt;
Каждая смс записывается в базу данных в соответствующую таблицу. Здесь есть небольшой нюанс. База данных turbosms - удаленная, принадлежит сервису turbosms.ua. Достаточно создать запись в этой базе и смс будет отправлена.&lt;br /&gt;
&lt;br /&gt;
База данных lifesms - локальная, это и есть база NoDeny. Поэтому чтобы отправить sms, недостаточно просто создать запись в таблице lifesms - нужно запустить модуль ядра lifesms, который сканирует данную таблицу и связывается с сервером Lifecell.&lt;br /&gt;
&lt;br /&gt;
==Напоминание о списаниях==&lt;br /&gt;
Это модуль ядра remindsms. Он периодически вычисляет: приведет ли ближайшее списание абонплаты к отрицательному балансу и если так - записывает соответствующее сообщение в базу данных turbosms или lifesms. &lt;br /&gt;
&lt;br /&gt;
===Отправка смс о предстоящем списании только по подписке===&lt;br /&gt;
Можно отправлять смс о предстоящем списании только если у абонента подключена дополнительная услуга с тегом remindsms. Таким образом у абонента может быть платная подписка на напоминания. А может быть и бесплатная (стоимость 0.001 аналог нулевой стоимости), тогда абоненты сами смогут выбирать нужны ли им смс или нет.&lt;br /&gt;
&lt;br /&gt;
==Модули ядра==&lt;br /&gt;
* Если вы ходите отправлять смс через lifesms, вам нужно запускать модуль ядра lifesms&lt;br /&gt;
* Если вы хотите использовать напоминания о списаниях, вам нужно запускать модуль ядра remindsms.&lt;br /&gt;
&lt;br /&gt;
==Номер телефона==&lt;br /&gt;
&lt;br /&gt;
Номер телефона должен храниться в допполе с именем _adr_telefon дополнительных данных абонента. Это поле строковое и не фиксирует формат. То есть сотрудник может внести номер как: 067-11-22-333 / 0931122333 / +38097112233 или несколько номеров через запятую. Смс провайдер скорее всего будет требовать фиксированный формат номера, поэтому в настройках биллинга в разделе sms присутствует параметр &amp;quot;Код, который корректирует номер телефона&amp;quot;.  В этом поле необходимо записать perl-код,  который будет преобразовывать телефон в формат, понятный смс-провайдеру. К сожалению, perl-код несколько труден для понимания, поэтому приведем несколько примеров:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my $phone = $_;&lt;br /&gt;
$phone =~ s/^\s*//;&lt;br /&gt;
$phone =~ s/^\+//;&lt;br /&gt;
$phone =~ s/[^\d\-\(\)].*$//;&lt;br /&gt;
$phone =~ s/\D//g;&lt;br /&gt;
$phone =~ s/^3?8//g;&lt;br /&gt;
length($phone) == 10 or return '';&lt;br /&gt;
$phone =~ /^0/ or return '';&lt;br /&gt;
return '+38'.$phone;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Допустим, в поле  _adr_telefon задано 2 телефона абонента:  ' +38(067)-123-44-55, 7888080'&lt;br /&gt;
&lt;br /&gt;
Построчно расшифруем код, преобразующий номер телефона, и результат после каждой строчки кода:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my $phone = $_;                     # эту строчку не меняйте, в ней мы указываем, что телефон будет в переменной $phone&lt;br /&gt;
$phone =~ s/^\s*//;                 # убираем пробелы, которые оператор мог случайно ввести перед номером телефона&lt;br /&gt;
                                    # получаем '+38(067)-123-44-55, 7888080'&lt;br /&gt;
$phone =~ s/^\+//;                  # убираем символ &amp;quot;плюс&amp;quot; перед номером телефона. Даже если в результате нам понадобится&lt;br /&gt;
                                    # префикс +380, оператор может ввести телефон как +380xxx, как 380xxx и как 0xxx.&lt;br /&gt;
                                    # получаем '38(067)-123-44-55, 7888080'&lt;br /&gt;
$phone =~ s/[^\d\-\(\)].*$//;       # удаляем 2й телефон. Получаем '38(067)-123-44-55'&lt;br /&gt;
$phone =~ s/\D//g;                  # удаляем не цифры. Получаем '380671234455'&lt;br /&gt;
$phone =~ s/^3?8//g;                # удаляем 3 или 38. Получаем '0671234455'&lt;br /&gt;
length($phone) == 10 or return '';  # если телефон состоит не из 10 цифр - считаем, что он некорректен&lt;br /&gt;
$phone =~ /^0/ or return '';        # если телефон начинается не на ноль - некорректен&lt;br /&gt;
return '+38'.$phone;                # возвращаем '+380671234455'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sv</name></author>
	</entry>
</feed>