Плагін 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, але ми їх оминули.