Modify

Ticket #82 (closed enhancement: fixed)

Opened 9 years ago

Last modified 7 years ago

support for skype IM API?

Reported by: csant Owned by:
Priority: wishlist Milestone:
Component: BitlBee Version: 1.0
Keywords: Cc:
IRC client+version: Client-independent Operating System: Public server
OS version/distro:

Description

Given that there is a public Skype API it would be nice if BitlBee would offer that additional service.

For a very basic python CLI interface to skype IM, see at the Skype Forums.

Attachments

Change History

comment:1 Changed 9 years ago by jelmer

I'm not sure how useful this would be, as it requires you to have the skype GUI running. For instance, this would never work on a public server.

comment:2 Changed 9 years ago by anonymous

it would be _cool_!

comment:3 Changed 9 years ago by mark@…

I'm perfectly willing to run skype on the machine I run bitlbee on, if it'll prevent me from having to run skype on the 5 or 6 machines I regularly access my IRC screen session (and bitlbee) from. I love bitlbee because it lets me consolidate this kind of stuff... it would be great if it would let me consolidate skype-IM too. :)

Are you accepting patches for this?

comment:4 Changed 9 years ago by wilmer

Yeah, we usually do, as long as the code is not too bad and doesn't affect the program's stability. :-) But it doesn't have to be a patch, writing plugins for BitlBee should be possible too now.

comment:5 Changed 9 years ago by mark@…

Hi wilmer,

By "plugins", do you mean "subdirectories of bitlbee-1.0.1/protocols/", or is there some external-plugin API I should use? Is the release-branch of code the wrong place to look? I don't see any plugin documentation on www.bitlbee.org, nor do I see any in bitlbee-1.0.1/docs/, and I don't see any suspicious-looking plugin.h in the source tree.

If you think I should start from an svn checkout, which branch should I use?

Thanks :)

comment:6 Changed 9 years ago by jelmer

You'd want to look at doc/example_plugin.c. You should be able to use all regular BitlBee API's from your plugin as you would from BitlBee itself. You will probably want to call "register_protocol()" from your plugins init function.

Also see 'make install-dev', which will install the headers and .pc file for you.

Let us know if you have any questions.

comment:7 Changed 9 years ago by jelmer

I'm not sure how Skype's public API works, btw, but you'll violate the GPL if you need to link against any non-free libraries.

comment:8 Changed 9 years ago by wilmer

Yeah, good point. :-/ And for the repository (bzr, not svn!), just use -devel, it has all the plugin stuff already AFAIK.

comment:9 Changed 9 years ago by mark@…

Hi jelmer!

If that were the case, you'd be absolutely right. However, it looks like their idea of "public API" is exporting an IPC interface with dbus, so it looks like I will only need to link against libdbus.so (dual GPL/AFL license). The idea is to make bitlbee remote-control the running skype process, with dbus commands. Kind of a crock for public servers, but very useful for run-your-own-server users like me.

I'll check out the -devel branch. Thanks!

Mark

comment:10 Changed 9 years ago by mark@…

Thanks for your help, guys.

Well, I've learned all about dbus, and put together a skeleton plugin and a couple of test apps, only to discover that skype isn't actually listening to dbus requests. It seems skype requires old versions of dbus (like, <= 0.23).

The kopete-skype guys (over at http://extragear.kde.org/apps/kopete%20skype/) apparently have the same problem, and from their forums it looks like everyone's been patiently waiting for years for a new release of skype that works with newer dbus, cures cancer, supports alsa, doesn't segfault, doesn't require X11 and/or doesn't look like ass, and so on and so forth.

I have a pretty low tolerance for library-version incompetence, and I don't feel like breaking everything else by downgrading dbus, so I'm going to stop working on it for the moment. I might look at it again if I suddenly wake up one morning to discover I'm bored from not having enough broken software in my life, and I'll definitely revisit this if/when they fix their library problems. In the meantime, feel free to write me if you want a copy of my work to date... I haven't gotten very far, though.

Sorry for wasting your time :)

Mark

comment:11 Changed 8 years ago by mark@…

FYI, this might be worth revisiting in the near future.

The new (beta) version of Skype supports remote control using either DBus (still the old version, though they claim they will support version 0.61+ when they make a full release), or message-passing via libX11. There are examples for both DBus and X11 APIs up on their site.

https://developer.skype.com/Docs/ApiDoc/Using_the_Skype_API_on_Linux

I imagine linking against libX11 wouldn't cause any more licensing problems than linking against libdbus would. And it also looks like you have to pass "--enable-dbus" on the command-line to turn DBus on, so the libX11 protocol would be a bit more useful, I think. (as long as you have a DISPLAY environment variable, anyway.) Funny that they claim the examples are written in C, but the sources are .cpp files...

Mark

comment:12 Changed 8 years ago by penny@…

Hi, I too am anxiously awaiting some way for bitlbee to talk to skype... That last update was last year, what's happened on this since then?

Penny

comment:13 Changed 7 years ago by jelmer

None of us (core developers) is working on this. Writing a plugin that provides skype support should be possible though. I'd be happy to help figuring out the correct API's.

comment:14 Changed 7 years ago by vmiklos@…

Hm the situation is not so easy. The target for many of us would be to run Skype on a server (where bitlbee runs), but that's not yet supported:

http://forum.skype.com/index.php?showtopic=89970

Maybe there is an ugly hacks to work this around? ;-)

  • VMiklos

comment:15 Changed 7 years ago by vmiklos@…

Hm. Here is an idea. I think it would be good to create a mini server on the machine where Skype runs.

Pros:

  • Bitlbee usually runs on servers where Skype would not be able to start (lack of X, etc)
  • This way later Skype support could be enabled even on public servers, as Bitlbee would be able to connect even to remote Skype instances.
  • No DBus code in Bitlbee, the server would have a simple plaintext-based interface
  • It would solve the problem mentioned in the previous commaent

Cons:

  • It's a bit ugly, a bit more problematic to set up, and yet another used port ;)

What do you think about this?

comment:16 Changed 7 years ago by anonymous

Well, I did it this way ;)

Some initial code and documentation is available at:

http://ftp.frugalware.org/pub/other/people/vmiklos/bitlbee-skype/

as you can see chatting already works, but the TODO list is still long :)

comment:17 Changed 7 years ago by penny@…

That looks great! I'm going to download it soon and have a go - just one query - it looks like to talk to people you type in the control channel by prefixing their nick - this is different to being able to just /q them which is what I do currently for jabber & oscar connections - is this planned?

comment:18 Changed 7 years ago by vmiklos@…

this is just a question of setting. the default is what you mentioned. you need to "set private false" to get the behaviour what you can see on the shots. just this is the way i like it. so don't worry, this is not related to the skype plugin :)

comment:19 Changed 7 years ago by vmiklos@…

just wanted to announce that i finished implementing all the major features. in other words the current code firt my needs (except that annoying skype bug, but that's a bug in skype itself) and i think that it is documented enough that others could test the code. iow, please check it out and celebreate/blame me if it does/does not work :)

thanks,

  • VMiklos

comment:20 Changed 7 years ago by penny@…

Hey I just started downloading and compiling this and then read the TODO list and see there's no immediate plan to add group chat support. That's pretty much the entire reason I have to run skype now as a particular open source project I work on conducts all its development chat on skype :(

Can you post here again if you implement this feature in the future?

:) Thanks for all your work on this so far!

comment:21 Changed 7 years ago by wilmer

Wow, an open source project that uses Skype... Do those people even know what open source means? :-/ Have you tried pushing Jabber? That should work with BitlBee. Or just use IRC... :-)

Miklos, great work! Now we know for sure that the plugin support really is good enough to add plugins ... well, with those four patches. I'll try to take a look at them soon so your plugin will run out of the box. It's great to have this as a plugin because something like this is exotic enough that I wouldn't be too happy about merging it into the main tree. Having this as a plugin is a *great* solution, and I'll do my best to keep the API stable now so this will continue to work.

comment:22 Changed 7 years ago by anonymous

Penny, sure, I'll post here a new comment if I'll be ready with the implementation of the group chat support.

Wilmer, thanks for your review in advance! :-)

comment:23 follow-up: ↓ 24 Changed 7 years ago by anonymous

wilmer, I know, I've been fighting that battle unsuccessfully for awhile now :(

VMiklos, thanks!

comment:24 in reply to: ↑ 23 Changed 7 years ago by Martin D

Replying to anonymous:

wilmer, I know, I've been fighting that battle unsuccessfully for awhile now :(

We're using Skype for development chat because it's free and supports: ongoing group chat (with many people, identified by name and profile photos), full history (if you come in late you can scroll back and see what everyone said earlier) and multiple platforms (Linux, Mac OS X, Windows) in a nice easy package. I'll happily switch to any open source package that has the same features! Show me one!

comment:25 Changed 7 years ago by wilmer

Hi Martin,

Thanks for the explanation. Well, Jabber groupchats can give backlogs, and I wouldn't be surprised if you can find a server somewhere that can give you more than just a fixed number of lines. Not sure about the profile stuff, but that probably depends on the Jabber client you're using.

Because I do think being forced to use one specific client is a *strong* point against Skype. It's much nicer to have a choice. :-)

comment:26 Changed 7 years ago by VMiklos <vmiklos@…>

Today I've released version 0.2.0 with group chat support.

There can be minor problems, but basically it should work. It works like on MSN - according to the docs:

  • It detects when you're invited
  • You can start a group chat using /j #nick
  • You can use /invite nick in a group chat

Please test it and tell me if it works for you or what problems it has.

Thanks,

  • VMiklos

comment:27 Changed 7 years ago by anonymous

Good work VMiklos!!

Are there any bitlbee public servers up and running with your skype plugin ??

comment:28 Changed 7 years ago by wilmer

That's never going to work because it depends on a running Skype instance that knows your username + password. :-)

comment:29 Changed 7 years ago by VMiklos <vmiklos@…>

the proxy daemon and bitlbee can be on two different machines, that's not a problem. but there is no authentication in the proxy daemon, and surely no-one will open his proxy daemon for a public server because of this.

i'm a bit confused, as i tried to keep the proxy daemon as minimal as possible. but it would be possible to add authentication support to the proxy daemon and then it would be safe to open the port of the proxy daemon "to the net", so that public servers could connect to it.

OTOH, this would bloat the proxy daemon and i don't think it would make things really easier since you still have to run the proxy daemon and skype on your own machine.

comment:30 Changed 7 years ago by adamcandy@…

Hi, This is great work - thanks for all your efforts! I have been keeping up with the project and have tried a few times to get bitlbee talking to skype. I have just tried using the method described on VMiklos webpage and have bitlbee acknowledging when new users join and leave, but can't seem to send and receive messages. The skype client also doesn't seem to respond when the account is turned on and off from bitlbee - nor when /away is used. When the daemon is run in debugging mode (skyped -n -d) I have a recurring error when connected: << ERROR 2 Unknown command Does anyone have an idea what the problem is? I'd really love to get this working! Thanks for your help, Adam

System = Debian Etch, Skype = 1.4.0.118, Bitlbee = BitlBee bzr-260 Linux/i686 (with patch from VMiklos), Skype4Py = 0.9.28.1 (also tried most recent version 0.9.28.5), Python = 2.5 (Etch version), pygobject = available in Etch python modules

comment:31 Changed 7 years ago by adamcandy@…

If it's important, the exact line used to patch bitlbee was: patch -p0 < bitlbee-topic-write.patch

Also, I used the tarball of bitlbee-skype-0.2.1 (I couldn't get git working)

comment:32 Changed 7 years ago by VMiklos <vmiklos@…>

I have just tried using the method described on VMiklos webpage and have
bitlbee acknowledging when new users join and leave, but can't seem to
send and receive messages. The skype client also doesn't seem to respond
when the account is turned on and off from bitlbee - nor when /away is
used.


there is an api change in skype4py 0.9.28.4+, that's why the docs says
"the latest tested version 0.9.28.3". i have 0.9.28.1 installed on my
procuction box

When the daemon is run in debugging mode (skyped -n -d) I have a recurring
error when connected:
<< ERROR 2 Unknown command
Does anyone have an idea what the problem is?


yes, that's an error message from skype. do you have a ">> FOO" line
before that?

something like:

>> FOO
<< ERROR blah


then we'll know that the problematic command is FOO

Skype = 1.4.0.118,


i have 1.4.0.99 here, but as far as i remember i tested 1.4.0.118, too
and it worked fine for me

Bitlbee = BitlBee bzr-260 Linux/i686 (with patch from VMiklos),


i have bzr256, but i don't think that would cause a problem

Skype4Py = 0.9.28.1 (also tried most recent version 0.9.28.5),
Python = 2.5 (Etch version),
pygobject = available in Etch python modules


this should be all ok, (0.9.28.1 is, 0.9.28.5 not)

If it's important, the exact line used to patch bitlbee was:
patch -p0 < bitlbee-topic-write.patch


that's obvious to me, but yes, i'm too addict :)

added to README

Also, I used the tarball of bitlbee-skype-0.2.1
(I couldn't get git working)


there are only doc updates in git since that version, so this should not
count

thanks,

  • VMiklos

comment:33 Changed 7 years ago by VMiklos <vmiklos@…>

Hello,

Just wanted to inform you all that a new version of bitlbee-skype is now available. 0.2.2 works properly with BitlBee's dev version (>=bzr264) again.

Also, the project has been moved to http://vmiklos.hu/project/bitlbee-skype/.

Happy Skype-ing!

  • VMiklos

comment:34 Changed 7 years ago by wilmer

  • Status changed from new to closed
  • Resolution set to fixed

Okay, this exists now, with lots of thanks to vmiklos for his *excellent* work!!

It's not in the main BitlBee and it'll never be for various reasons, but because it's a plugin that shouldn't be a problem.

comment:35 Changed 7 years ago by VMiklos <vmiklos@…>

Just wanted to let you know what 0.2.3 is out for a while with one interesting change: you no longer receive the fake warning when creating the groupchat.

  • VMiklos

comment:36 Changed 7 years ago by VMiklos <vmiklos@…>

0.2.4 is out:

  • fix for latest skype4py, this should fix the '<< ERROR 2 Unknown' problem, too
  • tested with latest skype 2 beta (the one which has video support)
  • improved documentation
  • VMiklos

comment:37 Changed 7 years ago by VMiklos <vmiklos@…>

0.2.5 is out and is available at the usual http://vmiklos.hu/project/bitlbee-skype/ page.

it introduces a new feature: the 'info' command of bitlbee is now supported (to show full name, age, birthday date, etc).

  • VMiklos

comment:38 Changed 7 years ago by anonymous

new year, new release!

0.2.6 is out:

  • the server setting has a default value, 'localhost' so in most cases you no longer have to set it explicitly
  • support for receiving emoted messages, ie. when the user types '/me foo'
  • support for setting the display name (nick 0 "foo bar") - it sets the mood text

enjoy,

  • VMiklos

comment:39 Changed 7 years ago by VMiklos <vmiklos@…>

0.3.2 is out and is available at the usual http://vmiklos.hu/project/bitlbee-skype/ page.

new features since the last announcement:

  • authentication support in skyped via ssl, so including the skype plugin even on a public server makes sense
  • support for Skype 2.0.0.43
  • skyped now automatically starts/shuts down skype
  • improved 'make prepare' to handle more automake versions (this was a problem for some people when not using the released tarball)
  • documentation improvements

enjoy,

  • VMiklos

comment:40 Changed 7 years ago by anonymous

  • Status changed from closed to reopened
  • Resolution fixed deleted

Hello

anyone can help me ?

its is posible to send msg to group on bitlbee - yahoo messenger?

Thank You

comment:41 Changed 7 years ago by wilmer

  • Status changed from reopened to closed
  • Resolution set to fixed

Mister florin61215@…,

Not only are you trying to get BitlBee to help you in your spamming activities, you are actually spamming us, everywhere around the project, to get someone to do your fucking dirty work. We banned you on IRC and you continue to send random people e-mails. And now you're reopening totally irrelevant tickets. This is totally unacceptable.

GET LOST. Don't EVER come close to anything related to BitlBee again. Nobody's going to help you in your mission to continue to irritate people all around you in even more ways.

View

Add a comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.