В. програмування систем ір-телефонії підручник з дисципліни "Програмування систем ір-телефонії" для всіх спеціальностей напряму Телекомунікації Одеса 2009

Вид материалаДокументы

Содержание


Контрольні запитання
5 Основні протоколи ір-телефонії
5.2 Мережі ІР-телефонії на базі протоколу SIP
5.3 Мережі ІР-телефонії на базі протоколу MGСР/MEGACO/
5.4 Мережі ІР-телефонії на базі протоколу MPLS
7.2 Архітектура Skype-мережі
7.3 Модульна архітектура Skype Plug-In Architecture
7.4 Створення універсальних програм-додатків у середовищі Skype
Подобный материал:
1   2   3   4   5   6   7   8

Контрольні запитання:
  1. Яка Softswitch-платформа була реалізована першою?
  2. Коли з'явилися перші мережі IP-телефонії на базі Softswitch?
  3. Яка Softswitch-платформа була реалізована першою в Росії?
  4. Яка Softswitch-платформа була реалізована першою в Україні?
  5. Яка компанія є лідером на світовому ринку IP-телефонії ?
  6. Яка компанія є лідером на ринку IP-телефонії у Європі?
  7. Яка компанія є другою на ринку IP-телефонії у Європі?
  8. Яка компанія є лідером у розробці Softswitch для кабельного телебачення?
  9. Яка Softswitch-платформа найбільш повно реалізує функції СОРЗ?
  10. Яка Softswitch-платформа реалізована з використанням технології CORBA?
  11. Яка Softswitch-платформа використовує Інтранет?
  12. Які основні функціональні можливості першої української Softswitch-платформи?



5 ОСНОВНІ ПРОТОКОЛИ ІР-ТЕЛЕФОНІЇ


Вхідний контроль:





fffffffffffff


5.1 Мережі ІР-телефонії на базі протоколу Н.323


Вхідний контроль:





ffffffffffffff


Контрольні запитання:





5.2 Мережі ІР-телефонії на базі протоколу SIP


Вхідний контроль:





fffffffffffffffff


Контрольні запитання:





5.3 Мережі ІР-телефонії на базі протоколу MGСР/MEGACO/


Вхідний контроль:





fffffffffffffff


Контрольні запитання:





5.4 Мережі ІР-телефонії на базі протоколу MPLS


Вхідний контроль:





ffffffffffffffffffffffff


Контрольні запитання:





7 ПРОГРАМНА РЕАЛІЗАЦІЯ VoIP-СЕРВЕРІВ


7.1 Програма Skype


Вхідний контроль:
  1. Які програмні додатки, які реалізують VoIP-сервери, Ви знаєте?
  2. Під якими операційними системами працюють ці додатки?
  3. На яких мовах програмування вони створені?


Програма Skype – це популярна VoIP програма, яка працює за принципом розподіленої пірінгової мережі (distributed self-organized peer-to-peer network, P2P), яка сама організується. Skype – запатентована система VoIP, яка розроблена Skype Technologies S.A. – корпорацією, яка зареєстрована у Люксембургу. Корпорація заснована Янусом Фріісом (Janus Friis) та Ніколасом Зеенстромом (Niklac Zennstrom). Skype побудований на технології з’єднання рівноправних вузлів ЛОМ методом peer-to-peer на відміну від інших програм VoIP, які передають дзвінки через центральний сервер. Skype-клієнт відшукує інших клієнтів, утворюючи мережу, яка слугує для знаходження інших користувачів і передачі їм повідомлень. Використання програмного забезпечення і мережі безкоштовне, існують лише невеликі ціни за дзвінки, зроблені з використанням функцій “Skype Out” і “Skype In”, які дозволяють робити дзвінки із Skype у телефонні мережі загального користування (ТфЗК). Skype отримує доход за рахунок оплати від користувачів за використання термінових шлюзів, які з’єднують мережу програми Skype з ТфЗК.

Skype працює на операційних системах MS Windiws, Linux, MacOS, PochetPC і її послугами користуються понад півтора мільйони людей. Програма Skype простіша у використанні порівняно з будь-якою VoIP-системою. Програма Skype-клієнт легко встановлюється і потребує для конфігурування тільки вибір імені клієнта. Skype-клієнти можуть працювати за брандмауерами і системами трансляції мережних адрес (NAT).

При наявності високошвидкісного доступу в Інтернет програма Skype може використовувати звуковий кодек з якістю, кращою, ніж забезпечують ТфЗК.

Skype підтримує обмін миттєвими повідомленнями, пошук та пересилання файлів. Передавання усієї інформації шифрується за допомогою 128- та 256-бітних криптографічних кодів. Це робить неможливим пасивне перехоплення Skype-розмов, розшифрування та прослуховування. Слід відмітити, що Skype не підтримує відео конференції, в той же час ця функція є у ISDN-системах і у програмі Apple’s і Chat.

Розробка Skype спочатку була спрямована на забезпечення високої якості розмов при наявності доступу до широкосмугового Інтернету.

Skype використовує для ідентифікації користувачів центральний ідентифікаційний сервер, який також розповсюджує програмне забезпечення. Обидві функції забезпечуються з використанням персональних ключів RSA з цифровими підписами. Процедура перевірки на співпадіння відкритого ключа RSA є у кожному модулі Skype, який завантажується користувачеві.

Деякі вузли Skype мають статус особливих вузлів або супер-вузлів. Кожний комп’ютер, який має ІР-адресу і не знаходиться за брандмауером, він сам стає супер-вузлом. Такі комп’ютери використовуються як “точка зустрічі” для забезпечення можливості комп’ютерам, які працюють за брандмауерами, зв’язуватись з іншими користувачами Skype. Протокол організації Skype-мережі виглядає так: комп’ютери, які працюють за мережними екранами, сканують Інтернет з метою виявлення супер-вузлів, потім формують та підтримують довгострокове з’єднання з іншими комп’ютерами. Супер-вузли стають “точками зустрічі” для вузлів, які знаходяться за міжмережними екранами і зв’язок з якими утруднено.

При використанні функцій “Skype In” і “Skype Out” вся інформація обов’язково проходить через сервери Skype, які знаходяться у різних країнах і зонах додзвону.

Програма Skype була протестована в умовах Dial-Up додзвону до Інтернет-провайдера при з’єднанні аналоговою телефонною лінією на швидкості 26 кбіт/с. Виявилось, що якість звука при такій швидкості значно погіршується, але залишається прийнятною для двосторонньої розмови. У якості рекомендації при використанні телефонних ліній Dial-Up пропонується вивантажити з комп’ютера всі програми, які використовують Інтернет, а співбесідникам – говорити по черзі, що мінімізує вимоги до пропускної здатності каналу.

При використанні низькошвидкісних низькошвидкісних ліній Dial-Up Skype забезпечує більш низьку якість звуку, ніж при передаванні аналоговими телефонними лініями.

Основні переваги Skype – це низька вартість і безпека, яка є результатом використання шифрування.


Контрольні запитання:
  1. Під якими операційними системами працює програма Skype?
  2. Між абонентами з яким апаратним оздобленням забезпечує спілкування програма Skype?
  3. Як виконує програма Skype ідентифікацію і авторизацію клієнтів Skype-мережі?
  4. Поячніть, що таке вузол і супер-вузол у Skype-мережі.
  5. Поясніть, за рахунок яких технологій досягаються основні переваги Skype?


Контрольні запитання підвищеної складності:
  1. За рахунок чого компанія Skype отримує доход?
  2. Поясніть, як утворюється розподілена мережа Skype, яка сама налаштовується?


7.2 Архітектура Skype-мережі


Вхідний контроль:
  1. Поясніть, що таке брандмауер і як він може реалізовуватись.
  2. Який вузол Skype-мережі може стати супер-вузлом?


Архітектура Skype-мережі складається зі звичайних вузлів (normal/ordinal node/host/nest), які називаються SC (Skype Client), та супер-вузлів (super node/host/nest), які називаються SN. Будь-який вузол, який має ІР-адресу, і володіє достатньо широкосмуговим каналом, автоматично стає супер-вузлом і перепускає через себе трафік звичайних вузлів. Саме він дозволяє їм перемогти захист типу брандмауер або трансляторів мережних адрес (NAT) і рівномірно розподіляє навантаження між хостами.

Skype-архітектура – це розподілена децентралізована архітектура пірінгової мережі, що зорганізується сама. Єдиним централізованим елементом цієї мережі є Skype-login-сервер, який відповідає за процедуру авторизації клієнтів і гарантує унікальність імен для цієї розподіленої мережі.

Зв’язок поміж вузлами здійснюється через ланцюги супер-вузлів. Будь-який вузол зі встановленим на ньому Skype-клієнтом є потенціальним сервером, яким він стає при наявності достатніх системних ресурсів – обсягу оперативної пам’яті, продуктивності процесора, пропускної здатності каналу. Кожний Skype-вузол зберігає перелік ІР-адрес і портів супер-вузлів у динамічно оновлюваних кеш-таблицях (Host Cache Tables). Кеш-таблиця – це простий XML-файл, який записується на диску у домашній директорії користувача і не є зашифрований. На рис. 7.1 показано архітектуру децентралізованої Skype-мережі.




Рисунок 7.1 – Архітектура децентралізованої Skype-мережі


Протокол обміну поміж Skype-клієнтами є недоступний і усі відомості про нього були отримані клієнтами фахівцями методом реінженірінга: дизасемблювання Skype-клієнтів, аналізу перехопленого мережного трафіку тощо. Після запуску Skype-клієнт відкриває ТСР та UDP-порти, номери яких випадково задаються при інсталяції і можуть бути змінені при новій конфігурації. Це утруднює блокування Skype-трафіка на брандмауері. Skype відкриває порти 80 (НТТР) і 443, але якщо їх заблокувати, Skype продовжить роботу. На рис. 7.2 показано структуру ІР-пакета при роботі Skype за протоколом UDP.

Проникнення Skype-клієнтів крізь брандмауери та транслятори мережних адрес здійснюється за протоколами STUN (Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATS)). Протокол STUN не працює у випадку, коли шлях до зовнішньої мережі перекрито брандмауером, який не пропускає UDP зовсім і коли на шляху до зовнішньої мережі стоїть симетричний транслятор мережних адрес. Цей транслятор вимагає, щоби цільова ІР-адреса і порт пакета, який транслюється, співпадали з зовнішніми ІР-адресою і портом. Це призводить до того, що у разі, коли один вузол надсилає пакети з однаковими ІР-адресами і портами різними напрямками, NAT вимушений транслювати їх на інші порти. Для відправляння внутрішньому вузлу UDP-пакета, зовнішній вузол повинен отримати запит від внутрішнього вузла. Самостійно ініціювати з’єднання зовнішній вузол невзмозі, оскільки NAT не знає, на яку внутрішню ІР-адресу і порт слід транслювати цей UDP-пакет. Проблема вирішується за допомогою протоколу TURN (Travel Using Relay NAT), але протокол TURN зменшує швидкість роботи мережі, загублює велику кількість UDP-пакетів (packet lose), що призводить до зниження якості і стійкості зв’язку.

На рис. 7.3 показано архітектуру Skype-мережі зі Skype-клієнтами за NAT і брандмауерами. При закритті UDP-трафіка Skype автоматично переключається на ТСР, відключити який не можна. При закритті портів, які не використовуються, можна зробити неможливим встановлювати ТСР/UDP з’єднання. Виходом є використання proxy-сервера, але Skype проаналізує конфігурацію браузера і скористується proxy-сервером (рис. 7.3).

Таким чином, заблокувати Skype-трафік дуже важко, через те, що він майже увесь зашифрований і не вміщує ніяких передбачених послідовностей. Але частина трафіка все ж залишилась незашифрованою. UDP-з’єднання використовує цю частину – відкритий протокол для отримання відкритих ІР-адрес супер-вузлів. Це виявляється сніферами. Крім того ТСР-з’єднання використовує потік RC-4 двічі, що дозволяє відновити перші 10 байт ключа, розшифрувавши частину постійних полів заголовків Skype-протоколу, але немає тексту готового блокиратору Skype-трафіка (рис. 7.4).



IP




версія

4L

ihl

5L

tos

0x0

довжина

46

id

4

прапорці

DF

фрагмент

DL

ttl

64

протокол

UDP

контрольна сума

0xeb75

джерело

172.16.72.131

приймач

24.98.65.80

опції

*

UDP




порт джерела

2051

порт приймача

8275

довжина

26

контрольна сума

0x219c

Skype SoF




id

0x714e

функція

0x2

Шифровані дані Skype




iv

0x118AC037L

crc32

0Xfc95755EL

шифр

**\xb9\x81z\x8e\xf[…]




45

00

00 2e

00 04

40 00

40

11

eb 75

ac 10 48 83


18 62 42 50

08 03

20 53

21 9c

00 1e


7z 4a

02


11


0a c0 37

tc 95 75 5e

be b9 81 7a bc fa 81




Рисунок 7.2 – Структура ІР-пакета при роботі Skype за протоколом UDP




Рисунок 7.3 – Архітектура Skype-мережі зі Skype-клієнтами

за NAT і брандмауерами





Рисунок 7.4 – Відновлення фрагменту ключа


Легше розпізнати і заблокувати UDP-трафік. Відомо, що кожний кадр починається з двобаштового ідентифікаційного номера (ID) і типу пакета (payboad). У UDP-пакет вкладено 39-байтний NACK-пакет (рис. 7.5), який вміщує такі дані:
      • ідентифікатор пакета, який варіюється від пакета до пакету;
      • номер функції (func), про який відомо, що func & 8FH завжди дорівнює 7Н;
      • ІР-адресу відправника;
      • ІР-адресу отримувача.






Рисунок 7.5 – Структура NACK-пакета


Для блокування UDP-трафіка, який генерує Skype, треба додати у брандмауер правило:


iptables -I FORWARD -p udp -m length --length 39 -m u32

--u32 '27&0 x8f=7' –u32 '31=0 x527c4833 ' -j DROP


Для детектування і блокування Skype-трафіка можна використовувати такі програмно-апаратні засоби, як PRX від Ipogue або Cisco Network-Based Application Recognition (NBAR).

Skype має відкриті АРІ, що дає можливість інтегрування будь-якої програми-додатка зі Skype-клієнтом. Це значно знижує стійкість Skype до хакерських атак, і єдиним засобом протистояти їм є встановлення локальних антивірусів.

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

Таким чином, для нормальної програми Skype потрібне інтернет-з’єднання зі швидкістю не менше 83,6 кбіт/с, операційні системи Windows-2000 і XP, комп’ютер з такими характеристиками: процесор 400 МГц, 128 Мбайт оперативної пам’яті і 15 Мбайт на жорсткому диску. Програма Skype не працює, якщо вихід в Інтернет здійснюється через GPRS. Skype споживає ресурси вузла Skype-клієнта, використовуючи його для забезпечення зв’язку між рештою вузлами Skype-мережі, завантажуючи центральний процесор, і генерує потужний потік трафіка. Skype є несумісний з програмою SoftCE, яка є інструментом зламу. Розмова за допомогою Skype, як правило, незначно дорожча за трафіком, ніж за дзвінки, особливо для користувачів, які не мають брандмауерів.

Для трафіка за протоком SIP найбільш придатний кодек G.723.1, який може забезпечувати швидкості передавання даних 5,3 кбіт/с і 6,7 кбіт/с. Кодек має свої недоліки – він ресурсномісткий і потребує ліцензування. Найбільш популярний кодек – G.729, який підтримується усіма пристроями і всіма операторами, і потребує швидкість каналу 8 кбіт/с.

Кодеки G.723.1 і G.729 – це CBR-кодеки з шириною потока даних, яка не змінюється з часом, що дає можливість легко підрахувати обсяг переданого трафіка по тривалості розмови. Кодеки використовують технологію VAD (Voice Activity Detection), яку підтримують усі SIP-пристрої. Крім того, SIP-пристрої підтримують кодеки G.711, iLBC, GSM, G.726 тощо.

Кодек G.711 має такі переваги: простота реалізації, низька обчислювальна складність і висока якість звука. Кодек G.711 майже не виконує стискання і потребує пропускну здатність з урахуванням заголовків ІР-пакетів більш ніж 80 кбіт/с, він використовується у локальних мережах для передавання голосу у межах офісу і де ширина потоку не має значення. В останній час в ІР-телефонії все частіше використовується кодек G.722, який стискує аудіодані з частотою дискретизації 16 кГц, що значно підвищує якість мови. Використання кодека G.722 не потребує ліцензування, він широко розповсюджується у VoIP-обладнанні.

Програма Skype використовує для кодування звука вільний кодек iLBC, який забезпечує значно вищу якість, ніж G.729 і більш стійкий до загублення пакетів. Кодек iLBC може працювати у двох режимах: 13,33 кбіт/с (пакети по 30 мс) і 15,2 кбіт/с (пакети по 20 мс), які з урахуванням заголовків ІР-пакетів потребують швидкості 30 і 40 кбіт/с. Враховуючи, що політика розробників Skype спрямована на підвищення якості, а не на економію трафіка, кодек iLBC потребує швидкості 40 кбіт/с.

Підтримка факсів Skype здійснюється додатковими сервісами, наприклад PamFax, які не використовують мовленевий канал Skype. Користувач Skype-клієнт не взмозі сам вибирати і налаштовувати стискування звуку.

Оскільки Skype за своєю структурою є Р2Р-мережею, у якій сервери телефонії відсутні, то без відома хазяїна хосту, який працює зі Skype без брандмауера, цей хост стає мостом для користувачів, які спілкуються з-під брандмауерів, тобто стає супер-вузлом і буде пропускати через себе великі обсяги трафіка. Звідси можна зробити два виводи:
      • користуватись Skype без брандмауерів можна тільки при наявності безлімітного інтернет-канала, якщо висока завантаженість канала не заважатиме роботі у мережі;
      • при умові включення брандмауерів усіма користувачами мережі Skype мережа припинить своє функціонування.

Для стабільності роботи Skype рекомендується виділений канал зі швидкістю не менш ніж 64 кбіт/с.


Контрольні запитання:
    1. З чого складається архітектура Skype-мережі?
    2. Які вимоги повинні ставитися до комп’ютера, щоби він став супер-вузлом Skype-мережі?
    3. Де зберігаються дані про ІР-адреси і порти супер-вузлів Skype-мережі?
    4. Поясніть архітектуру Skype-мережі зі Skype-клієнтами за NAT і брандмауерами.
    5. Як можна розшифрувати Skype-трафік?
    6. Дайте порівняльну оцінку кодеків Skype.
    7. Чи підтримує Skype факси?


Контрольні запитання підвищеної складності:
      1. Опишіть протокол обміну поміж Skype-клієнтами.
      2. Як проникають Skype-клієнти крізь брандмауери?
      3. Як можна розпізнати і заблокувати UDP-трафік у Skype-мережі?
      4. Опишіть програмно-апаратні засоби, які слугують для детектування і блокування Skype-трафіка.
      5. Чому, на Ваш погляд, програма Skype не працює, якщо вихід здійснюється через GPRS?
      6. Чому для стабільної роботи Skype рекомендується виділений канал не менш ніж 64 кбіт/с?


7.3 Модульна архітектура Skype Plug-In Architecture


Вхідний контроль:
  1. В чому полягає модульний принцип побудови будь-якого програмного забезпечення?
  2. Поясніть, що таке АРІ-функції.


Прикладний програмний інтерфейс Skype АРІ забезпечує доступ зовнішнім додаткам до ресурсів і функційних властивостей програми Skype. Skype АРІ працюють за принципом “відгуку на текстові повідомлення” і потребує написання програм-додатків на мові С++. Для забезпечення доступу додатків, написаних на інших мовах програмування: Visual BASIC 6.0, Visual BASIC.NET, PHP, Java, Perl, використовуються додаткові об’єкти Skype АРІ COM Wrapper і SkypeX. Skype АРІ COM Wrapper і SkypeX – це зовнішні оболонки віконноорієнтованого середовища передачі повідомлень Skype АРІ (Windows Messaging Enviroument). Оболонки COM, які називають також “зв’язуючими елементами” або “проміжним шаром” забезпечують можливість об’єднання між собою функційних властивостей незалежних програмних продуктів. Оболонки СОМ побудовані на основі програмних компонент Microsoft (Microsoft’s Component Object Model). Оболонки СОМ – це об’єктно-орієнтований набір компонент для використання програмістами при проектуванні простого і зручного інтерфейсу. Зокрема сукупність СОМ забезпечує сумісність Skype з продуктами MS Office SharePoint і Internet Explorer та іншими. Оболонки Skype АРІ COM Wrapper і SkypeX забезпечують також сумісність апаратного забезпечення та додатків зі Skype АРІ.

Утиліта SkypeTracer слугує для керування подіями клієнтського додатку Skype і задання команд через оболонку Skype АРІ. SkypeTracer відображає перелік дій (виконування операцій) у режимі реального часу у межах Skype і їхньої взаємодії під час роботи програми. Утиліта SkypeTracer дає можливість за допомогою АРІ відправляти повідомлення будь-якому користувачеві, ім’я якого у Skype відоме: UserName Text. Замість “UserName” використовується ім’я користувача Skype, а замість “Text” – вміст текстового повідомлення, яке надсилається. Робота з утилітою SkypeTracer здійснюється у діалоговому вікні, де у режимі реального часу відображається перелік поточних операцій Skype і обмін повідомленнями.

У Лістингу 1 наведено текст програми IM.EXE, яка дозволяє обмінюватись повідомленнями автоматично. Оболонка Skype АРІ COM Wrapper дозволяє взаємодіяти з АРІ мовою Visual BASIC 6.0, на якій і написано програму. Автором програми є Jason Terando, Huntington Beach, Каліфорнія, США.


Лістинг 1 Вихідний код простої програми доправляння

текстів повідомлень на мові Visual BASIC 6.0

стр.14 – печатный текст(стр.12- рукописный текст)?

Option Explicit


Private m_objConversion As SKYPEAPI.Lib.Conversion


“Зазначення змінної типу SKYPEAPI.Lib.Conversion”

Private WithEvents m_objSkype As SKYPEAPI.Lib.Access


“Зазначення об’єктів m_objSkype класу SKYPEAPI.Lib.Access”

Private Sub Form_Load()


“Дана функція ініціалізується автоматично у відповідь на відкриття вікна або початкове завантаження додатка”

Set m_objConversion = New SKYPEAPI.Lib.Conversion


On Error GoTo NoInit ' error handler,

Set m_objSkype = New SKYPEAPI.Lib.Access


“Ініціалізація об’єкта m_objSkype”

m_objSkype.Connect


“З’єднання з мережею Skype”

Exit Sub


NoInit:

MsgBox Err.Description, vbCritical + vbOKOnly, “Unable to Connect to Skype”


“У разі неможливості з’єднання з мережею Skype після закінчення часу чекання на екран виводяться повідомлення про помилку і закривається діалогове вікно”

Unload Me

Exit Sub

End Sub


Private Sub btnSendCommand_Click()


“Виклик функції здійснюється натисканням користувачем кнопки “Send””

Dim s As String


On Error GoTo NoCommand


“Обробник помилок”

s = “MESSAGE ” & hadle.Text & “ “& message.Text


“Попередня операція слугує для привласнення текстового повідомлення, яке вводиться у вікно “Message”, до змінної строкового типу S, яка зазначена раніше і побудова командного рядка для передавання на виконання примірнику класа SKYPEAPI.Lib.Access”

If Len(s) = 0 Then


“Перевірка довжини текстового повідомлення на рівність нулю і вихід з додатка”

Exit Sub

End If

m_objSkype.SendCommand s


“Інакше передати командну строку SKYPEAPI.Lib.Access для наступного відправлення повідомлення (Message Text) адресату”

Exit Sub


NoCommand:

MsgBox Err.Description, vbCritical + vbOKOnly, “Unable to Send Command”

“При виникненні помилки під час виконання команди вивести повідомлення про помилку”

End Sub


Програма Skype – це програма глобального застосування і тому виконує двобаштове кодування UTF8. Це дозволяє їй працювати з азійськими шрифтами та ієрогліфами. При написанні програм на мові С/С++ для зберігання строкових змінних рекомендується використовувати масиви WCHAR. При безпосередньому звертанні до функцій Skype для відправлення повідомлень WM_COPYDATA рекомендовано використовувати MultiByteToWideChar. Функцію Skype MultiByteToWideChar для переведення прийнятого UTF8 повідомлення в Unicod. При написанні програм на мові Visual BASIC рекомендується також скористатись цією функцією після додаткового перетворення прототипів функції за допомогою API Text Viewer. Програми, написані на мовах .Net, повинні використовувати класи кодування Encoding.UTF8.GetBytes і GetStrigs, для перетворення байтових масивів у рядки.


Контрольні запитання:
    1. За яким принципом працюють Skype-АРІ?
    2. Які додаткові оболонки використовує програма Skype для роботи на мовах програмування високого рівня Visual BASIC 6.0, Visual BASIC.NET, PHP, Java та Perl?
    3. Яку роль виконує утиліта SkypeTracer у клієнтському додатку Skype?
    4. У якому режимі виконується робота клієнта з утилітою SkypeTracer?
    5. Які функції виконує програма IM.EXE?


Контрольні запитання підвищеної складності:
      1. Покажіть, як об’являються об’єкти класу SKYPEAPI.Lib.Access у Visual BASIC 6.0 (Лістинг 1).
      2. Покажіть, як ініціалізується об’єкт m_objSkype.
      3. Покажіть, як здійснюється з’єднання додатка зі Skype-мережею.
      4. Як доправляється повідомлення Skype?
      5. Як здійснюється перевірка довжини текстового повідомлення на рівність нулю?
      6. Як формуються повідомлення про помилки у програмі на Лістингу 1?


7.4 Створення універсальних програм-додатків у середовищі Skype


Вхідний контроль:
  1. За яким алгоритмом працює телефонний Автовідповідач?
  2. Які пристрої використовуються для введення звукових сигналів у комп’ютер?


На прикладі побудови програми, яка здійснює функції Автовідповідача, можна показати принципи написання додатків Skype.

Автовідповідач Skype повинний виконувати такі функції:
  • відповідати на дзвінок;
  • програвати мелодію звукового привітання;
  • надавати можливість абоненту, що викликає, залишити повідомлення.

Програма Автовідповідач Skype на мові VB.NET повинна працювати на платформі ОС Windows XP, програвати і записувати повідомлення з використанням Windows Sound Recorder і працювати через підключення до вільного віртуального аудіокабеля, Virtual Audio Cable, драйвер до якого є доступний.

Skype АРІ дозволяє вибирати аудіо-пристрій для під’єднання до клієнтського додатка. Це дає можливість реалізовувати програмно Автовідповідачі, здійснювати реєстрацію телефонних дзвінків (SkypePodCaster), створювати інтерактивні системи мовленевого зв’язку (IVR), які працюють у режимі цифрового двоканального багаточастотного набору (DTMF).

Перш ніж писати програму Автовідповідача треба підготувати апаратну частину і мовленеві файли з записом звукового привітання (назва файла Greeting). Для налаштовування клієнтського додатка Skype таким чином, щоби записане привітання програвалось у відповідь на отриманий дзвінок від абонента, потрібний віртуальний аудіокабель (Virtual Audio Cable, VAC) і встановлений драйвер. Після чого треба під’єднати вихід мікрофону від Windows Sound Recorder до аудіовходу (мікрофону) Skype-клієнта. Для встановлення віртуального з’єднання необхідно відредагувати властивості аудіопристроїв рекордера (Audio Devices in Sound Recorder), а також звукових пристроїв Skype (Sound Devices in Skype).

Переконфігурація Windows Sound Recorder і клієнтського додатка на запис повідомлення від абонента, який викликає, здійснюється за такими етапами:
  • підключити за допомогою VAC аудіовихід Skype-клієнта до входу мікрофона Windows Sound Recorder;
  • вибрати для програвання звукового файла у якості пристрою за умовчанням (Default Devices) ”Головні телефони”;
  • вибрати для запису звука в якості пристрою за умовчанням “Virtual Cable 1 In”;
  • вибрати Sound Devices in Skype – для Audio In ”Головні телефони”, для Audio Out“Virtual Cable 1 Out”.

Для тестування роботи фрагмента Автовідповідача вручну користуються утилітою SkypeTracerUtility, задаючи команди Skype АРІ.

При додзвоні до додатка Skype-клієнт у вікні SkypeTracer з’явиться повідомлення CAALXXXX STATUS RINGING. Через 10 с треба відповісти на додзвон і ввести команду


HOOK OFF,


а потім команду


SET AUDIO_IN Virtual Cable 1 In.


Для програвання привітання треба спочатку відкрити Windows Sound Recorder і в ньому файл Greeting, а потім його закрити.

Виконати команду


SET AUDIO_IN Plantronics headset.


Потім команду


SET AUDIO_OUT Virtual Cable 1 Out.


Відкрити рекордер (Sound Recorder).

Вибрати Record на панелі Windows Recorder.

Залишити повідомлення для запису.

Завершує дзвінок команда


HOOK ON.


Звуковий файл треба зберегти.

На закінчення Skype-клієнта треба повернути у початковий стан, виконавши команду


SET AUDIO_OUT Plantronics headset.


Показана проста модель Автовідповідача, за допомогою якої можна вручну задавати команди Skype АРІ в утиліті SkypeTracer. Наступним кроком має бути оформлення цієї процедури у вигляді програми VB.NET з використанням програми керування засобами мультимедіа, які дозволяють здійснити доступ до пристроїв інтерфейса керування середовищем (Media Control Interface, MCI), таким як Windows Sound Recorder.

Для написання і подальшого використання програми Автовідповідача на мовах Visual BASIC, PHP тощо треба встановити оболонку SkypeХ, до якої входить і бібліотека SkypeХ COM. SkypeХ дозволяє запускати також VisualBasicScript за допомогою утиліти WSH (Windows Scripting Host) cscript.exe, яка працює у режимі командного рядка, і HTML за допомогою браузера Microsoft Internet Explorer 6.0.

Додаток SkypeХ забезпечує телефонні конференції, направляння екстрених повідомлень, пошук користувачів, підтримка Phone API тощо.

Доступ до функцій SkypeХ з командного рядка VBScript здійснюється за допомогою команд:


'// Create Skype object

Set oSkype = Wscript.CreateObject (“SkypeX.Skype”, “Skype_”)


oSkype.Timeout = 30000

Wscript.Echo “Wait timeout is “ & oSkype.Timeout & “ milliseconds.”


'// Start Skype minimized and without splash screen

oSkype.Start True, True

oSkype.Attach 4


Доступ до функцій ActiveX control з командного рядка HTML здійснюється за допомогою команд:





Failed to load SkypeX control.




У Лістингу 2 наведено вихідний код утиліти Sample Chat Massage Utility на мові програмування Visual BASIC.NET, написаний Кевіном Диланей (Kevin Delaney, sillyrabbit999 – ім’я у Skype).


Лістинг 2 Вихідний код утиліти Sample Chat Massage Utility

на мові Visual BASIC.NET

стр.29 – печатный текст(стр.17- рукописный текст)?

Public Class Form


Private m_objConversion As SKYPEAPI.Lib.Conversion

Private WithEvents m_objSkype As SKYPEAPI.Lib.Access


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' 'Do the following when the program loads.

m_objConversion = New SKYPEAPI.Lib.Conversion


On Error GoTo NoInit “У разі помилки повернутися у точку “Nolnit””.

m_objSkype = New SKYPEAPI.Lib.Access

m_objSkype.Connect() “З’єднання зі Skype АРІ”.

Exit Sub


NoInit: “Реалізація з’єднання”

MsgBox(Err.Description, MsgBoxStyle.Critical + MsgBoxStyle.OKOnly, “Unable to Connect to Skype”) “Створення вікна з повідомленням про помилку”.

Me.Close() “Завершення програми”.

End Sub


Private Sub SendCommand_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendCommand.Click

Dim s As String


On Error GoTo NoCommand “У разі помилки повернутися в точку “NoCommand””.

s = “MESSAGE “ & handle.Text & “ “& message.Text “Відправити повідомлення Skype у форматі “MESSAGE