Со Skype можно работать и без ВК (см. здесь), но в этом случае мы лишаемся возможности получать события от Скайпа.
Данная внешняя компонента помогает передавать в 1С события из Скайпа. Сразу предупреждаю — пока только самый необходимый минимум.
Для работы компоненты необходим установленный и зарегистрированный Skype4COM.dll (взять можно здесь)
Перечень событий, поступающих в 1С (в скобках название события по документации Скайпа):
- ChatMessageChanged (MessageStatus)
- OnlineStatusChanged (OnlineStatus)
- ConnectionStatusChanged (ConnectionStatus)
- UserStatusChanged (UserStatus)
Самое важное из этого списка MessageStatus — статус сообщения. Т.о. мы можем узнать в 1С о входящем сообщении. Остальные пока добавил просто так.
В компоненте присутствуют свойства (только для чтения):
- MessID, ИДСообщения
- Mess, Сообщение
- From, ОтКого
- FromName, ОтКогоИмя
- FromGroup, ИзГруппы
При получении сообщения его данные записываются в эти свойства.
«ОтКого» — это скайп-логин отправителя.
«ОтКогоИмя» — имя контакта отправителя в вашем скайпе.
«ИзГруппы» — группа контактов, которой принадлежит отправитель.
Со свойством «ИзГруппы» есть проблемы. Если при запущенной компоненте в самом скайпе изменить принадлежность контакта какой-либо группе, то компонента выдаст верный результат только после переподключения. Почему так происходит — пока не разобрался. Если же не менять у контактов группу во время работы компоненты — группа выдается верно.
Если кто знает, как решить эту проблему с группами — буду благодарен за подсказку.
Методы, реализованные в компоненте:
- Connect, Подключить
- SendMess, ОтправитьСообщение
- Dial, Позвонить
С помощью первого метода осуществляется подключение к Skype
ЗагрузитьВнешнююКомпоненту("Skype1C.dll");
Skype = СоздатьОбъект("AddIn.Skype1C");
Skype.Подключить();
для 1С:Предприятие 8.х объект создаем так:
Skype = Новый("AddIn.Skype1C");
В самом Скайпе нужно дать доступ приложению для возможности работы.
Отправка сообщения:
Skype.ОтправитьСообщение(Кому,ТекстСообщения);
Кому — это логин контакта, которому отправляем сообщение. Для ответа на полученное сообщение используйте свойство .ОтКого
Третий метод «Позвонить» реализован, но не опробован — не было необходимости.
Компонента писалась для создания простого Скайп-бота и передачи с его помощью данных из 1С.
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Сообщить(ТекущееВремя()+" Событие "+Событие+ " Данные = "+Данные);
Если Источник = "Skype1C" Тогда
Если Событие = "ChatMessageChanged" Тогда
//'cmsSending = 0 indicates the message is in the process of being sent.
//'cmsSent = 1 indicates the message has been sent.
//'cmsReceived = 2 indicates the message has been received.
//'cmsRead = 3 indicates the message has been read.
Статус = Данные;
Если Статус = "0" Тогда
varCmsatus = "cmsSending";
ИначеЕсли Статус = "1" Тогда
varCmsatus = "cmsSent";
ИначеЕсли Статус = "2" Тогда
varCmsatus = "cmsReceived";
ИДСообщ = Skype.ИДСообщения;
Сообщение = Skype.Сообщение;
ОтКого = Skype.ОтКого;
ОтКогоИмя = Skype.ОтКогоИмя;
Группа = Skype.ИзГруппы;
Сообщить("("+ОтКого+") "+ОтКогоИмя+": "+Сообщение+" Группа: "+Группа );
Кому = ОтКого;
ТекстСообщения = "Привет! Это отвечает 1С:Робот!";
Skype.ОтправитьСообщение(Кому,ТекстСообщения);
ИначеЕсли Статус = "3" Тогда
varCmsatus = "cmsRead";
КонецЕсли;
Сообщить(varCmsatus);
ИначеЕсли Событие = "OnlineStatusChanged" Тогда
Если Данные = "0" Тогда
varOLStatus = "olsOffline";
ИначеЕсли Данные = "1" Тогда
varOLStatus = "olsOnline";
ИначеЕсли Данные = "2" Тогда
varOLStatus = "olsAway";
ИначеЕсли Данные = "3" Тогда
varOLStatus = "olsNotAvailable";
ИначеЕсли Данные = "4" Тогда
varOLStatus = "olsDoNotDisturb";
ИначеЕсли Данные = "5" Тогда
varOLStatus = "olsSkypeOut";
ИначеЕсли Данные = "6" Тогда
varOLStatus = "olsSkypeMe";
Иначе
varOLStatus = "olsUnknown";
КонецЕсли;
Сообщить(varOLStatus);
ИначеЕсли Событие = "ConnectionStatusChanged" Тогда
Если Данные = "0" Тогда
varConStatus = "conOffline";
ИначеЕсли Данные = "1" Тогда
varConStatus = "conConnecting";
ИначеЕсли Данные = "2" Тогда
varConStatus = "conPausing";
ИначеЕсли Данные = "3" Тогда
varConStatus = "conOnline";
Иначе
varConStatus = "conUnknown";
КонецЕсли;
Если Данные = "Ошибка" Тогда
Сообщить(" Связь со Skype1C прервана");
КонецЕсли;
Сообщить(varConStatus);
ИначеЕсли Событие = "UserStatusChanged" Тогда
Если Данные = "0" Тогда
varCusStatus = "cusOffline";
ИначеЕсли Данные = "1" Тогда
varCusStatus = "cusOnline";
ИначеЕсли Данные = "2" Тогда
varCusStatus = "cusAway";
ИначеЕсли Данные = "3" Тогда
varCusStatus = "cusNotAvailable";
ИначеЕсли Данные = "4" Тогда
varCusStatus = "cusDoNotDisturb";
ИначеЕсли Данные = "5" Тогда
varCusStatus = "cusInvisible";
ИначеЕсли Данные = "6" Тогда
varCusStatus = "cusLoggedOut";
ИначеЕсли Данные = "7" Тогда
varCusStatus = "cusSkypeMe";
Иначе
varCusStatus = "cusUnknown";
КонецЕсли;
Сообщить(varCusStatus);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ИСТОРИЯ:
2011-05-31 (v 0.1.0.1)
* Устанавливаю для входящего сообщения свойство Seen = True. Чтобы не показывалось в клиенте Скайпа, как непрочтенное
Решение мне не нужно, но все равно спс. Совет — мне кажется больше имеет смысл сделать разработку коммерческой — с поддержкой и с гарантией безопасности.
да и еще офф: недавно микрософт купил скайп…надеюсь это хорошо отразится на последнем…
(2) более внимательное отношение к нуждам органов обеспечено
(1) А как можно применить скайп + 1С в коммерции?
(0) +1. Компонента с 1С 8 работает? Чтобы лучше смотрелось сделайте обработки для примера.
(4) Не моя забота, и потом коммерческая и коммерция — разные слова.
коммерческая разработка обязывает автора заключать договор, по которому обе стороны могут прописать все пункты. А бесплатная разработка не обязывает ни к чему, в том числе гарантий по отсутствию всяких шалостей.
(4) Проверил на 1С:Предприятие 8.0 — работает.
Сделать можно коммерческую, а кто ее будет применять?
(7) А кто ее будет применять некоммерческой?
(9) Программисты-любители.
Кому нужен скайп в 1С ели он стоит отбельным приложением.
Хотя, если придумать что-то умное с использованием — то возможно и будут использоваться
(10) Скайп-бот. Вот возможность использования.
(11) я над этим давно думал, и скайп-бот, и аська-бот…
Вот только как реализировать хорошего бота?
(10) Зачем? В крайнем случае есть skype + Skype4COM.dll
У менеджера есть контрагенты, часть которых использует скайп (в базе они прописаны). Так он вручную их оповещает, а так, он будет использовать (0). Но ни одно здравомыслящее руководство не позволит использовать решения, взятые с потолка, без гарантий. Может оно инфу сливает, тем более, что интернет для работы по любому должен быть открыт.
(12) Система запросов. Например у нас: отсылаешь № контейнера на скайп-бот, а он тебе тут же ответ о статусе контейнера. И как получить в 1С уведомление о новом сообщении от skype + Skype4COM.dll без ВК?
(14) У меня рассылка делаешься через пошту)
или вот например 15 . Вещь полезная, но вот проблема как раз безопасности.
(16) какая разница как у тебя делается рассылка, я взял пример наобум, смотри 15
(17) И в чём именно проблема?
😀 см. 14
(19) Думаю, проблемы нет вообще. Нужно только хорошо продумать средство аутентификации (кто к чему)…
(21) Ты смеешься? Откуда тебе знать,что эта ВК делает?
(21) Аутентификация по скайп-логину. Он заносится в карточку контрагента. Если он прописан и контейнер этого заказчика — выдается ответ на запрос.
Если обработка — можно посмотреть. А если компонента — здесь нужно смотреть куда ломается. Думаю, фаерволом можно поймать если посылаются данные не туда.
(23)пример:
имя скайпов в спр.контрагенты: Вася; Петя.
Вася делает запрос и удачно получает ответ на который должен знать только Петя.
Здесь по логину мало.
(24) про снифферы можешь мне не рассказывать 😀 вот именно вариант для любителей…
(26) Это уже вопрос реализации алгоритма на стороне 1С, а не на стороне компоненты.
Поясните, нужен ли для работы ВК установленный Скайп?
(28) Конечно нужен.
Ну так что, кто присоединяется до создания разумного бота с интеграцией со скайпом и аськой?
(30) И в чем должна быть заключена разумность бота? И вообще — это, наверное, уже не здесь нужно обсуждать. 🙂
(31) от как раз-то это главный вопрос!
Ходячий анекдот 😀
+ однозначно .. 🙂 .. Хотя бы идею и, пусть мало-мальскую, но реализацию. Подобные интеграции хорошо развивают креативность мысли! А для IT-ника это самое главное! P.s. Было бы шикарно соединить 1С и, например, Pacman’а! 😉 🙂
(29) Спасибо, тогда в топку
Интересная идея, но пока не вижу реального практического применения в рамках 1С 8. Мессенджер он на то и мессенджер, чтобы человек человеку руками писал вопросы-ответы. А в асинхронном режиме ИМХО, этот канал проигрывает электронной почте.
Вот можно еще вариант использования (для продвинутых директоров, например): Висит 1с-ка с запущенным ботом (скайпа или аськи — не важно). И у директора на мобиле запущено. Он с мобилы посылает запрос боту, например «ОСВ 51», и ему в ответ — остаток по банковским счетам, «ОСВ 62» — остаток дебиторов (например, первые 10 крупных), «ОСВ 62 Рога и копыта» — задолженность конкретного контрагента.
(37) Эту идею собственно автор и подчеркнул, читайте выше. Тут уж полет мысли не остановит — через скайп можно показывать демонстрационные конф-ции(на кодпроекте плагин), через скайп можно быстро обменятся данными (через xml естесн), потребуется только скайп, без настройки vpn и прочего, в общем что хотите. В прелесть скайп (в этом же его порок) — это хитрая пиринговая прога, устанавливающая связь практически где угодно (главное чтоб интернет был), а как использовать этот канал связи решайте сами. Хоть черную отчетность передавайте. 😀
Isq, Skype — это же online сервисы, всё время слушающие и передающие инет. Вполне может быть что-то типа RAdmina или снифера. 😎 Если дать доступ для компоненты с нескольких ПК, то надо их опубликовать на файерволе каждую. Почта безопаснее… сервер ОДИН и может бывть в ДМЗ зоне. 😉
Мой вариантhttp://infostart.ru/profile/98833/
Компоненту загрузил,
команды:
вызывают ошибки:
Skype1C : Ошибка ActiveX component can’t create object
Skype1C : Ошибка Object variable or With block variable not set
платформа 1с7.7
skype 5.3.0.120
Подскажите, пожалуйста, что поправить.
(41) Skype4COM.dll установлен?
Вот уж не думал что такое возможно, приятно удивили )))))))))))))
Пытаюсь запустить.
попытка
ЗагрузитьВнешнююКомпоненту(«D: empSkype1C.dll»);
Skype = Новый(«AddIn.Skype1C»);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Skype.ОтправитьСообщение(«xxxxx»,»ТекстСообщения»);
НА ОтправитьСообщение Выдает ошибку:
Skype1C : Ошибка Object variable or With block variable not set.
В чем может быть проблема?
Операционка windows7, skype 5.6.59.110, 1c 8.1.14.15
(44) А где Skype.Подключить()?
(45) Спасибо. Уже разобрался. Спать, пожалуй, пора
Вопрос решен. Ступил.
Отличное решение. Было бы неплохо сделать это же с другими мессенджерами с возможностью вставлять переписку
При подключении появляется ошибка
{Форма.Форма(3)}: Тип не определен (AddIn.Skype1C)
Скайп = Новый(«AddIn.Skype1C»);
Здравствуйте, можно узнать , умеет ли ваша компонента входить в скайп под заданным логином и паролем? Или скайп должен быть просто запущен на компьютере?
(50) Нет, не умеет входить под логином, только подключается к уже запущенному скайпу. При первом подключении нужно в самом Скайпе разрешить подключение внешней компоненты.
Сейчас читаю по ссылке, приведенной для скачивания Skype4COM.dll
«Important: The Desktop API is no longer supported and some of its features will be gradually discontinued.»
То есть похоже что возможность такой работы зарежут?
(105) Gazza, похоже на то. вот мерзавцы.
Доброго времени суток. Встала необходимость работы со Скайпом из 1С. Проблема в том, что перед работой необходимо добавить 1С-ку в контроль доступа программного интерфейса (в настройках скайпа). Можно ли как-то сделать это программно из той-же 1С или может скриптом каким-нибудь?
Я делал доступ для 1С вручную из интерфейса скайпа. Один раз.
(55) Сейчас встала еще пара вопросов:
1) Как можно переключаться между несколькими запущенными сеансами скайпа (разные учетки)?
2) Как закрыть определенный сеанс скайпа?
подписался
Далее пойдут темы с интеграцией VK, Мой мир, Одноклассники. Ну а чо, настрочил отчеты и сразу по одной кнопке в соц сети новость разослал. Уплатил налоги — сразу уведомление в аську главному налоговому инспектору. А уж коли просрочил уплату в ПФР — 1С сама стук стук кому надо по почте. Автоматизация епта, нет предела совершенству!
Эх, не работает больше API с чатом…Звонки работают!
https://support.skype.com/ru/faq/FA12384/kak-prilozenie-tret-ego-lica-rabotaet-so-skype-i-kak-izmenenia-v-skype-povliaut-na-nego
идея хороша для отслеживания переписок сотрудников чтобы инфа не утекала супер было бы если еше агент таким же образом завязать
Есть сведения о работоспособности компоненты сейчас под 8.3? Может, версия новая есть?
Сведений нет. Не проверял.