RSS 2.0 Feed
RSS 2.0


Atom 1.0 Feed
Atom 1.0

  Solving problems through programming...and why the Skype API sucks 


I love to take the approach of solving computing problems through programming. Sometimes it backfires and I over-complicate the problem (I have been known to prematurely generalize from time to time). But usually I bask in the greatness of being a programmer and having the skills to make my life easier and remove redundant or tedious tasks programically.

I read a post from Scott Hanselman where he discusses some great things about Skype and a big issue that Skype has. I am also a big Skype user. I use it daily for communicating with people I work with that live in other parts of the country. Skype is great. It is one of those programs that “just works” and exceeds my expectations for VoIP software. Scott's gripe with Skype is one that I share. It being that you have no way to store your contact's remotely. If you use Skype on more than one computer then you are forced to set up each Skype installation independently. You have to add your contacts to each install and go through the whole process of getting authorization from them each time. Well that just sucks. Scott mentioned how Skype stores it's contact information as a binary file. Not XML or something. I am sure it does that to prevent editing of the file allowing people to possibly spoof authorization or get around other rules of use.

If you've ever worked with the Skype API before then you know one thing. It sucks. It is a message based API. You communicate with Skype (and Skype with you) via SendMessage and WM_COPYDATA commands. Not only that but it is slower than you can imagine. Simple things like getting a list of the contacts and showing their online status is painfully slow. No fun at all. I mean, for such great software they sure did fall short on their API. But none the less, they do have an API and I decided to take a stab at solving some of the limitations of Skype with it. This time, instead of fighting through sending messages, I found a COM wrapper built by carcass (with C++ source) that wraps the required messaging, exposing enumerations, events, and nicely wrapped objects. Although easier to work with, still does not account for the crappy Skype API (but thanks carcass!)

Well, things didn't turn out so well. While it is easy enough to read data from Skype, place & answer calls, send messages etc with the Skype API, there is no way to programatically add a contact to the list. So what was going to be my Skype Backup/Restore utility turned out to be a “Export Only” utility. Well at least it is something.

Not what I set out to solve, but at least now I can get a list of all my Skype contacts (and calls if I need them). This way when I reformat my computer or set up Skype on a new computer I don't have to lookup all my contacts since I'll have my list. At least that is something, right?




                   



Leave a comment below.

Comments

  1. David's Blog 1/26/2005 8:19 PM
    Gravatar
  2. David's Blog 1/26/2005 8:20 PM
    Gravatar
  3. BERYL GOSNEY 2/5/2005 3:27 PM
    Gravatar
    Ryan, has anyone ever told you that you look exactly like BUCKY JACOBSEN on the Seattle Mariners??????

    I am not sure where you're at to know this but I am a staunch Mariner fan...hahaha

    Anyway, plain and simple, I love everything about SKYPE as a layman user...I despise the feedbacxk problem I am having however...and I believe it is in my system....probably a bad ground as when I turn up the speaker volume at a moderate level, I can hear myself in the speakers when I talk.....

    On my system at the office I dont have that problem??????

    Any ideas?

    BERYL - jls0000@aol.com
  4. Ryan Farley 2/5/2005 4:02 PM
    Gravatar
    Hi Beryl,

    No, actually, I've not heard that one. I don't follow sports much, and live in Arizona where you don't hear much Mariners talk down here ;-)

    For Skype, I use a Plantronics DSP headset. It connects via USB and installs itself as a second audio device. In Skype you can set the headset audio device as the one Skype uses (So it is different than the main windows audio device - I can talk on Skype and still listen to Winamp at the same time - both through different audio devices). I've never had any problems with it and the sound quality is amazing (I wish I would get such clear sound on my land-line phone).

    -Ryan
  5. pattyonthehill@yahoo.com 2/7/2005 10:24 AM
    Gravatar
    i can hear people but they can not hear me , i reset many times and checked recorder and it works, tried microphone on different computer and it worked, tried working head phones, no go, called skype many times
    got nothing reinstalled skype, to new one i am still trying, if anyone can help plz patty
  6. Andrew 2/9/2005 1:18 PM
    Gravatar
    http://www.jyve.com Has an online uploader that stores your contacts in a directory, it is free as well.

    For those that are so inclined.



  7. Ryan Farley 2/15/2005 9:03 AM
    Gravatar
    Thanks Andrew. I've looked at Jyve before. Doesn't look too bad, but it really goes too far beyond what I'm looking for. But still worth a look.

    -Ryan
  8. chinese man 2/21/2005 1:02 AM
    Gravatar
    can you mail skype api to me?
    i am a chinese man. i like skype and want to develop form using skype api.
    thank you


    my mail is liq0203@163.com
  9. Ryan Farley 2/21/2005 6:43 AM
    Gravatar
    chinese man,

    You can get the Skype API by installing Skype (See http://www.skype.com/). If ou want to use the COM wrapper I mentioned in the article, first download and install Skype, then download & registrer the COM DLL from http://www.geocities.com/skypeapi/.

    -Ryan
  10. Chris 2/25/2005 6:51 PM
    Gravatar
    Does anyone out there know how to send play a wav file through Skype? I'm looking to call someone on Skype and play the .wav file. Thanks.

    -Chris
  11. João Leite 3/16/2005 4:10 AM
    Gravatar
    Hey man, u know where my contact list was saved !?!!??!

    Hasta
  12. Ryan Farley 3/16/2005 7:06 AM
    Gravatar
    João Leite,

    The export dialog allows you to select the location to save the file. The default location is where the application itself was installed.

    -Ryan
  13. Joshua 3/25/2005 9:19 AM
    Gravatar
    Looks like Skype 1.2 now offers centrally stored contacts list... Check it out: www.skype.com
  14. Yul Agbay 6/19/2005 8:21 PM
    Gravatar
    Dear Ryan,

    I downloaded your Skype Export Utlity, installed and found very usefull. I exported my call list as CSV and found that the first line is truncated to the headers. I use excell 2000. Hope this feedback helps.

    Cheers!
    Yul
  15. Michael Möller 7/8/2005 1:02 PM
    Gravatar
    I tried the download today. It failed miserably getting the contact list. On the other hand I have just upgraded to the latest Skype 1.3.0.57. Oh well, I'll try something else. I'm just trying to run Skype alternatly on my main machine and on my portable, and looking for some way to keep the contact lists in synch
  16. Ryan Farley 7/8/2005 1:39 PM
    Gravatar
    Michael,

    I just tested it with version 1.3.0.57 and it works for me. What exactly was the error you received? You did catch that the .NET 1.1 Framework is required to run this (but not included in the install), right?

    BTW, you can now export contacts to a vCard and then import them in again - built in to Skype. It also now has the ability (again, built in) to store contacts centrally.

    -Ryan
  17. Nance 7/19/2005 3:15 PM
    Gravatar
    same as pattyonthehill.com No one can hear me when I call. Please help me someone!!
  18. Ryan Farley 7/19/2005 3:22 PM
    Gravatar
    Nancy,

    Try visiting the Skype Forums (http://forum.skype.com/) and post your issue there. You'll have much better luck and getting a response.

    Good Luck,

    -Ryan
  19. Yul Agbay 7/29/2005 4:36 PM
    Gravatar
    Hi Ryan,

    Any plan for updating this nice utility? What I found that the csv format contains some extra delimiter that will give one space before the data as viewed in MS excell.

    rgds,
    Yul
    icybernet@gmail.com
  20. Ryan Farley 7/29/2005 8:52 PM
    Gravatar
    Yul,

    I fixed that - just for you ;-)

    Download the install again and reinstall. The extra space is now gone and everything looks as it should in Excel.

    -Ryan
  21. darren 11/23/2005 3:01 AM
    Gravatar
    only partially works for me, on skype version 1.4.0.71

    imported my calls, but the formating for duration is messed up. longer calls of 25:35 (25 minutes, 35 seconds) came out 25:35:00

    didn't import my contacts at all.

    u need to mention that it requires the .Net 1.1 framework

    get that here :
    http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

    looks promising, good start.
  22. Yul Agbay 12/7/2005 4:24 AM
    Gravatar
    Dear Ryan

    >>I fixed that - just for you ;-)

    Sorry, I was away for a while. Confirm that the extra delimiter in csv are gone. Thank you for this very usefull utility, I use it for monitoring my calls.

    I hope you can spare more time as the other (previous) bug (Can I call it :-)) was still there. What I mean is that the 1st line of the call list is truncated to the header. I wish I can send you my csv file for this one.

    The other item I noted is that the conversion of the call duration has some random error i.e. the 25:15 (tweenty five minutes and fifteen seconds) is converted as 25:15:00 (tweenty five hours, 15 minutes and zero second). Still in the exported csv, actually I am only using the csv format also so I can not relate with the other (xml) exported format.

    I hope you can take a look in to the code very soon.

    rgds,
    Yul
    icybernet@gmail.com
  23. Karika 1/30/2006 1:31 AM
    Gravatar
    Hey Ryan,

    In the Ruby application, I need to the contact list of the currently logged-in Skype user.
    Can you suggest me appropriate Skype API for the same that I can use
    and incorporate in Ruby on Rails client application?

    Thanks and Regards,
    Karika.
  24. jan geirnaert 3/12/2006 2:40 AM
    Gravatar
    hi. interesting utility. is anything like a skype "importer" too ?

    gr

    jan
  25. Frank 3/23/2006 1:10 PM
    Gravatar
    Here are the results with Skype 2.0.0.97 in Windows 2000 Server
    I start Skype, then start Skype Exporter,
    - Skype throws a dialog "Another program wants to use Skype...
    Name: RF.Utility.SkypeExport.exe, Publisher: Ryan Farley - ryanfarley.com"
    - I check "Allow this program to use SKype, but ask again in the future." I wait a few seconds. (If I wait too long, two more "Another program..." dialogs appear... I close the extra dialogs and click "OK". )

    The API Access Control icon appears at the bottom of the Skype window (opposing arrows).

    The Skype Exporter progress bar zips from left to right.
    Nothing appears in the Skype Exporter dialog box.

    I click Reload, and Skype Exporter throws up this:

    "An unhandled exception has occurred...

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Threading.ThreadStateException: Thread is running or terminated; it can not restart.
    at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
    at System.Threading.Thread.Start()
    at RF.Utility.SkypeExport.MainForm.btnReloadContacts_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/microsoft.net/framework/v1.1.4322/mscorlib.dll
    ----------------------------------------
    RF.Utility.SkypeExport
    Assembly Version: 1.0.2036.39155
    Win32 Version: 1.0.2036.39155
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/RF.Utility.SkypeExport.exe
    ----------------------------------------
    System.Windows.Forms
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
    ----------------------------------------
    System
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
    ----------------------------------------
    System.Drawing
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
    ----------------------------------------
    Skybound.VisualStyles
    Assembly Version: 1.0.5.0
    Win32 Version: 1.0.5.0
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/Skybound.VisualStyles.DLL
    ----------------------------------------
    Interop.SKYPEAPILib
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/Interop.SKYPEAPILib.DLL
    ----------------------------------------
    CustomMarshalers
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/winnt/assembly/gac/custommarshalers/1.0.5000.0__b03f5f7f11d50a3a/custommarshalers.dll
    ----------------------------------------

    ************** JIT Debugging **************
    To enable just in time (JIT) debugging, the config file for this
    application or machine (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the machine
    rather than being handled by this dialog.


    ===================================="
  26. cresha 4/13/2006 9:22 AM
    Gravatar
    hi...can someone help me. well i live in the country of Belize and for a long time now they have been trying to ban skype here. i thing they have done so through the dial up service and i use the broadband/cable service. i don't know if they banned skype through there yet but i've been trying to download it but when ever it reaches 60percent or so it brings up a message saying '' setup files are corrupt'' and it doesn't download at all. PLEASE HELP!! if there is a solution to this
  27. sebi 4/19/2006 11:09 AM
    Gravatar
    People, I am using Skype 2.0.0.79 and I never bought credits. But I need the call list that is stored in my computer!!! All the calls that imade and received...how do I do that. IT IS URGENT!!! I need it for my immigration file to canada. PLEASE!!!

    Thank you very much.


    sebicatana@gmail.com
  28. Steve B - Ops in Afghanistan 6/30/2006 5:57 AM
    Gravatar
    Buddy,

    My wife has had 7 attempts in down loading skype 2.5 from the website. The step by step features are easy to follow but the snag is when the download is complete, nothing else happens. It should then go to install but doesn't. Can anyone help her?
  29. Xul 8/31/2006 6:11 PM
    Gravatar
    Umm. Once the file is d/led... just double click it to run install.
  30. fioricet 9/11/2006 5:27 AM
    Gravatar
    I downloaded your Skype Export Utlity, installed and found very useful !
    Thanks a lot. By the way , did anyone use FireFly for VoiP communications.
    All advices may be helpful. Thanks.
  31. michaela 9/17/2006 6:19 AM
    Gravatar
    evertime i try to downlad skype it keeps saying your setup files are corrupted
  32. Frank 10/30/2006 2:23 AM
    Gravatar
    1. In Exporter's Contact List, the Contact List remains EMPTY, even as the progress bar keeps moving.
    In Call List, all call history is fully extracted and can be x
    Skype 2.6.0.105(BETA)

    2. When the Contact List progress bar stops, the Contact List remains empty. Attempting a "Reload" produces an exception which allows "continue". Clicking Continue shows a smaller progress bar in the wrong place on the screen, and extracts no contacts.

    3. Please add a "Please install .NET 1.1" error message at startup or installation, either will do.

    4. Please add a GROUP column in Exporter's Contact List window.

    Question: My Skype Contact List has 300 contacts in 4 groups (All Contacts, other-misc, SkypeOut, UnGrouped). Does the db size, or number of Groups, or group naming characters affect Exporter's ability to fetch contacts?

  33. forrest 7/13/2007 7:13 PM
    Gravatar
    Ask for help here: I need to print out my skype chat history for immigration purpose. I exported the film in XML format, and it looks like the following:

    <?xml version="1.0" encoding="utf-8" ?>
    - <!-- Skype user: forrest75 - Skype version: 3.0.0.205
    -->
    - <SkypeCalls>
    - <Contact>
    <ID>2776</ID>
    <Timestamp>7/13/2007 7:39:59 AM</Timestamp>
    <PartnerHandle>su800216</PartnerHandle>
    <PartnerDisplayName>bowen</PartnerDisplayName>
    <ConferenceID>0</ConferenceID>
    <Type>IncomingP2P</Type>
    <Status>Finished</Status>
    <FailureReason>0</FailureReason>
    <Subject />
    <PSTN_Number />
    <Duration>24:43</Duration>


    I need to print out the file that looks neat and simple, just as what the exporter page shows, and present this file to the visa officer. Does anybody have an idea how to do this? Thanks a lot!



  34. Juliet 11/27/2007 7:33 AM
    Gravatar
    I have the same problem as the previous poster. I also need to print my call history(for free skype to skype calls) for a marriage immigration visa. Additionally, i have a Mac, and it would not even open the Exporter download to begin installing. Sadly without this list and because i only use Skype to talk to my fiance, it looks like we hardly know each other! If anyone has any advice, please help!
  35. Jason Foster 12/7/2007 10:32 AM
    Gravatar
    To the poster who needs his skype call list to show his phone log - In the worst case, you could always take screenshots of each page as it is displayed in Skype, and then print the screenshots out and deliver this with your immigration visa application....
  36. Ken 12/10/2007 2:33 AM
    Gravatar
    I am going through immigration proceedings for my wife and it was exactly what I needed. Happy holidays!
  37. Jan 1/12/2008 10:59 AM
    Gravatar
    Didn't work for me using Skype 3.6.0.244 with Vista. Call List worked, but Contact List takes forever to load (>20 min to be exact).
  38. Rana 2/17/2008 8:04 AM
    Gravatar
    Does skype provides APIs so that i can use them to build an application to run on the office LAN?

    i want to develop an application alike to skype that would run on my office LAN and the employees of different departments could talk to each other and could see each other without requiring internet and skype...


    is it possible?? and if there r such APIs then from where i should get them?
    I m a java developer...
  39. Robin 3/22/2008 6:54 AM
    Gravatar
    Hi Ryan:

    I'm using Windows XP and Skype (both latest versions) and installed your export utility. When I run the utility it is only exporting contacts with a Skype account versus the ordinary phone numbers added as a Skype Out contact. Is there any way to export ALL of the contacts? Thank you very much, Robin
  40. Mike 6/10/2008 5:21 AM
    Gravatar
    D'loaded the Skype Exporter but when I run it, I only get the heading, no call list.
    I am using Skype Ver. 3.8.0.139

    Do you have a new version?

    Does Skype have to be running to use the utility?

    Thanks.

    Mike
  41. Tony Lin 7/10/2008 7:19 PM
    Gravatar
    Thank you
  42. Alex 7/11/2008 11:32 AM
    Gravatar
    Exactly what I need, but may not be 64 Bit compliant
  43. Declan 8/6/2008 1:21 AM
    Gravatar
    Thanks application - I am using XP and the latest version of Skype but it will not load the contacts - any advice? And I did download the .Net 1.1 also. Regards
    dhon
  44. koko 11/12/2008 8:48 AM
    Gravatar
    Hi all.I am using skype 3.8 on win Vista Home 64bit,the problem is that when I log in,my contact list loads but all contacts appear as offline.I have tried multiple times with no result,changing my status don't work.I don't have that problem on my friend's pc running Windows XP,and the internet connection is same.Any solutions?
  45. Peter Goldsworthy 2/10/2009 1:45 AM
    Gravatar
    My skype won't allow me to call because it says I already have a call in progres. This is not true. It appears that a previous call has not disconnected....I think? How do I solve this?
  46. Bluetooth Headset 3/12/2009 2:54 PM
    Gravatar
    i had the same problem like koko. after a new installation the problem was solved. i don't know why.
  47. Sherri 11/26/2009 7:49 PM
    Gravatar
    When I restart my computer, an error message comes up that says the Skype call back window. I have never installed Skype. I found it during a search and it was installed in 2007. I can't delete it. Should I be concerned and how did it get installed? Thanks for your help!
  48. 11/23/2011 8:22 AM
    Gravatar
    Save Your Skype Contacts
Comments have been closed on this topic.



 

News


Also see my CRM Developer blog

Connect:              


Sponsor

Sections