Регистрация контакта через SMS сообщение
Система позволяет регистрировать участника в программе лояльности посредством отправки им SMS сообщения на специальный номер с напечатанным на чеке кодом. К созданному в системе участнику может быть автоматически привязана виртуальная карта.
Для генерации кода при обработке фискального чека необходимо использовать в тексте сообщения на чек в правиле метапеременную %code_registration%. При этом:
- Код для метапеременной генерируется только при обработке фискального чека, и если включена настройка Loyalty.Processing.RegistrationCode.IncomingSms.CodeCreate.
- Тип кода задаётся в настройке Loyalty.Processing.RegistrationCode.IncomingSms.CodeType (1 - только цифры, 2 - цифры и буквы латинского алфавита).
- Длина кода задаётся в настройке Loyalty.Processing.RegistrationCode.IncomingSms.CodeLength.
- Количество дней действия кода задаётся в настройке Loyalty.Processing.RegistrationCode.IncomingSms.CodeLifeTime.
Далее клиент отправляет SMS на специальный номер, указав в тексте SMS сообщения только код для регистрации, который был напечатан на чеке. При обработке входящей SMS с кодом в системе происходят проверки.
Если код регистрации не найден, или найден, но истёк по сроку действия, или найден, но уже был использован, то создаётся и отправляется на мобильный телефон клиента ответное SMS с ошибкой по шаблону, внешний идентификатор которого указывается в настройке Loyalty.Registration.IncomingSms.ErrorCode.SMSTemplate. Есть возможность настроить количественный лимит ответных SMS сообщений по данному шаблону на один номер мобильного телефона в одни календарные сутки. Значение этого лимита задаётся в настройке Loyalty.Registration.IncomingSms.ErrorCode.DayLimit.
Если код регистрации найден, не истёк по сроку действия и не использован, то проверяется в базе наличие контакта с указанным мобильным номером телефона:
- Если контакт найден:
- При этом если настройка Loyalty.Registration.IncomingSms.AllowCardChanging = 1, а также Loyalty.Registration.IncomingSms.BindVirtualCard = 1 и при этом у контакта нет виртуальной карты с типом из настройки Loyalty.Registration.IncomingSms.VirtualCardType, то у контакта находится последняя по дате изменения карта с типом из настройки Loyalty.Registration.IncomingSms.CardTypeForChanging (в настройке допустимо указывать внешний идентификатор нескольких типов карт через точку с запятой) и производится замена этой найденной карты на свободную виртуальную карту (из пула виртуальных карт с типом в настройке Loyalty.Registration.IncomingSms.VirtualCardType).
- В случае успешной замены карт создаётся и отправляется на мобильный телефон клиента ответное SMS сообщение по шаблону, внешний идентификатор которого указывается в настройке Loyalty.Registration.IncomingSms.SuccessCardChanging.SMSTemplate.
- В иных случаях, когда контакт найден (например, настройка Loyalty.Registration.IncomingSms.AllowCardChanging не равна 1 и т.д.) создаётся и отправляется на мобильный телефон клиента ответное SMS сообщение с ошибкой по шаблону, внешний идентификатор которого заполняется в настройке Loyalty.Registration.IncomingSms.ErrorCode.SMSTemplate.
- Если контакт не найден, то в системе создаётся новый контакт со следующими данными:
- «Мобильный телефон» = номер телефона клиента, от которого поступило входящее SMS сообщение с кодом.
- «Мобильный телефон проверен» = Да.
- «Дата регистрации» = текущая дата.
- «Источник регистрации» = Входящее сообщение.
Также в базе данных есть специальная таблица, в которой можно указать другие поля контакта для заполнения значениями по умолчанию.
При этом если настройка Loyalty.Registration.IncomingSms.BindVirtualCard = 1, то к созданному контакту привязывается виртуальная карта (свободная карта из пула виртуальных карт с типом в настройке Loyalty.Registration.IncomingSms.VirtualCardType).
Созданному контакту на мобильный телефон отправляется ответное SMS сообщение по шаблону, внешний идентификатор которого указывается в настройке Loyalty.Registration.IncomingSms.SuccessContactCreation.SMSTemplate.
Периодически в базе происходит очистка старых кодов для регистрации. Старые коды хранятся Х дней с момента их даты окончания, где Х - значение настройки Loyalty.Processing.RegistrationCode.IncomingSms.LogStorageDays.
Все упомянутые в этом разделе настройки являются партнерскими (партнёрская настройка указывается через расширенный атрибут партнера). В случае с настройками генерации кода для регистрации при обработке фискального чека партнер определяется из чека. В случае с настройками при обработке входящего SMS сообщения партнер определяется исходя из номера телефона для входящих SMS, указываемого в связанной с партнером записи «Список телефонов». Если у партнера нет расширенного атрибута, то проверяется тогда значение соответствующей системной настройки.