Skype Logo Take a deep breath™.
Buy Skype Credit · Help ·
  • Download
  • Use Skype
  • Business
  • Shop
  • Account

Skype 1.4 Available

By My status  on September 29, 2005 in Developer Blog.

Today we launched 1.4 of the Skype client.

We are still finalising the documentation and will make it available very soon, but in the meantime, this is the new APIs.

API changes for Skype for Windows 1.4 release

Today Windows Skype version 1.4 was published as secondary download.

http://www.skype.com/products/skype/windows/

Here is brief overview of new API features

* application-to-application communications
* my profile enchancements
* more control over UI
* other improvements


Application-to-Application Communications

A2A communications allows two API clients to exchange information without visual appearance.

* Connections are only allowed to online parties who are in contactlist or have active ongoing communication.
* Connections are only attempted to connectable users at CONNECT.
* Connections are established only when there is a same named application on the other side.
* Application name is limited by 32 bytes.
* Idle connections will be dropped in some time (usually 8 minutes)
* When connection is relayed throttling is engaged.
* If other party is logged in multiple Skype instances then stream for each instance is created

* Stream write provides reliable transmission to deliver large amount of data
* Maximum amount of write to stream can be 0xFFFF bytes long.
* Any character except 0x00 is allowed in message

* Datagrams are unreliable packets sent over network (usually translates to UDP).
* Datagrams maximum size is 1400 bytes.
* There is no guarantee that datagrams will be delivered.

Commands

// Register new application object
-> CREATE APPLICATION appname 
<- CREATE APPLICATION appname

// Establish connection to another user
-> ALTER APPLICATION appname CONNECT username
<- ALTER APPLICATION appname CONNECT username

// Write stream to connection "username:id"
-> ALTER APPLICATION appname WRITE username:id text
<- ALTER APPLICATION appname WRITE username:id

// Read stream to connection "username:id"
-> ALTER APPLICATION appname READ username:id
<- ALTER APPLICATION appname READ username:id text

// Write datagram "username:id"
-> ALTER APPLICATION appname DATAGRAM username:id text
<- ALTER APPLICATION appname DATAGRAM username:id

// Drop an connection to user
-> ALTER APPLICATION appname DISCONNECT username:id
<- ALTER APPLICATION appname DISCONNECT username:id

// Unregister an application
-> DELETE APPLICATION appname
<- DELETE APPLICATION appname

APPLICATION object properties

You can query properties with GET as usual and property changes are notified by Skype.
Syntax examples here are based on GET but CONNECTING, STREAMS, SENDING and RECEIVED make more sense as notifications.

// query connectable users
-> GET APPLICATION appname CONNECTABLE
<- APPLICATION appname CONNECTABLE [username[ username]*]

// query on-going connection process
// after the connection is established username is removed from CONNECTING list
-> GET APPLICATION appname CONNECTING
<- APPLICATION appname CONNECTING [username[ username]*]

// query open streams (connections)
-> GET APPLICATION appname STREAMS
<- APPLICATION appname STREAMS [username:id[ username:id]*]

// query if currently sending any data
// after the data is sent stream name is removed from SENDING list
-> GET APPLICATION appname SENDING
<- APPLICATION appname SENDING [username:id=bytes [username:id=bytes]*]

// query if there is data waiting in received buffer
// after the data is read from stream the stream name is removed from RECEIVED list
-> GET APPLICATION appname RECEIVED
<- APPLICATION appname RECEIVED [username:id=bytes [username:id=bytes]*]

// incoming datagram notification
<- APPLICATION appname DATAGRAM user:id text


Example of communiction

Jim and Joe are two users who installed "toru" application.

// register application on both sides
[JIM] -> CREATE APPLICATION toru
[JIM] <- CREATE APPLICATION toru

[JOE] -> CREATE APPLICATION toru
[JOE] <- CREATE APPLICATION toru

// JIM initiates communication to JOE
[JIM] -> ALTER APPLICATION toru CONNECT joe
[JIM] <- ALTER APPLICATION toru CONNECT joe

// connection establishing in its way...
[JIM] <- APPLICATION toru CONNECTING joe
// .. and is succeeded
[JIM] <- APPLICATION toru CONNECTING
// .. and has created one stream
[JIM] <- APPLICATION toru STREAMS joe:1

// and JOE is notified by new stream
[JOE] <- APPLICATION toru STREAMS jim:1

// JIM sends data over stream to JOE
[JIM] -> ALTER APPLICATION toru WRITE joe:1 Hello world!
[JIM] <- ALTER APPLICATION toru WRITE joe:1
// stay tuned while data is transmitted...
[JIM] <- APPLICATION toru SENDING joe:1=14
// .. and you are notified on delivery success
[JIM] <- APPLICATION toru SENDING

// JOE receives notification about incoming message
[JOE] <- APPLICATION toru RECEIVED jim:1=12
// .. and reads data from stream
[JOE] -> ALTER APPLICATION toru READ jim:1
[JOE] <- ALTER APPLICATION toru READ jim:1 Hello world!
// ... and is notified that stream is empty
[JOE] <- APPLICATION toru RECEIVED

// JOE sends back acknowledgement of message
// Datagram is used because it is not so important to acknowledge
[JOE] -> ALTER APPLICATION toru DATAGRAM jim:1 Hello back!
[JOE] <- ALTER APPLICATION toru DATAGRAM jim:1
// Now data is transmitted...
[JOE] <- APPLICATION toru SENDING jim:1=11
// .. and notificed when it was sent (but delivery not assured)
[JOE] <- APPLICATION toru SENDING

// JIM receives datagram notifcatoin
[JIM] <- APPLICATION toru DATAGRAM joe:1 Hello back!

// JIM decides to end the communication
[JIM] -> ALTER APPLICATION toru DISCONNECT joe:1
[JIM] <- ALTER APPLICATION toru DISCONNECT joe:1
// .. and when stream is closed it is notified
[JIM] <- APPLICATION toru STREAMS

// Also JOE receives notification that stream was closed
[JOE] <- APPLICATION toru STREAMS

// JIM unregisters applicaton
[JIM] -> DELETE APPLICATION toru
[JIM] <- DELETE APPLICATION toru

// JOE unregisters applicaton
[JOE] -> DELETE APPLICATION toru
[JOE] <- DELETE APPLICATION toru

My Profile enhancements

PROFILE object allows to
* set and get all profile fields as UI
* setup the call forwarding rules

-> GET/SET PROFILE
   { FULLNAME text
   | BIRTHDAY yyyymmdd           // 0 is returned if not set; no partial birthday allowed
   | SEX {MALE|FEMALE|UNKNOWN}
   | LANGUAGES [lang[ lang]*]    // lang is two letter ISO code (en, de, et)
   | COUNTRY iso2 name           // iso2 - two letter ISO code; name - country name
   | PROVINCE text
   | CITY text
   | PHONE_HOME text
   | PHONE_OFFICE text
   | PHONE_MOBILE text
   | HOMEPAGE text
   | ABOUT text
   | MOOD_TEXT text
   | TIMEZONE offset             // offset is given in minutes from GMT
   }

Notes:
* Windows 1.4 UI does not publish MOOD_TEXT and TIMEZONE (planned in 1.5)
* Windows 1.4 UI allows only setting one language

Call forwarding setup


-> GET/SET PROFILE
{ CALL_NOANSWER_TIMEOUT timeout // timeout for call forwarding
| CALL_NOANSWER_ACTION {reject|forward|voicemail} // action if user does not answer
| CALL_FORWARD_RULES [start_time,end_time,{username|+PSTN}[ start_time,end_time,{username|+PSTN}]*]
}

* start_time - in seconds when connecting to this number/user starts
* end_time - in seconds when ringing to this number/user ends
* username - another Skype username to forward call
* +PSTN - PSTN number to forward a call (on forwarder expense)
* call can be forwarded multiple numbers: 0,45,jim 46,150,joe
* numbers can overlap in time (all ring, first one to pick wins): 0,45,jim 0,45,joe

Notes:
* Skype Windows 1.4 UI defaults to no-answer timeout 15 seconds
* Skype Windows 1.4 UI defaults to 0,45 start and endtime in rules
* Skype Windows 1.4 UI allows to set max 3 numbers

More control over UI

New OPEN commands:


-> OPEN
{ PROFILE // view my profile
| USERINFO username // view other user profile
| CONFERENCE // open create conference dialog
| SEARCH // open search form
| OPTIONS [page] // open options dialog
| CALLHISTORY // focus call history tab
| CONTACTS // focus contacts tab
| DIALPAD // focus dial tab
| SENDCONTACTS // open send contacts dialog
| BLOCKEDUSERS // open blocked users dialog
| IMPORTCONTACTS // open import contacts wizard
| GETTINGSTARTED // open getting started wizard
| AUTHORIZATION username // open ask authorization dialog (this can change)
}

* Options page: general, privacy, notifications, soundalerts, sounddevices, hotkeys, connection, voicemail, callforward, video, advanced

Notification of when contactlist focus changes:


<- CONTACTS FOCUSED username // when contact gains focus
<- CONTACTS FOCUSED // when loses focus


Other improvements

New USER object properties


-> GET USER username
{ MOOD_TEXT // mood text for user
| ALIASES test // list of assigned aliases
| TIMEZONE offset // time offset from GMT in minutes
}

Following privacy settings apply:
* ALIASES is visible only as result of direct match for alias search
* MOOD_TEXT is visible only for authorized contacts

Notes:
* Windows 1.4 UI does not publish MOOD_TEXT and TIMEZONE (planned in 1.5)


Query if ringtones are enabled:


-> GET RINGTONE STATUS
<- RINGTONE {ON|OFF}

* notice that "GET RINGTONE id" command still returns filename

Expressive content (see http://personal.skype.com/) support for SET RINGTONE/AVATAR

Support expressive content ID-s


-> SET RINGTONE
* 1101 - Ringtone
* 1102 - Ringback tone
* 1103 - Busy tone
* 1104 - Dialing tone
* 1105 - Connecting sound
* 1202 - Resume sound
* 1203 - Hangup sound
* 1204 - Incoming message sound
* 1205 - Online alert sound

Supports .skype files:


-> SET RINGTONE id filename:idx // idx refers to content number (0,...)
-> SET AVATAR id filename:idx

Notes:
* .skype files can contain multiple contents which are enumerated by integer ID-s (idx)


skype: URI handler (not related to API)

Not related to API but could be useful in development.

General syntax


SKYPE_URI = "skype:" [targets] ["?" query ] ["#" fragment ]

targets = 1* (target / ";" )

target = identity / PSTN

identity = skypename / alias

skypename = 1*(ALPHA / DIGIT / "." / "," ) ; to be clarified

skypenames = 1*( skypename / ";")

alias = ... ; see ["TechGroup/DataFormats"]
; unicode chars are in UTF-8 and % encoded; see RFC3987 uchar mapping

PSTN = "+" (DIGIT / ALPHA ) *(DIGIT / ALPHA / "-" ) ; supports +800-FLOWERS

query = action [ *( "?" term "=" conditon ) ]

term = 1*ALPHA

condition = 1*unserved ; to be clarified

fragment = 1*unserved ; to be clarified


Skype for Windows 1.4 version handles following:


skype: ; focus / open skype UI
skype: ; take default double-click action on contact
skype:?call ; call to target(s): can be skypename, alias or PSTN
skype:?chat ; start chat/multichat with skypename(s)
skype:?voicemail ; leave voicemail to skypename
skype:?add ; add skypename to contactlist; show authorization dialog
skype:?sendfile ; open sendfile dialog to skypenames
skype:?userinfo ; show info (profile) for
skype:?chat&id=[#time] ; open existing multichat with ; time: YYYY-MM-DDThh:mm:ssTZ / YYYY-MM-DDZhh:mm:ss

Examples:
* skype:echo123
* skype:echo123?call
* skype:echo123?chat

Notice that there is no "//" in skype: URI - skype://echo123 does not work.

View blog reactions

Comments

I continue to be somewhat disappointed that Skype doesn't support SMS messaging. Perhaps with E-Bay takeover development bucks can bring parity with Jajah functionality.

stoxxman | Thursday, Sep 29

I noticed that there is no "beta" download in the Windows section anymore. Are you discontinuing the Beta releases?

zarggg | Thursday, Sep 29

When can we get desktop sharing ? This would be a huge help in a large number of real life applications ...

cjrego | Friday, Sep 30

About documenting the API 1.4
Looking forward to that, especial the PDF/printable version (on paper, a multipurpose thin white celluose material).
Was/am still waiting for a PDF/printable version of the API 1.3
jyden

torbennyhuus | Monday, Oct 3

Hi team,

I am trying to put a call me button on my website so that people can call me through Skype but it doesn't work. Do i need to copy and paste and then line everything up.

Help please

peter_zap | Tuesday, Oct 4

Can I open multiple streams to a single application?

qrl.rg.test.1 | Wednesday, Oct 5

I receive syntax error when relay messages longer then 8K characters (8Kb in UTF-8). Messages sent out with SendMessage seems to be correct. Any suggestions?

qrl.rg.test.1 | Thursday, Oct 6

Dear Skype ,
Do you realize that 1.4 does not work on windows ME. With no warning at all I now no longer have Skype available as 1.3 is nowhere to be found.
I am sure it is not your intention to cut off loyal users in this way so please HELP!

janbruins1944 | Tuesday, Oct 18

Please help me, i am having troubles with my connection with skype on my new notebook (that has norton anti virus). Why does it not get connected? please answer me!!!

How can i do to configure the firewall for get connected with skype?
I must use an specifically port?
What do i do in the option menu for solve this problem?

HELP!!!

harias_1984 | Tuesday, Nov 1

What is this TellMe driver thing? Nothing on the website says what it is or what it is for. I downloaded it, and there is nothing in any of the menu options that indicates what it does.

?????

mkgrnwlt | Thursday, Dec 1

1 "contats focused" can't get call logs.I hope skype can send user handle ,fullname and displayname by one command.

2 How can i get text with LCD Dot data and user icon? ,such as user name?

Thanks!

hehailine2005 | Saturday, Dec 3

Any character except 0x00 is allowed in message ???????
why??????? I hope use A2A send any file,But.......Any character except 0x00 is allowed in message!!!!

goldway-fengjunlin | Saturday, Dec 10

Comment on this post

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Back to index

Subscribe to this blog
What? Tell me more…

using RSS Subscribe
via Bloglines Subscribe in Bloglines
using Newsgator Subscribe in NewsGator Online
with MyYahoo
with Google Add to Google
with My AOL Add to My AOL
with Anothr.com Subscribe by Anothr
with netvibes Add to Netvibes
with email Get email updates
Skype Developer Newsletter

Sign up now for all the latest news, tips and tricks on using Skype Public API.

Developer Zone

  • Home
  • Docs
  • Tutorials
  • Download
  • Support
  • Certification
  • Blog
  • Community
  • Help
  • Find...
Skype Blogs
  • Share Skype Blog
  • About Skype
  • Heartbeat
  • Developer Zone
  • Business
  • Jobs
  • Skype Prime
  • Skype Gear
  • Security
  • Garage
  • Mac
  • Linux
  • Eesti keeles
  • Töökuulutuste leht
  • 日本語
  • Česky
  • Deutsch
  • Français
  • Italiano
  • Brasil
  • United Kingdom
  • Svenska
  • Polski
  • United States

Recent posts

  • New Skype Certified product in June -- Trend Micro WTP for Skype
  • Developer Zone version 3 is out there
  • Developer Zone down for maintenance
  • Skype for Business Showcase in Stockholm, Sweden
  • Skype sponsors Python Developer Conference (sold out)
  • Support updates and fixes in EM 2.0
  • New Skype Certified products in April
  • Update from Eion Robb and Brandon Holland
  • Long time partners... SDP, what's going on?
  • Time to Join Skype at the eBay DevCon

Archives

  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • November 2006
  • October 2006
  • September 2006
  • August 2006
  • July 2006
  • June 2006
  • May 2006
  • April 2006
  • March 2006
  • February 2006
  • January 2006
  • December 2005
  • November 2005
  • October 2005
  • September 2005
  • August 2005
  • July 2005
About us · Partners · Jobs · Prices · Security
Privacy policy · Legal · © 2008 Skype Limited