вторник, 19 августа 2014 г.

Cервис проверки статуса грузов по № декларации и автоуведомления по SMS через GoogleCalendar API

Обратился ко мне знакомый, ему по работе приходится проверять и ездить отправлять-забирать посылки через службы доставки. У многих служб доставки есть возможность отследить статус груза, так вот ему надоело каждый раз идти на сайт и проверять, тем паче, что он часто в разъездах без тырнета.

Сделал ему автоматический сервис: просто вводишь номер декларации, программка сама отслеживает статус груза и при его изменении отсылает ему на мобильный SMS "когда и где" забрать или скажем, что груз пришел получателю.

Данный сервис (служба) представляет собой трехуровневое универсальное приложение на базе двух разработок - библиотек SMS_google_calendar.DLL и GetStatusBagag.dll (см. описание API в архиве). Сервис осуществляет периодическую проверку статуса грузов по введенным пользователем номерам деклараций и авто-рассылку SMS на мобильный при изменении данного статуса, с указанием: статуса грузов, даты-времени и местонахождения.

Основное назначение

Автоматизация деятельности менеджера/курьера. Поскольку само приложение - является верхним уровнем, взаимодействующим с нижним уровнем посредством соблюдения их API, то это позволяет использовать блочный подход при необходимости смены транспорта SMS или сервиса для контроля. К примеру, не только операторов транспортных компаний (служб доставки), но и сервисов электронных переводов, как то Migom, Faster, Western Union. Ведь не всегда установлено уведомление о приходе средств на банковскую карточку, а часто и таковой нет. Т.е. там где требуется знание контрольного номера перевода и ФИО отправителя, к примеру. Что позволяет просто подменить DLL-ку запроса статуса и парсинга (или может в будущем макросом каким?), само же приложение-сервис и DLL-ка отправки SMS останутся без изменений.

АЛГОРИТМ РАБОТЫ СЕРВИСА

C периодом повторения 'Declaration Check Period In Seconds' (не путать с интервалом между запросами) производится сканирование файла настроек 'settings.ini' на наличие деклараций. По каждой найденной декларации производится запрос к сервису транспортной компании на предмет получения: статуса груза, времени приема/отправки/выдачи и адреса филиала. Между самими запросами включен интервал 'Declaration Check Interval In Seconds' (по-умолчанию равный 10-ти секундам), обеспечивающий, наряду с периодом 'Declaration Check Period In Seconds' (по-умолчанию равный 300- секундам или пяти минутам), своего рода абузоустойчивость по отношению к сервису транспортной компании и сервису отправки SMS - GoogleCalendar API. При сканировании деклараций последовательно считываются параметры по каждой декларации, а именно:
  1. Наименование транспортной компании (для решения куда отправлять запрос по декларации)
  2. Номер декларации
  3. Дата и время приема/отправки/выдачи груза
  4. Статус груза (ожидает отправки, на складе получателя или выдан)
  5. Адрес филиала транспортной компании, где находится груз (местонахождение)
  6. Статус отчета по SMS
По значению статуса груза 'Нет такой декларации' принимается решение о дальнейшей проверке. Если таковой статус отсутствует, то далее проверяется статус отчета по SMS. Если он пустой, то принимается решение о том, что SMS еще не отправлялось и вне зависимости от того, каков статус груза, производится однократная отправка SMS с текущим статусом груза. Обратите внимание однократная отправка, потому что после отправки SMS в статуc отчета по SMS (6-й параметр вносится 'непустое' значение). После этого последующая отправка SMS возможна лишь при измении текущего статуса груза. Поскольку алгоритм основан на предпосылке (предположении) того, что после выдачи груза его статус измениться не может, то последующая отправка SMS при очередном сканировании 'settings.ini' и запросах к сервису возможна в двух случаях:
  1. Смены текущего статуса 'Багаж ожидает отправки' на статус 'Багаж на складе получателя'
  2. Смены текущего статуса 'Багаж на складе получателя' на статус 'Багаж выдан'
Таким образом, количество SMS для каждой декларации может составить от одной (когда багаж уже выдан) до трех (когда багаж ожидает отправки, потом на складе и выдан).

Описание формата файла настроек 'settings.ini' (автосоздание) представлено в таблице:


 Параметр 'Declaration N' состоит из 6-ти ячеек, разделенных символом '#':
  #[par1]#[par2]#[par3]#[par4]#[par5]#[par6]
 par1 - имя компании (default - autolux)
 par2 - номер декларации
 par3 - дата и время приема груза в точке отправки/получения в точке доставки/выдачи
 par4 - статус груза
 par5 - местонахождение груза
 par6 - флаг (признак уведомления по SMS)

 Пример записи декларации для ее проверки:Код Code
Declaration Count=1
Declaration 1=#autolux#3221
или так:
Declaration Count=1
Declaration 1=#autolux#3221####
или так:
Declaration Count=2
Declaration 1=#autolux#3221####
Declaration 2=#autolux#3420####
или так:
Declaration Count=5
Declaration 1=#autolux#3221####
Declaration 2=#autolux#3420####1
Declaration 3=#autolux#3121####1
Declaration 4=#autolux#3020####
Declaration 5=#autolux#3011####
Т.е. имеет значение только правильное заполнение первой и второй ячейки параметра 'Declaration N'. Сервис по истечению периода 'Declaration Check Period In Seconds' запросит данные по каждой из декларации и сам заполнит недостающие данные: "Declaration 1=#autolux#3221#24.09.12 17:26# Багаж выдан#в городе Боярка, ул.Шевченка, 176.#1". Если 6-я ячейка параметра 'Declaration N' была пустая или не равна '1', то сервис произведет отсылку текущего статуса груза по SMS.








ПОРЯДОК ИСПОЛЬЗОВАНИЯ

1. Для использования сервиса GoogleCalendar API в качестве транспорта уведомления нужен зарегистрированный аккаунт в системе G-MAIL и верифицированный мобильный номер.
2. Инсталляция сервиса осуществляется с параметром -i (регистр не имеет значения). Пример "service_sms_statusbagag.exe i". Или так: "service_sms_statusbagag.exe I".
3. Деинсталляция сервиса осуществляется с параметром -u (регистр не имеет значения).      
service_sms_statusbagag.exe u
Или так:
service_sms_statusbagag.exe U
4. В архиве приложены как приложение в виде сервиса (службы), так и в виде обычного интерактивного приложения, доступно по трем кнопкам мыши в трее ("следящие глаза" ).
 5. В момент начала сканирования по декларациям значек в трее ("следящие глаза") становится зеленым, в момент окончания - белым.
 6. При использовании сервиса, значек в трее выполняет лишь функцию индикации.
 7. Вы можете в любой момент добавить в файл настроек 'settings.ini' новые номера деклараций для проведения отслеживания
 8. На текущий момент библиотекой 'GetStatusBagag.dll' поддерживается сервис транспортной компании "Автолюкс" http://autolux.ua и международных посылок через ГдеПосылка.ру http://gdeposilka.ru. В следущей версии "Новая почта".

скачать

1 комментарий:

  1. В связи с тем, что компания Google c 27.06.15 отключает возможность рассылки SMS-оповещений из Google Календаря, библиотеки серии SmsGoogleCalendar.DLL нами более не поддерживаются.

    ОтветитьУдалить

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.