SMS-парсеры
Устройство передаёт каждое банковское SMS и push-уведомление, которое получает. Парсер превращает такое уведомление в сумму, а Trader автоматически подтверждает операцию, к которой это сообщение относится.
Поля SMS-парсера
Заголовок раздела «Поля SMS-парсера»| Поле | Обязательное | Описание |
|---|---|---|
bank_id |
Да | банк, к которому относится парсер |
sms_type |
Да | card, sbp, account или link |
currency |
Да | код валюты, до 3 символов |
sim |
Да | точный источник уведомления, например com.vtb.mobile |
from_pattern |
Да | регулярное выражение для отправителя или заголовка |
text_pattern |
Да | регулярное выражение для тела сообщения |
Сопоставление
Заголовок раздела «Сопоставление»from_pattern работает как пропускной фильтр: уведомление, отправитель которого ему не соответствует, вообще не разбирается, что бы ни было в тексте. text_pattern тоже должен совпасть.
Сопоставление не учитывает регистр и работает с многострочным текстом.
Именованные группы
Заголовок раздела «Именованные группы»Значения извлекаются из выражений именованными группами. amount — та группа, которую нужно захватить обязательно: без неё уведомление не сопоставить с операцией:
Зачисление (?<amount>[\d\s]+[.,]\d{2}) RUBГруппы из отправителя и из текста объединяются, поэтому сумму можно захватить в любом из них. Банки, которые кладут сумму в заголовок, полностью обрабатываются через from_pattern:
^Received\s+₹(?<amount>[\d.,]+)$Есть и другие группы, которые ещё точнее сужают сопоставление сообщения с операцией.
Разбор суммы
Заголовок раздела «Разбор суммы»Группа amount захватывает сумму в основных единицах.
Разделителем дробной части принимаются и ., и ,, а разделителем тысяч — пробел, поэтому 1 234.56 и 1 234,56 дают 1234.56. Захватывать нужно зачисленную сумму, а не баланс, напечатанный рядом.
Подтверждение
Заголовок раздела «Подтверждение»Извлечённая сумма сопоставляется с незавершёнными операциями на том же устройстве. Уведомление, сумма которого отличается хотя бы на 0.01, не совпадёт ни с одной операцией, и она останется открытой до истечения срока — поэтому рандомайзер суммы и не даёт двум открытым операциям на одном устройстве иметь одинаковую сумму.
Проверка парсера
Заголовок раздела «Проверка парсера»Парсер можно проверить на примерах уведомлений до сохранения:
- позитивный тест проходит, когда совпали все заданные выражения и извлечённые группы равны ожидаемым;
- негативный тест проходит, когда парсер не совпал с сообщением.
Указывайте в тестах реальные from, text и sim того уведомления, под которое настраиваете парсер.
