Использование Skype API в С++

На сегодняшний день программой Skype пользуются миллионы людей. Кому-то доставляет удовольствие просто болтать с друзьями в Скайп конференции, а кому-то это необходимо по работе. Сейчас успешно практикуются деловые переговоры среди коллег в данном программном обеспечении. Существуют некие правила и хитрости для коллективных собраний в Skype, о которых не имеют представления подавляющее большинство среди пользователей. Команды Скайпа — новая возможность управления чатом. Пользуясь такими командами, можно добиться большей результативности в дискуссионных переговорах с коллегами по работе. Для вас будет представлен набор инструкций по руководству пользования программой Skype.

Deskopt API для Skype

komandy-skajpa-101.png

Skype можно управлять и при помощи командной строки

Deskopt API — программный компонент, который доступен каждому. Данный продукт позволяет управлять процессами Скайпа. Одна из главных целей API — это помочь разработчику управлять вызовами Skype извне программы. Применение Deskopt API не одобряется создателями Skype, но программный продукт все равно используется и имеет спрос. API может использоваться во всех программах, если есть условия использования API, поэтому Cкайп — не исключение. Благодаря среде API, пользователи обрели возможность управлять конференцией с помощью текстовых команд.

Команды, используемые для Скайпа

Иногда бывает так, что при общении в конференции количество собеседников превышает 10. Такое общение не приносит особого комфорта из-за постоянно всплывающих окон на рабочем столе. А если таких конференций много? Нужно и друзьям ответить, и перед начальником отчитаться, и с коллегами по работе обсудить дальнейшие планы. Все это приведет к невыносимой путанице, многое вас будет отвлекать, а порой и раздражать. Поэтому возникает желание скомбинировать весь процесс общения в Скайпе.

Многие пользователи умеют настраивать программу только предлагаемым интерфейсом (глобальные настройки). Такими настройками особо не улучшишь времяпрепровождение в Скайпе. Поэтому в программе Skype предоставлены возможности пользования в ином виде. Команды Скайпа — отличная возможность настроить программу на свой лад. Отправка команды ничем не отличается от обычного сообщения. Просто скопируйте или введите в поле чата строку команды и нажмите клавишу Enter, стоит всего лишь обратить внимание на отсутствие символов перед строкой, тогда команда будет принята. Данные команды Скайпа позволят улучшить контроль над чатом. Когда обсуждаемые вопросы имеют повышенную важность, применения этих команд в большей мере необходимы. Подобным образом в чате могут быть удалены отдельные мешающие для беседы участники. Или же есть возможность уполномочить в ряде правил другого участника.

Список используемых команд

  • /add [Skype-ник] — добавляем собеседника в диалог;
  • /alertsoff (/alertson)- включение-отключение уведомления в чате;
  • /clear — полностью удалить историю переписки;
  • /find [текст] — поиск фрагмента в беседе;
  • /get banlist — вывод на экран списка участников, у которых запрещен доступ к чату;
  • /get creator — вывод на экран информации о создателе чата;
  • /get role — показать вашу роль в чате;
  • /help — вывод на экран списка возможных команд;
  • /history — отображение истории переписки в активное окно;
  • /leave — удалиться из беседы;
  • /set guidelines [текст] — назначить правила чата;
  • /set password [текст] — поставить пароль (использование пробелов недопустимо);
  • /setrole [Skype-ник] MASTER | HELPER | USER | LISTENER — назначить собеседника в беседе исполнительной ролью;
  • /showstatus — вывод общей информации о чате;
  • /verify — проверка баз данных.

Для чего нужны роли в конференции

В Skype конференциях существуют отдельные роли, которые присваиваются участникам для общего порядка, сплоченности и слаженности. Существует создатель конференции, который вправе назначить любого собеседника особой ролью. Подобные вещи делаются для лучшей организованности в общении. У каждого есть свои полномочия. Все роли можно описать по снижению ранга (от создателя до кандидата).

1. Creator — Создатель. Пользователь, создавший чат. Роль создателя не передается, так как она должна быть у одного участника. Только создатель вправе устанавливать и отменять правила чата.

2. Master — Ведущий. Пользователь, получивший право от создателя настраивать чат.

3. Helper — Помощник. Уполномоченное лицо, которое не обладает широким спектром возможностей. Помощник может выполнять различные мелкие действия, он не имеет права назначать или удалять участников чата.

4. User — Пользователь. Простой участник чата, возможности которого ограничены. Пользователь может читать и отправлять сообщения.

5. Listener — Наблюдатель. Участник беседы, не имеющий право отправлять сообщения. Наблюдатель вправе только читать.

6. Applican — Кандидат. Пользователь, которого еще не приняли в чат. Кандидат не может читать и писать сообщения, он ждет своей очереди вступления в чат.

Не так давно понадобилась написать приложение которое бы автоматически отправляло сообщение по Skype определенному пользователю, который есть в списке контактов. Задача была не много сложнее, но дело не в этом. Решил написать маленькую статейку по использованию Skype API. Всем известно, что у Skype есть свое API, причем для разных языков. Я хотел начать описания с Skype4COM для С++. Скачать Skype4COM можно с официального сайта. В архиве находятся три файлика:

  • Skype4COM.chm
  • Skype4COM.dll
  • Skype4COM.msm

Нам нужен собственно Skype4COM.dll.

Hello world для Skype

За первый пример я решил взять пример с сайта скайпа, который выводит версию текущего скайп клиента.

<font>#import <font>"Skype4COM.dll"</font>    <font>int</font> _tmain(<font>int</font> argc, _TCHAR* argv[]) {    <font>// Инициализмруем COM соединение </font>   CoInitialize(NULL);      <font>// Создаем Skype объект </font>   SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype));      <font>// Соединяемся с Skype API </font>   pSkype->Attach(6,VARIANT_TRUE);    <font>// Получаем версию клиента и выводим ее </font>   _bstr_t bstrSkypeVersion = pSkype->GetVersion();    printf(<font>"Skype client version %sn"</font>, (<font>char</font>*)bstrSkypeVersion);       <font>//Печатаем версию COM "обертки" </font>   _bstr_t bstrWrapperVersion = pSkype->GetApiWrapperVersion();    printf(<font>"COM wrapper version %sn"</font>, (<font>char</font>*)bstrWrapperVersion);       <font>// Удаляем соединения со скайп </font>   pSkype = NULL;    CoUninitialize();    <font>return</font> 0;  } </font>

В целом все просто и понятно. Правда есть один момен не много не приятный, как всегда связанный с безопасностью, что на строке:

pSkype->Attach(6, VARIANT_TRUE);

скайп запросить разрешение на использования ресурсов скайпа нашим приложением. Со стороны безопасности оно то правильно, но есть мелкий вариант обхода, но о нем не в формате текущего поста ))))

Отправить сообщение пользователю из списка контактов

Продолжаем набор банальных примеров, теперь собственно разберемся с отправкой сообщения:

<font>#import <font>"Skype4COM.dll"</font>  <font>using</font> <font>namespace</font> SKYPE4COMLib;  <font>int</font> _tmain(<font>int</font> argc, _TCHAR* argv[]) {    CoInitialize(NULL);    ISkypePtr pSkype(__uuidof(Skype));    pSkype->Attach(6,VARIANT_TRUE);      IChatMessage *message;    message = pSkype->SendMessage(_bstr_t(L<font>"user_name"</font>), _bstr_t(L<font>"Привет"</font>));    printf(<font>"%s sent message"</font>, (<font>char</font> *)message->FromHandle);      pSkype = NULL;    CoUninitialize();    <font>return</font> 0;  } </font>

Для того, что бы набрать пользователя, нужно вызвать метод PlaceCall:

ICallPtr pCall = pSkype->PlaceCall(_bstr_t(L"user_name"), L"", L"", L"");

Получить список контактов

<font>IUserCollectionPtr contactList = pSkype->GetFriends(); <font>for</font>(<font>int</font> i = 1; i <= contactList->GetCount(); i++) {   _bstr_t bstrHandle = contactList->GetItem(i)->GetHandle();   _bstr_t bstrFullname = contactList->GetItem(i)->GetFullName();   printf(<font>"Friend login %s and name %s n"</font>, (<font>char</font>*)bstrHandle, (<font>char</font>*)bstrFullname); }</font>

Исходники Если тема интересна могу написать более интересные примеры использования Skype4COM…

solved.pngФорум — Talks

Магазин приложений Skype будет закрыт 21 октября.

В июле стало известно, что Microsoft отказывается от SkypeKit и Skype Desktop API. В качестве альтернативы предлагалось использовать огрызок от скайповского API, доступный через урлы и вот это: http://msdn.microsoft.com/en-US/lync

Выдержка из письма: http://pastebin.com/ezeJ1vaM (источник)

Теперь же можно сказать, что Desktop API прикроют в самое ближайшее время. MS разослало письмо с письменным расторжением договора на публикацию приложений в магазине приложений Skype.

Выдержка из письма: http://pastebin.com/77sAmW2T (источник)

Забавная фраза, что его закрыли в том числе за _некроссплатформенность_: «SkypeKit has never supported cross platform development».

Этот шаг кажется органичным продолжением странной стратегии Microsoft после покупки Skype, в числе «достижений» которой, например, новый бэкенд, лишивший Skype возможности работать локально и других плющек, слияние с MSN/MSID, сводившее SkypeKit с ума, непонятные изменения в дизайне GUI.

Так как онлайновые мосты тоже работали через DesktopAPI, и они тоже всё. И интеграция по dbus тоже через него работала.

Нет мостов, сожжены пути.

Помянем.

Используемые источники:

  • https://itguides.ru/soft/skype/komandy-skype.html
  • https://habr.com/ru/post/72059/
  • https://www.linux.org.ru/forum/talks/9598582

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий