Плагін MsgBox для QIP Infium

Плагін розширює можливості програмного керування QIP. особливості:

  • Дозволяє програмно надсилати повідомлення
  • Дозволяє програмно перевіряти статуси користувачів
  • Працює лише з користувачами зі списку контактів
  • Управління та отримання результату здійснюється найпростішим способом – через текстові файли. Кожне вхідне, вихідне, надіслане повідомлення та заявки на перевірку статусу зберігаються в окремому текстовому файлі.
  • Дозволяє працювати з усіма протоколами, для яких створено облікові записи в qip (icq, qip, lj, magent, …)
  • Веде історію всіх повідомлень – отриманих, надісланих вручну та через цей плагін.
  • Гарантує доставку повідомлення, не пропускає повідомлення. Через недоробки SDK для контролю доставки використовує контакт-семафор статусу онлайн протоколу.

Плагін замовив я, Осипов Сергій Олександрович (http://fixin.com.ru), написав програміст-фрілансер Олексій Солодкий DocX ([email protected]) за 2000 RUR (70 $).

Програма dotation-ware. Якщо її розробка окупиться, то буде замовлено ще багато інших цікавих та безкоштовних плагінів для інших програм, тому, якщо програма знадобилася, прошу перерахувати будь-яку навіть смішну суму на зазначені рахунки.

Інсталяція

1. Створіть папку MsgBox у папці Plugins програми QIP

2. Розпакуйте файли з архіву msgbox. zip у папку MsgBox

3. Перезапустіть QIP.

4. Перевірити статус плагіна можна на закладці Налаштування – Модулі – MsgBox.

5. Налаштуйте файл протоколів s. txt». Дивіться "Налаштування файлу протоколів"

Щоб перевірити працездатність плагіна, скопіюйте файл « 203136830# example for test - thank you sponsor . txt » в папку OutBox, при цьому через деякий час файлпереміститься в папку Sent. Також після запуску плагіна в папках InBox та SentMan має вестися історія отриманих та надісланих вручну повідомлень.

Налаштування файлу протоколів

Файл «s. txt » використовується для налаштування протоколів.

У файлі постачання він виглядає так:

mblogi @ mblogi. qip. ru 1 203136830 3

Файл слід змінити вручну.

Кожен рядок описує окремий протокол. Потрібно перелічити всі протоколи, котрим використовуємо плагін.

У рядку спочатку вказується ідентифікатор користувача для перевірки статусу онлайн-протоколу, потім вказується номер протоколу.

Номер протоколу QIP, що не вимикається, завжди 1. Номер протоколу 2 зарезервований для системи пошуку.

Номери інших протоколів можна переглянути в Налаштування – Облікові записи: перший протокол завжди QIP, інші нумеруються послідовно, починаючи з номера 3.

Необхідність вказівки користувача для перевірки он-лайн статусу пов'язана з такими недоліками SDK:

1. Неможливо отримати статус протоколу

2. Якщо протокол офлайн, то при програмному надсиланні повідомлення функція відправки видає результат, ніби повідомлення надіслано, а насправді ні. Правильний результат видається лише за включеного протоколу.

Зазвичай контролю онлайн статусу протоколу можна використовувати себе - тобто. додати себе до списку контактів. Для ICQ такий метод працює. Для QIP у деяких користувачів статус себе завжди оффлайн. У таких випадках можна використовувати служби, які завжди онлайн у даного протоколу, наприклад сервісні служби. Для QIP це служба мікроблогів mblogi@mblogi. qip. ru .

Після налаштування файлу потрібно перезапустити плагін, дивіться "Перезапуск плагіна".

Перезапуск плагіна

У розділі Налаштування - Модулі - MsgBox виберіть команду "Вимкнути", а потім "Увімкнути". Або просто вийдіть і знову зайдіть в QIP.

Структура директорій

Усередині папки MsbBox використовуються такі директорії:

  • Inbox – ведення історії файлових повідомлень
  • OutBox – папка, в яку містяться повідомлення для надсилання
  • OutStat – папка, в яку розміщуються заявки на перевірку статусу
  • Sent – ​​папка, в яку містяться надіслані повідомлення
  • SentMan – папка, в яку містяться надіслані вручну повідомлення

Імена файлів

У файлах зберігаються вхідні, вихідні повідомлення, заявки на перевірку статусу та результати перевірки статусів.

У файлах повідомлень у тексті файлу міститься повідомлення. Файли статусів пусті.

Вся службова інформація про повідомлення або перевірку статусу міститься у імені файлу.

[Номер протоколу «#» ][ Ідентифікатор користувача][«#» Маркер][«_» Дата і час] [«_» Статус]

  • Номер протоколу – це необов'язкове поле для протоколів ICQ або QIP. Задає номер протоколу, яким передавати повідомлення. Якщо не вказано, якщо в ідентифікаторі користувача міститься « @ qip . ru», вважається, що це протокол QIP, інакше вважається, що це протокол ICQ.
  • Ідентифікатор користувача – ідентифікатор користувача.
  • Маркер – будь-який текстовий рядок, який не містить «#» або «_». Наприклад, можна вказувати повідомлення GUID.
  • Дата та час – дата та час обробки повідомлення. Підставляється плагіном.
  • Статус - статус, результат заявки на отримання статусу або статус одержувача при отриманні повідомлення, записується латинськими великими літерами: ONLINE, OFFLINE, HOME і т.д.

Дата створення та зміни файлу незмінюються плагіном.

Історія вхідних повідомлень

Усі вхідні повідомлення надсилаються до папки Inbox. При цьому в імені файлу встановлюється ідентифікатор та маркер. До імені файлу дописується дата та час отримання повідомлення.

Історія надісланих вручну повідомлень

Повідомлення, що надсилаються користувачем, копіюються в папку SentMan. При цьому в імені файлу зберігається ідентифікатор та маркер. До імені файлу дописується дата і час надсилання повідомлення та статус одержувача під час надсилання повідомлення.

Надсилання повідомлень

Повідомлення потрібно розмістити в папку Outbox. Якщо повідомлення може бути надіслано, воно переміщується до папки Sent . При цьому в імені файлу зберігається номер протоколу, ідентифікатор та маркер. До імені файлу дописується дата і час надсилання повідомлення та статус одержувача під час надсилання повідомлення.

Якщо повідомлення не може бути надіслано, воно залишається у папці Outbox .

Перевірка статусів

Заявку на перевірку статусу потрібно розмістити у папку OutStat. Якщо заявку можна надіслати, вона переміщується до папки OutStat . При цьому в імені файлу зберігається номер протоколу, ідентифікатор та маркер. До імені файлу дописується дата та час перевірки статусу та статус користувача, що перевіряється.

Якщо заявка не може бути оброблена, вона залишається в папці OutStat.

Рекомендації

  • Якщо у вас QIP на флешці, не забувайте періодично очищати папки, зазвичай файлова система флешки не підтримує більше 10000 файлів.
  • При надсиланні великої кількості повідомлень контролюйте чергу надсилання, при масовому розсиланні повідомлень сервер може тимчасово відключити протокол.
  • Очищайте чергу відправлення від повідомлень, що застрягли, які лежать там більше доби, наприклад. Вони не вирушать.

Побажання ( wish-list )

Список бажань будується на основі ваших заявок. При накопиченні критичної маси та наявності дотацій буде випущено нову версію плагіна.

  • Зберігати статус користувача у вхідних повідомленнях
  • Дату файлу в папці Sent встановлювати в дату отримання.
  • Контролювати періодичність розсилки повідомлень, щоб надсилати не більше заданої кількості повідомлень у заданий інтервал часу (щоб при великій кількості повідомлень тимчасово не відключали від сервера).
  • Встановлювати в імені файлу в папках InBox та SentMan номер протоколу.

Побажання, що залежать від прогресу SDK:

  • Позбутися контакту для контролю статусу протоколу
  • Надсилати повідомлення користувачам не з контактного списку
  • Прибирати миготіння повідомлення від користувача

Історія плагіна

Наприкінці 2008 року я задумав написати програму-балакуна на 1С, яка б спілкувалася замість мене з дівчатами. На відміну від аналогів, вона мала більш просунуту базу даних. Але я не міг знайти транспорт для надсилання та отримання повідомлень.

Я знайшов програму Душелова, яка керувалася OLE, але її потрібно було використовувати замість QIP-клієнта. Тобто. потрібно було завести ще один UIN, або працювати зі своїм логіном, але не в зручному QIP, а в незручній програмі 1С.

На початку 2009 року я сформулював вимоги до плагіна та виклав їх на форумі QIP. Охочих написати плагін, навіть за гроші, не знайшлося, але мені запропонували пошукати фрілансера.

Мені відгукнулося відразу кілька розробників, я вибрав земляка DocX. Разом ми довели плагін до робочого стану. Довелося зіткнутися з обмеженнями SDK, але ми їх оминули.