admin管理员组

文章数量:1530518

2024年3月8日发(作者:)

Skype中文开发API文档

保密条款:本文件为 Skype TechnologiesS.A.公司所有,全部内容严格保密。本档仅在保密基础上提供给被选中并符合条件的潜在

合作伙伴、客户或供货商,任何其他人一概不得使用。亦不得以任何形式加以复制、保存

、传播或备份。如收件人接受本档,即表示他或她同意,在终止与Skype Technologies

S.A.合作时,须将此档退还本公司。

他或她进一步同意,未经许可不得备份、传真、复制或传播所收到的、与本公司合作之业

务有关的任何文件。

本档不构成销售要约或招揽收购的要约。

© Skype Technologies S.A 3

1 本文档编撰目的

介绍 Skype API 并说明建置透过API与Skype沟通的应用程序和装置。

2 版本修订纪录

2.1API

修订版: 1.0.0.94

日期: 2004-10-21

发行说明:API公开释出

修订版: 1.1.0.61

日期: 2005-01-12

发行说明:

• 增加内容:协议 3

• 更新内容:API –现仅允许每个用户同时进行一项搜寻。在收到前一项搜寻

结果之前发出新的搜寻指令将导致错误72。

• 更新内容:API现仅允许每个用户同时进行一项搜寻。

• 更新内容:CHAT和CHATMESSAGE属性

• 错误修正:API 以前会显示前一位用户的通话和留言

• 错误修正:修正了使用协议 3 时出现的语法混乱

• 错误修正:SEARCH MESSAGES 不再回传 CHATMESSAGES值,

如果使用协议 2 的话

• 错误修正:API以前仅显示讯息的第一个字或全名

• 错误修正:访问控制列表(ACL)只记住一项程序的许可

• 错误修正:MC信息标识符无法回传

• 错误修正:与原有应用程序的链接问题

• 错误修正:修正了在两个 Windows 账户下同时使用 Skype

时出现的应用程序异常

• 错误修正:Win98/Me 中显示有许多动态链接库(dll)檔而不是各自的

应用程序在使用 Skype

• 错误修正:API有时不回传'BUDDYSTATUS 1' 讯息

修订版: 1.2.0.11

1

Skype中文开发API文档

2005-03-04

发行说明:

• 增加内容:协议 4

• 支持电话会议:召开电话会议、增加会议人数并能够获得参加会议者的

名单和有关通知

• 可查看SkypeOut余额

• 可拨打快速拨号单内的号码

• 声频装置变更通知

• 删除即时消息(IM)记录的通知

© Skype Technologies S.A 4

• 将语言与国家选项修改为按国际标准国家代码(ISO)名单而非以国家

名称回传(新做法:从协议 4 开始,语言与国家回传值之前将加上 ISO 代码

('GET USER echo123 COUNTRY' => 'USER echo123 COUNTRY ee

Estonia'))

• 关闭 Skype 的通知

• 支持 SkypeIn

•为了排除错误而将程序暂停一秒钟的登录机码

• 可增加用户句柄至 OPEN ADDAFRIEND

• CALL FAILUREREASON 1 – 文件文件记录错误,文件文件改用 "Misc error"

(其他类错误)显示

• 更新内容:如找不到 CHATMESSAGE 属性,'SET CHATMESSAGE id'

指令将发出同一错误讯息,而不论信息标识符是否存在

• 更新内容:PSTN_STATUS 发出从网关回传的错误字符串

• 更新内容:HASCALLEQUIPMENT 回传值永远显示 TRUE

• 错误修正:#11648API:"AUDIO IN" 和"AUDIO OUT" 指令不能正确读取

双字节驱动程序命名

• 错误修正:#11473API:BTN_PRESSED E 指令失效,出现错误号码 71

无效机码

• 错误修正:#11472API:静音功能被启动

• 错误修正:#11473API:初始设定参加电话会议人数超过 4 人

• 错误修正:#11368API:IMHISTORYCHANGED 指令无效

• 错误修正:#11272API:MUTE 指令无效

• 错误修正:#11473API:无法使用快速拨号拨给 SkypeOut 联络人

• 错误修正:#11473API:空白CALL 指令无响应

• 错误修正:#11204 SKYPE 存取应用程序编程接口不能拒绝存取装置。

• 更新内容:#10567 经由电话应用程序编程接口上下自动扩展联络人名单群组

• 错误修正:#11473API:用户更换声频装置时不发出通知

2.2 文件

修订版本 日期 修改人 备注/更新内容

2

Skype中文开发API文档

-10-22 Taavet Hinrikus API公开释出

1.1 2005-01-12 Taavet Hinrikus Skype释出版本

1.2 2005-03-04 Taavet Hinrikus

Skype释出版本1.2,协议4,

开发工程师常见问题解

答项目等等

3 法定地位

© Skype Technologies S.A 5

本API文件档和SkypeAPI均为SkypeTechnologies S.A. 或其关联公司版权所有。有关

使用限制请查阅Skype 网站上登载的终端用户许可协议(EULA):

http: ///go/eula

4 简介

SkypeAPI可分为两个不同的部分。Skype电话API和Skype存取API:

• Skype 电话API是Skype用来存取装置的接口,其中包括但不限于USB

电话。装置

本身并不一定是硬件,但通常指的是硬件装置。这一API由Skype控制,而且API

的装置面可被视作驱动程序。Skype为控制方。该API在抽象事件的层次上操作,

例如,绿色键被按下、耳机被拔掉、装置应响起铃声等。

与Skype电话API兼容的驱动程序,应在安装时中自动完成安装,这样Skype才会

知道其存在。可以建立一个

USB装置和相关驱动程序的数据库,使Skype能够侦测出新的装置并提示安装驱

动程序。

• Skype存取API是Skype发行给第三方第三方应用程序以存取Skype功能的

接口,例如,拨电话、发送文字讯息、索取Skype用户数据等。

第三方第三方应用程序在此API中为控制方。Skype可有选择性地逐一向应用程

式授予Skype存取API存取的权利。

5 一般API概述

API是根据在Skype与装置(或装置驱动器或在主机上执行的控制器)之间往返传递的简

单文字讯息建立起来的。

6 电话API

现已建置的电话API指令如下所列。

6.1 从装置发至Skype

• NAME deviceName

• PROTOCOL version

• AUDIO_IN deviceName

• AUDIO_OUT deviceName

• HOOK ON|OFF

• MUTE ON|OFF

• BTN_PRESSED (0-9,A-Z,#,*,UP,DOWN,YES,NO,SKYPE)

3

Skype中文开发API文档

BTN_RELEASED ...

6.2 从Skype发至装置

• MUTE ON|OFF

© Skype Technologies S.A 6

7 存取 API

目前有一些指令 (PROTOCOL, AUDIO_*) 可以用于Skype存取API和Skype电话API。

7.1 使用介绍

当客户端应用程序经由SkypeAPI开始使用Skype时,Skype则会将声频装置转换到用户

端经由API所报告的装置。当传输层连结中止或被切断时,Skype则会将声频

装置转换回到上一次选取的装置(Skype将定期检测传输层是否仍然

保持连结)。如果用户将声频装置以手调方式转换到其他装置(与运行中的客户端所报告

的装置比对),将来可能会经由API提供通知。

可能会要求终端用户确认允许第三方利用API来使用Skype。所有使用API执行的

操作都会被反映到正在计算机执行的Skype应用程序上。

请注意,API的所有时间与日期均采用UTC (协调世界时)。

7.2 支持多个客户端程序

多个客户端应用程序可以同时使用SkypeAPI。链接Skype时协议保持不变,以下情

况除外:建立通讯时,客户端应向系统中所有窗口广播窗口讯息('SkypeControlAPIDisc

over'),并用wParam参数指定本身窗口句柄。回应时,

Skype向指定的句柄发出'SkypeControlAPIAttach'的讯息,并在wParam参数中显

示出通话窗口句柄。

请注意,不应再采用'SkypeControlAPI' 指令轮询Skype,我们将在下一个版本介绍

一种新的网络探测(pinging )指令。

7.3 API的访问控制列表 (ACL)

每当一个应用程序试图使用SkypeAPI时,就会弹出一个要求用户确认的对话窗口—

无论是否允许该程序使用API。这一功能的主要作用在于保护用户的隐私和安全。

为保持操作简便、易于用户使用,我们向开发人员建议如下:

• 可执行程序 (.exe檔) 的命名应当通俗易懂,例如,"".

"",这一点非常重要,因为用户可以直接看到可执行文件案名称。

如果文件名含糊不清,用户就可能不允许该程序存取Skype。

• 签名 – 应用程序应以VeriSign的CodesSigning(代码签字)证书签署。

• NAME指令 – 应用程序应支持"NAME"指令并应将其名称发表。

7.4 SkypeOut

4 Skype Technologies S.A 7

7.4.1 SkypeOut 联络人名单

可以索取SkypeOut 联络人名单—这些数据现已成为主要名单的一部分,亦即

如果执行 "SEARCH FRIENDS" 指令,则会回传表内联络人名单号码。

如需得到目前用户的SkypeOut 联络人号码的详细数据,可执行

"GET USER "。

4

Skype中文开发API文档

SkypeOut 联络人,"GET USER

ONLINESTATUS"指令时将回传"SKYPEOUT"。

7.5 怎样检测 Skype

如需检测是否已安装Skype,请查看以下登录机码:

HKCUSoftwareSkypePhone '?SkypePath' 。该机码将指出的位置。

如找不到该机码,还应查一下程序是否有

HKLMSoftwareSkypePhone '?SkypePath' 此一机码(如找不到HKCU,但可找到

HKLM,则说明skype已经由管理员账号安装,但尚未被目前用户所使用)。

7.6 版本信息

每次释出API的新版本时,协议版本号码都会增加。客户端要使用该API时,必须让Skyp

eAPI知道它所支持的最新版本。Skype将报出自己的最新版本号作为回答,并将以Skyp

e所报号码版本做为使用的协议版本。Skype报出的协议版本永远不会比客户端程序支持

的版本更高。Skype的默认版本是协议版本1。 Skype支持的版本可以PROTOCOL

99999查询。

例如:客户端采用版本3,并向Skype报出 "PROTOCOL

3",Skype支持版本2并报出"PROTOCOL

2"作为回答。版本2则为此例中使用的协议版本。

关于SkypeAPI版本更新和出现客户端支持低于Skype版本时的说明:

• Skype不但不会删除新版本发来的讯息,而且会执行讯息要求的指令

• 客户端应会忽略未知指令和属性(可能来自新版本的API,如新状态属性等)

7.7 Skype API协议版本

目前有协议版本1、2和3。

7.7.1 协议2新增功能

• 新增 onlinestatus SKYPEME。

5 Skype Technologies S.A 8

• 如通话处于暂候状态, API会分别向所有客户端发出"CALL xx STATUS

LOCALHOLD / REMOTEHOLD" 的通知。协定1仅回传ONHOLD。

• 新增 call status CANCELLED

7.7.2 协议3新增功能

• 多人聊天指令

• 旧版即时消息(IM)的相容层

7.7.3 协议4新增功能

•在语言和国家值前面补加ISO代码

协议1、2的兼容性

如要求的协议版本低于3,则所有导入指令均以下列方式被转换:

• SEARCH MESSAGES -> SEARCH CHATMESSAGES

• SEARCH MISSEDMESSAGES -> SEARCH MISSEDCHATMESSAGES

• GET MESSAGE -> GET CHATMESSAGE

• SET MESSAGE -> SET CHATMESSAGE

5

Skype中文开发API文档

GET MESSAGE属性也被转换:

• PARTNER_HANDLE -> FROM_HANDLE

• PARTNER_DISPNAME -> FROM_DISPNAME

所有对API发出的通知的回答 (包括 GET/SET MESSAGE) 均被转换:

• CHATMESSAGE * FROM_HANDLE x -> MESSAGE *

PARTNER_HANDLE x

• CHATMESSAGE * FROM_DISPNAME x -> MESSAGE *

FROM_DISPNAME x

• CHATMESSAGE * FROM_DISPNAME x -> MESSAGE *

如协议版本低于3,SEARCH MESSAGES 和 SEARCH

MISSEDMESSAGES指令将回传字符串 MESSAGES 1、2、3。

7.8 从Skype发至装置

7.8.1 状态指令

所有这些指令均由Skype在初次建立连结或在出现参数更变时进行广播。可用GET

指令随时对它们进行查询。

用户状态

语法:USERSTATUS status

status - 用户状态值。适用值:

• UNKNOWN.

• ONLINE - 目前用户处于上线状态。

• OFFLINE -目前用户处于脱机状态。

• SKYPEME - 目前用户正在使用"Skype Me" 模式 (协议2)。

6 Skype Technologies S.A 9

• AWAY - 目前用户处于暂时离开状态。

• NA - 目前用户离开。

• DND - 目前用户处于“请勿打扰”模式。

• INVISIBLE - 目前用户处于隐藏状态,其他用户看不见。

• LOGGEDOUT - 目前用户已注销。用户已断线。

例如:USERSTATUS INVISIBLE

连结状态

语法:CONNSTATUS status

status – 连结状态值。适用值:

• OFFLINE

• CONNECTING

• PAUSING

• ONLINE

• LOGGEDOUT - 目前用户已注销。

例如:CONNSTATUS ONLINE

目前用户句柄

6

Skype中文开发API文档

CURRENTUSERHANDLE userhandle

例如:CURRENTUSERHANDLE banana

7.8.2 搜寻结果

这些是对SEARCH指令的响应。

将来会把搜索结果数目限制在N个

(N值可以被设定),但现在没有限制。今后可能支持传呼或自定范围查询。

用户搜寻

找到的用户名单。

语法:USERS user1 [,user2] [,user3]

例如:USERS abc, -abc-, abc10

朋友搜寻

找到的朋友名单。

语法:USERS user1 [,user2] [,user3]

例如:USERS tim, joe, mike

通话搜寻

找到的通话标识符名单。

7 Skype Technologies S.A 10

语法:CALLS id1 [,id2] [,id3]

例如:CALLS 15, 16, 39

未接来电的搜寻

找到的未接来电标识符名单。

语法:CALLS id1 [,id2] [,id3]

例如:CALLS 15, 16, 39

留言搜寻

找到的留言标识符名单。

语法:MESSAGES id1 [,id2] [,id3]

例如:MESSAGES 15, 16, 39

错过的留言搜寻

找到的错过留言标识符名单。

语法:MESSAGES id1 [,id2] [,id3]

例如:MESSAGES 15, 16, 39

聊天搜寻

找到的聊天标识符名单。

语法:CHATS id1 [,id2] [,id3]

例如:CHATS #test_2/$testtest20;54389d65f7d6f2c4,

#test_b/$testtest20;867c47704bcc71fb

进行中的聊天搜寻

找到的UI上开放的聊天标识符名单。

语法:CHATS id1 [,id2] [,id3]

7

Skype中文开发API文档

CHATS #test_2/$testtest20;54389d65f7d6f2c4,

#test_b/$testtest20;867c47704bcc71fb

错过的聊天搜寻

找到的含未读讯息的聊天标识符名单。

语法:CHATS id1 [,id2] [,id3]

例如:CHATS #test_2/$testtest20;54389d65f7d6f2c4,

#test_b/$testtest20;867c47704bcc71fb

最近的聊天搜寻

找到的最近聊天标识符名单。

语法:CHATS id1 [,id2] [,id3]

例如:CHATS #test_2/$testtest20;54389d65f7d6f2c4,

#test_b/$testtest20;867c47704bcc71fb

8 Skype Technologies S.A 11

标注的聊天搜寻

找到的标注聊天标识符名单。

语法:CHATS id1 [,id2] [,id3]

例如:CHATS #test_2/$testtest20;54389d65f7d6f2c4,

#test_b/$testtest20;867c47704bcc71fb

7.8.3 通知

如相应对象发生变化或以GET指令请求属性值,Skype则会发出通知。另外,如果属性值

被SET指令所更改,会发出通知,确认更改。

涉及相关对象时会发出通知,如好友名单(buddylist)内的用户、正在进行的通话和即

时讯息等。

"PROP"是对应对象的属性。

用户对象

就用户对象的属性发出通知。

语法:USER USERNAME PROP VALUE

USERNAME – 用户名。

PROP - 属性名。适用属性:

• HANDLE – 用户名。例如:USER pamela HANDLE pamela。

• FULLNAME – 用户全名。例如:USER pamela FULLNAME Jane

Doe.

• BIRTHDAY – 以YYYYMMDD格式表示用户生日。例如:USER bitman

BIRTHDAY 19780329.

• SEX – 例如:USER pamela SEX UNKNOWN.值:

• UNKNOWN – 用户在个人资料内未注明性别。

• MALE

• FEMALE

• LANGUAGE – 语言名称。例如:USER mike LANGUAGE

8

Skype中文开发API文档

.协议4中采用ISO前置码,例如:USER mike LANGUAGE

en English.

• COUNTRY – 国家名称。例如:USER mike COUNTRY Estonia.在

协议4中采用ISO前置码,例如:USER mike COUNTRY Estonia.

• PROVINCE – 例如:USER mike PROVINCE Harjumaa.

• CITY – 例如:USER mike CITY Tallinn.

• PHONE_HOME – 例如:USER mike PHONE_HOME 3721111111.

• PHONE_OFFICE – 例如:USER mike PHONE_OFFICE 3721111111.

• PHONE_ MOBILE – 例如:USER mike PHONE_MOBILE 3721111111.

• HOMEPAGE – 例如:USER mike HOMEPAGE http: //.

• ABOUT – 例如:USER mike ABOUT I am a nice person.

9 Skype Technologies S.A 12

• HASCALLEQUIPMENT – 回传值永远显示TRUE。例如:USER pamela

HASCALLEQUIPMENT TRUE.

• BUDDYSTATUS – 例如:USER pamela BUDDYSTATUS 2. 可设定的

BUDDYSTATUS 值:

• 0 – 从未列入联络人名单。

• 1 – 已从联络人名单内删除。

• 2 – 有待授权。

• 3 - 已加入联络人名单。

• ISAUTHORIZED – 已得到目前用户的授权。例如:USER pamela

ISAUTHORIZED TRUE. 值:

• TRUE

• FALSE

• ISBLOCKED – 已被目前用户封锁。例如:USER spammer ISBLOCKED

TRUE. 值:

• TRUE

• FALSE

• DISPLAYNAME – 例如:USER pamela DISPLAYNAME pam.

• ONLINESTATUS 用户上线状态。例如:USER mike

ONLINESTATUS ONLINE. 值:

• UNKNOWN –未知用户。

• OFFLINE – 用户处于脱机状态(未联机)。如果目前用户未经其他用

户授权而查看他/她的上线状态,也会回传此值。

• ONLINE - 用户处于上线状态。

• AWAY – 用户处于暂时离开状态(已有一定时间没活动)。

• NA - 用户离开。

• DND - 用户处于“请勿打扰”模式。

• SKYPEOUT – 用户在SkypeOut 联络人名单内。

9

Skype中文开发API文档

SKYPEME (协议 2)

• LASTONLINETIMESTAMP - UNIX时间戳,仅供脱机用户查阅。例如:

USER mike LASTONLINETIMESTAMP 1078959579.

通话对象

就通话对象的属性发出通知。

语法:CALL ID PROP VALUE

ID – 通话标识符。

PROP - 属性名。适用属性:

• TIMESTAMP – 通话的时间(UNIX时间戳)。例如:

CALL 17 TIMESTAMP 1078958218

• PARTNER_HANDLE – 例如:CALL 17 PARTNER_HANDLE mike

• PARTNER_DISPNAME – 例如:CALL 17 PARTNER_DISPNAME Mike

Mann

10 Skype Technologies S.A 13

• CONF_ID – 如果CONF_ID>0,则为电话会议。例如:CALL 17 CONF_ID 0

• TYPE – 通话类型。例如:CALL 17 TYPE OUTGOING_PSTN. 可设定的

TYPE值:

• INCOMING_PSTN – 从PSTN接入的来电。

• OUTGOING_PSTN – 向PSTN拨出的电话。

• INCOMING_P2P - 从P2P接入的来电。

• OUTGOING_P2P – 向 P2P拨出的电话。

• STATUS – 通话状态。例如:CALL 17 STATUS FAILED.可设定的

STATUS值:

• UNPLACED – 从未打过的电话。

• ROUTING – 通话正在转接中。

• EARLYMEDIA –

采用pstn,则可能在实际建立通话之前,已开始播放媒体。例如可以出现来

电铃声或待接留言(线路繁忙,请稍候)等。

• FAILED –

电话未接通。试图获得FAILUREREASON,以便了解详细原因。

• RINGING –电话铃正在响。

• INPROGRESS – 通话正在进行中。

• ONHOLD – 通话处于暂候状态。

• FINISHED – 通话完毕。

• MISSED – 未接到来电。

• REFUSED – 来电被拒接。

• BUSY – 对方电话占线,即已按下挂机键。

• CANCELLED (协议 2)

• FAILUREREASON – 例如:CALL 17 FAILUREREASON 1 (数字表示).

10

Skype中文开发API文档

SUBJECT – 未使用。

• PSTN_NUMBER – 例如:CALL 17 PSTN_NUMBER 372123123.

• DURATION – 例如:CALL 17 DURATION 0.

• PSTN_STATUS –进行PSTN通话时从网关回传的错误字符串。

例如:CALL 26 PSTN_STATUS 6500 PSTN connection creation timeout.

• CONF_PARTICIPANTS_COUNT –

举行电话会议时非会议主持者的人数。可设定值:

• 0 – 通话不属于电话会议。因为会议主持人CONF_PARTICIPANTS_COUNT

永远为 0。

• 1 – 通话是以前的电话会议。

• 2, 3, 4 – 通话属于电话会议。

• CONF_PARTICIPANT n –

电话会议第n个参加者的句柄、通话类型与状态、以及参加者的姓名显示(仅限

非主持人)。例如:CALL 59 CONF_PARTICIPANT 1 echo123

INCOMING_P2P INPROGRESS Echo Test Service.

11 Skype Technologies S.A 14

MESSAGE物件

就讯息对象的属性发出通知。

语法:MESSAGE ID PROP VALUE

ID – 讯息标识符。

PROP - 属性名。适用属性:

• TIMESTAMP – 讯息送出的时间(UNIX时间戳)。

例如:MESSAGE 21 TIMESTAMP 1078958218

• PARTNER_HANDLE – 例如:MESSAGE 21 PARTNER_HANDLE mike

• PARTNER_DISPNAME – 例如:MESSAGE 21

PARTNER_DISPNAME Mike Mann

• CONF_ID – 未使用。

• TYPE – 讯息类型。例如:MESSAGE 21 TYPE TEXT.可设定的

TYPE值:

• AUTHREQUEST – 请求授权。

• TEXT – 即时消息或标题组。

• CONTACTS – 联络人数据。

• UNKNOWN.—其他。

• STATUS – 讯息状态。例如:MESSAGE 21 STATUS QUEUED.

可设定的STATUS值:

• SENDING – 讯息正被发送。

• SENT – 讯息已被发送。

• FAILED –

讯息发送失败。不妨发一个FAILUREREASON指令了解详细原因。

11

Skype中文开发API文档

RECEIVED – 讯息已被接收。

• READ – 讯息已被读取。

• IGNORED – 讯息被忽略。

• QUEUED – 讯息被列入待发队列。

• FAILUREREASON – 例如:MESSAGE 21 FAILUREREASON 1

(数字表示)。

• BODY – 讯息内容主体。例如:MESSAGE 21 BODY Hi, what's up?

聊天讯息CHATMESSAGE对象

就聊天讯息对象的属性发出通知。

语法:CHATMESSAGE ID PROP VALUE ID – 聊天讯息标识符。

PROP - 属性名。适用属性:

• TIMESTAMP – 讯息送出的时间(UNIX时间戳)。

例如:MESSAGE 21 TIMESTAMP 1078958218

• PARTNER_HANDLE – 例如:CHATMESSAGE 21

PARTNER_HANDLE mike

• PARTNER_DISPNAME – 例如:CHATMESSAGE 21

12 Skype Technologies S.A 15

PARTNER_DISPNAME Mike Mann

• TYPE – 讯息类型。例如:MESSAGE 21 TYPE TEXT.可设定的

TYPE值:

• SETTOPIC – 聊天题目变更。

• SAID –即时消息。

• ADDEDMEMBERS – 邀请某人加入聊天。

• SAWMEMBERS – 参加聊天者见过其他成员。

• CREATEDCHATWITH – 已建立多人聊天。

• LEFT – 有人已退出聊天;如某人不能被加入聊天,也会作通知。

• UNKNOWN.—其他。

• STATUS – 讯息状态。例如:MESSAGE 21 STATUS QUEUED.

可设定的STATUS值:

• SENDING – 讯息正被发送。

• SENT – 讯息已被发送。

• RECEIVED – 讯息已被接收。

• READ – 讯息已被读取。

• LEAVEREASON – 与LEFT类型讯息同时使用。例如:

CHATMESSAGE 21 LEAVEREASON UNSUBSCRIBE.可设定的

LEAVEREASON值:

• USER_NOT_FOUND – 没有找到用户。

• USER_INCAPABLE – 用户使用旧版Skype,因此无法加入多人聊天。

• ADDER_MUST_BE_FRIEND –

12

Skype中文开发API文档

• ADDED_MUST_BE_AUTHORIZED –

收件人仅接受授权用户发来的讯息,而发件人未经过授权。

• UNSUBSCRIBE – 参加者已退出聊天。

• BODY – 讯息内容主体。例如:CHATMESSAGE 21 BODY Hi, what's up?

• CHATNAME – 含有讯息的聊天,例如:#test_3/$b17eb511457e9d20

• USERS – 加入聊天的人。

CHAT对象(协议3)

就聊天对象的属性发出通知。

语法:CHAT ID PROP VALUE

ID – 聊天标识符。

PROP - 属性名。适用属性:

• NAME –聊天标识符。 例如:CHAT #test_l/$6a072ce5537c4044 NAME

#test_l/$6a072ce5537c4044

• TIMESTAMP – 聊天建立的时间。例如:CHAT

#test_l/$6a072ce5537c4044 TIMESTAMP 1078958218.

• ADDER – 邀请目前用户加入聊天的用户。例如:CHAT

13 Skype Technologies S.A 16

1078958218 ADDER k6rberebane.

• STATUS – 聊天状态。例如:CHAT #test_l/$6a072ce5537c4044

STATUS MULTI_SUBSCRIBED.可设定的STATUS值:

• LEGACY_DIALOG – 老式即时消息。

• DIALOG – 1对1聊天。

• MULTI_SUBSCRIBED – 参加聊天者。

• UNSUBSCRIBED – 退出聊天者。

• POSTERS – 贴讯息的成员。例如:CHAT

#test_l/$6a072ce5537c4044 POSTERS k6rberebane test_3

• MEMBERS – 所有来过的用户。例如:CHAT

#test_l/$6a072ce5537c4044 MEMBERS k6rberebane test test_2

test_3

• TOPIC – 聊天题目。例如:CHAT #test_l/$6a072ce5537c4044 TOPIC

API testimine

• CHATMESSAGES – 这次聊天的所有讯息标识符。例如:CHAT

#test_l/$6a072ce5537c4044 CHATMESSAGES 34, 35, 36, 38, 39

• ACTIVEMEMBERS – 留下来继续聊天的成员。例如:CHAT

#test_l/$6a072ce5537c4044 ACTIVEMEMBERS k6rberebane test_2

test_3

• FRIENDLYNAME – 聊天窗口标题显示的姓名。例如:CHAT

#test_l/$6a072ce5537c4044 FRIENDLYNAME Test Test XX | tere ise

13

Skype中文开发API文档

通话记录

就通话记录变更并需要重载发出通知。在全部或部分通话记录被删除时出现。

语法:CALLHISTORYCHANGED

即时消息记录

就即时消息记录变更并需要重载发出通知。目前只在全部即时消息记录被删除时出现

语法:IMHISTORYCHANGED

联络人状态

如果有用户被加入联络人名单,或从中被删除,或已授权目前用户,即发出通知。

语法:USER username BUDDYSTATUS number

例如:用户已被加入联络人名单并有待授权。

USER pamela BUDDYSTATUS 2

用户已授权目前用户。

USER pamela BUDDYSTATUS 3

14 Skype Technologies S.A 17

用户已从联络人名单内被删除。

USER pamela BUDDYSTATUS 1

7.8.4 其他

可为Skype设定输入/输出装置。以空白名称设定装置时应选取 Windows

默认装置。设定成功会得到AUDIO_* [装置名称]的确认。

目前正在运行的装置可以GET AUDIO_IN|AUDIO_OUT查询而知。

如默认装置被选取,AUDIO_*将回传一个空白回答。

声频输入设备

语法: AUDIO_IN[ device name] (将淘汰)

SET AUDIO_IN[ device name]

例如: AUDIO_IN SB Audigy 2 ZS Audio [DC00] (将淘汰)

SET AUDIO_IN SB Audigy 2 ZS Audio [DC00]

声频输出装置

语法: AUDIO_ OUT[ device name] (将淘汰)

SET AUDIO_OUT[ device name]

例如: AUDIO_OUT SB Audigy 2 ZS Audio [DC00] (将淘汰)

SET AUDIO_OUT SB Audigy 2 ZS Audio [DC00]

7.9 从装置发至Skype

7.9.1 启动搜寻

SEARCH WHAT [target] 请求与目标有关的具体信息类型。

如果没有指定目标,则会回传所有结果。

WHAT 指定信息类型,可为下列的其中一项:USERS,

FRIENDS, CALLS, MISSEDCALLS, ACTIVECALLS, MESSAGES,

14

Skype中文开发API文档

协定3:CHATS, ACTIVECHATS, MISSEDCHATS,

RECENTCHATS, BOOKMARKEDCHATS, CHATMESSAGES,

MISSEDCHATMESSAGES).

注意:目前采用同步搜寻指令。今后可能会改变。

注意:下一项搜寻取代上一项搜寻。换言之,如果一项搜寻正在进行而又有一项搜寻被送

出,则第一项搜寻将终止搜寻。

搜寻朋友

语法:SEARCH FRIENDS

回传:如果找到配对吻合的结果,将回传一份用户名单。

15 Skype Technologies S.A 18

例如:SEARCH FRIENDS

回传目前用户的所有朋友。结果举例:

USERS tim, joe, mike

错误:ERROR 67 target not allowed with SEARCH FRIENDS

目标是以指令SEARCH FRIENDS来指定的(如

"SEARCH FRIENDS mike")

搜寻用户

语法:SEARCH USERS TARGET

TARGET –

用户名。如果搜寻字符串含"@",则搜寻按电子邮件地址进行(注意电子邮件地址必须100

%吻合)。否则,如果搜寻字符串为一个有效的Skype用户名(用户名必须有6至22个字符

,仅含以下符号:a-Z0-9-_,.

,而且必须以一个字母开头),该搜寻将按全名和用户名字段进行。所有其他搜寻仅按全

名字段进行。

回传:回传配对吻合的用户名。

例如:SEARCH USERS abc

回传所有含"abc"的用户名。结果举例:

USERS abc, -abc-, abc10

错误:ERROR 4 empty target not allowed

未指定目标用户名。

搜寻通话

语法:SEARCH CALLS TARGET

TARGET –

用户名。目标是可选项。如果指定目标,则会搜寻目前用户与目标用户之间的通话记录。

回传:回传一份通话标识符名单。

如果指定目标,则会回传目前用户与目标用户之间所有的以往通话标识符。

例如:SEARCH CALLS abc

结果举例:

CALLS 15, 16, 39

15

Skype中文开发API文档

ERROR 5 SEARCH CALLS:目标无效

目标用户名中含禁用字符(如"SEARCH CALLS

!a")。用户名必须有6至22个字符并仅含以下符号:a-Z0-9-_,.。

搜寻进行中的通话

语法:SEARCH ACTIVECALLS

列出所有通话卷标上显示的通话,如果主持电话会议,则包括所有参加会议的

成员。

16 Skype Technologies S.A 19

回传:回传一份进行中的通话标识符名单。

例如:SEARCH ACTIVECALLS

结果举例:

CALLS 25, 56

错误:ERROR 3 SEARCH:invalid WHAT

ACTIVECALLS拼字错误。

搜寻未接的来电

语法:SEARCH MISSEDCALLS

回传:回传一份未接来电的标识符名单,亦即显示处于MISSED状态的通话。

例如:SEARCH MISSEDCALLS

结果举例:

CALLS 25, 56

错误:ERROR 29 target not allowed with MISSEDCALLS

使用SEARCH MISSEDCALLS时,不允许指定目标。

搜寻留言

语法:SEARCH MESSAGES [TARGET]

TARGET –

用户名。目标是可选项。如果指定目标,则会搜寻目前用户与目标用户之间的留言记录。

回传:回传一份讯息标识符名单。

如果指定目标,则会回传目前用户与目标用户之间所有的留言标识符。

例如:SEARCH MESSAGES abc

结果举例:

MESSAGES 123, 124

错误:ERROR 29 SEARCH MESSAGES:目标无效

目标用户名中含禁用字符(如"SEARCH MESSAGES !a")。用户名必须有6

至22个字符并仅含以下符号:a-Z0-9-_,.。

搜寻错过的留言

语法:SEARCH MISSEDMESSAGES

回传:回传一份留言标识符名单。

例如:SEARCH MISSEDMESSAGES

结果举例:

16

Skype中文开发API文档

错误:ERROR 6 target not allowed with MISSEDMESSAGES

使用SEARCH MISSEDMESSAGES时,不允许指定目标。

搜寻聊天(协议3)

语法:SEARCH CHATS

回传:回传一份聊天标识符名单。

17 Skype Technologies S.A 20

例如:SEARCH CHATS

结果举例:

CHATS #bitman/$jessy;eb06e65612353279,

#bitman/$jdenton;9244e98f82d7d391

错误:ERROR 107 target not allowed with CHATS

使用SEARCH CHATS时,不允许指定目标。

搜寻进行中的聊天(协议3)

语法:SEARCH ACTIVECHATS

回传:回传UI上开放的聊天标识符名单。

例如:SEARCH ACTIVECHATS

结果举例:

CHATS #bitman/$jessy;eb06e65612353279,

#bitman/$jdenton;9244e98f82d7d391

错误: ?

搜寻错过的聊天(协定3)

语法:SEARCH MISSEDCHATS

回传:回传一份含有未读内容的聊天标识符名单。

例如:SEARCH MISSEDCHATS

结果举例:

CHATS #bitman/$jessy;eb06e65612353279,

#bitman/$jdenton;9244e98f82d7d391

错误: ?

搜寻最近的聊天(协议3)

语法:SEARCH RECENTCHATS

回传:回传一份最近的聊天标识符名单。

例如:SEARCH RECENTCHATS

结果举例:

CHATS #bitman/$jessy;eb06e65612353279,

#bitman/$jdenton;9244e98f82d7d391

错误: ?

搜寻加标注的聊天(协定3)

语法:SEARCH BOOKMARKEDCHATS

17

Skype中文开发API文档

例如:SEARCH BOOKMARKEDCHATS

结果举例:

CHATS #bitman/$jessy;eb06e65612353279,

#bitman/$jdenton;9244e98f82d7d391

18 Skype Technologies S.A 21

错误: ?

搜寻聊天内容(协议3)

语法:SEARCH CHATMESSAGES [TARGET]

TARGET –用户名。目标是可选项。实际上用户从来都不用。

回传:回传一份聊天内容标识符名单。

例如:SEARCH CHATMESSAGES abc

结果举例:

CHATMESSAGES 60, 59

错误:ERROR 29 SEARCH CHATMESSAGES:目标无效

目标用户名中含禁用字符(如"SEARCH MESSAGES !a")。用户名必须

有6至22个字符并仅含以下符号:a-Z0-9-_,.。

搜寻错过的聊天(协定3)

语法:SEARCH MISSEDCHATS

回传:回传一份含有未读内容的聊天标识符名单。

例如:SEARCH MISSEDCHATS

结果举例:

CHATMESSAGES 61, 62

错误:ERROR 29 target not allowed with MISSEDMESSAGES

使用SEARCH

MISSEDCHATMESSAGES时,不允许指定目标。

7.9.2 索取参数值

GET指令是一般请求指令。一次可以用来求得任何已知对象的一种属性

(USER, CALL, MESSAGE, (PROTOCOL 3:CHAT,

CHATMESSAGE)) 或一个一般变数 (USERSTATUS, CONNSTATUS,

AUDIO_IN, AUDIO_OUT, CURRENTUSERHANDLE,

MUTE)。Skype则以适当的通知指令响应。

USER对象信息

语法:GET USER USERNAME PROP

USERNAME – 用户名。用户名必须有6至22个字符并仅含以下符号:a-Z0-9-_,.。

PROP - 属性名。适用属性:

HANDLE, FULLNAME, BIRTHDAY, SEX, LANGUAGE, COUNTRY,

PROVINCE, CITY, PHONE_HOME, PHONE_OFFICE, PHONE_MOBILE,

HOMEPAGE, ABOUT, HASCALLEQUIPMENT, BUDDYSTATUS,

18

Skype中文开发API文档

LASTONLINETIMESTAMP

回传:如配对吻合,则回传指定用户的属性值。

19 Skype Technologies S.A 22

例如:GET USER pamela FULLNAME

结果举例:

USER pamela FULLNAME Jane Doe

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET USE")。

ERROR 10 invalid prop

标识符和/或属性不存在或拼字错误(如 "GET USER Pamela FULLNAM")。

ERROR 8 invalid handle

USERNAME不存在或含禁用字符(如

"GET USER !HANDLE")。

注意 GET USER USERNAME ONLINESTATUS 将回传

"OFFLINE",除非目前用户经其他用户授权,可以查看他/她的上线状态。

CALL对象信息

语法:GET CALL ID PROP

ID – 通话标识符。

PROP - 属性名。适用属性:

TIMESTAMP (UNIX时间戳), PARTNER_HANDLE,

PARTNER_DISPNAME,

CONF_ID, TYPE, STATUS, FAILUREREASON (数字表示), SUBJECT (未

used), PSTN_NUMBER, DURATION, PSTN_STATUS,

CONF_PARTICIPANT

n, CONF_PARTICIPANTS_COUNT

回传:如找到该笔通话,则回传指定通话的属性值。

例如:GET CALL 1594 TYPE

结果举例:

CALL 1594 TYPE OUTGOING_P2P

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET CAL")。

ERROR 11 invalid call id

标识符含非数字字符(如 "GET CALL 15!")。

ERROR 12 unknown call id

当前用户通话记录内没有带指定标识符的通话。

ERROR 13 invalid prop

属性名不存在或拼字错误(如 "GET CALL 15 TYP")。

ERROR 71 Invalid conference participant NO

19

Skype中文开发API文档

"GET

CALL 15 CONF_PARTICIPANT kala", "GET CALL 15

CONF_PARTICIPANT 5")

注意下述情形,如果隐蔽的通话被看到,亦即SEEN=FALSE变为SEEN=TRUE,

例如用户在Skype内点选了错过的来电,Skype将会通知API。

20 Skype Technologies S.A 23

MESSAGE对象信息

语法:GET MESSAGE ID PROP

ID – 讯息标识符。

PROP - 属性名。适用属性:

TIMESTAMP (UNIX时间戳), PARTNER_HANDLE,

PARTNER_DISPNAME,

CONF_ID (未使用), TYPE, STATUS, FAILUREREASON (数字表示), BODY

回传:如找到该讯息,则回传指定讯息的属性值。

例如:GET MESSAGE 159 TYPE

结果举例:

MESSAGE 159 TYPE TEXT

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET MESAGE ")。

ERROR 14 invalid message id

标识符含非数字字符(如 "GET MESSAGE 1a")。

ERROR 15 unknown message id

目前用户讯息记录内没有带指定标识符的讯息。

ERROR 16 invalid prop

属性名不存在或拼字错误(如 "GET MESSAGE 21 TYP")。

用户状态

语法:GET USERSTATUS

回传:回传目前用户的状态。可设定值:

UNKNOWN, OFFLINE, ONLINE, SKYPEME (协定l 2), AWAY,

NA, DND, INVISIBLE.

例如:GET USERSTATUS

结果举例:

USERSTATUS ONLINE

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET USESTATUS")。

连结状态

语法:GET CONNSTATUS

回传:回传目前连结状态。可设定值:

OFFLINE, CONNECTING, PAUSING, ONLINE.

20

Skype中文开发API文档

GET CONNSTATUS

结果举例:

CONNSTATUS ONLINE

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET CONSTATUS")。

21 Skype Technologies S.A 24

声频输入设备

语法:GET AUDIO_IN

回传:回传目前为Skype设定的声频输入设备。

例如:GET AUDIO_IN

结果举例:

AUDIO_IN SB Audigy 2 ZS Audio [DC00]

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET AUDO_IN")。

声频输出装置

语法:GET AUDIO_OUT

回传:回传目前为Skype设定的声频输出装置。

例如:GET AUDIO_OUT

结果举例:

AUDIO_OUT SB Audigy 2 ZS Audio [DC00]

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET AUDO_OT")。

目前用户句柄

语法:GET CURRENTUSERHANDLE

回传:回传目前用户的句柄。

例如:GET CURRENTUSERHANDLE

结果举例:

CURRENTUSERHANDLE banana

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET CURENTUSERHANDLE")。

静音状态

语法:GET MUTE

回传:回传静音状态:MUTE ON 或 MUTE OFF。如果没有通话处于

INPROGRESS状态中,MUTE永远处于OFF。

例如:GET MUTE

结果举例:

MUTE OFF

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET MUT")。

21

Skype中文开发API文档

语法:GET PRIVILEGE [PRIVILEGE]

PRIVILEGE – 特权名。适用特权:

SKYPEOUT

22 Skype Technologies S.A 25

回传:如用户有特权,则回传TRUE,否则回传FALSE。

例如:GET PRIVILEGE SKYPEOUT

结果举例:

PRIVILEGE SKYPEOUT TRUE

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET PIVILEGE")。

ERROR 40 unknown privilege

特权拼字错误或不存在(如 "GET PIVILEGE

SKYPEOUT").

用户数据

语法:GET PROFILE [PROP]

PROP – 数据属性。适用属性:

PSTN_BALANCE–按欧分计算的SkypeOut 余额。

PSTN_BALANCE_CURRENCY - SkypeOut 货币。只可能使用的货币是

欧元。

回传:PSTN_BALANCE_CURRENCY 回传PROFILE

PSTN_BALANCE_CURRENCY EUR,假如用户有SkypeOut 特权的话。

否则会回传 PROFILE PSTN_BALANCE_CURRENCY。

例如:GET PROFILE PSTN_BALANCE

结果举例:

PROFILE PSTN_BALANCE 109

例如:GET PROFILE PSTN_BALANCE_CURRENCY

结果举例:

PROFILE PSTN_BALANCE_CURRENCY EUR

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET PROFIIL")。

ERROR 10 Invalid PROP

属性拼字错误或不存在(如 "GET PROFILE

PSTN_BALANSS")。

Skype版本

语法:GET SKYPEVERSION

回传:回传Skype版本信息。

例如:GET SKYPEVERSION

结果举例:

22

Skype中文开发API文档

错误:ERROR 7 GET: invalid WHAT

对象名不存在或拼字错误(如 "GET

SKYPVERSION")。

23 Skype Technologies S.A 26

CHAT对象信息(协议3)

语法:GET CHAT ID PROP

ID – 聊天标识符。

PROP - 属性名。适用属性:

NAME, TIMESTAMP, ADDER, STATUS, POSTERS, MEMBERS, TOPIC,

CHATMESSAGES, ACTIVEMEMBERS, FRIENDLYNAME

回传:如果配对吻合,则回传指定聊天的属性值。STATUS

值:

LEGACY_DIALOG, DIALOG, MULTI_SUBSCRIBED,

UNSUBSCRIBED

例如:GET CHAT #bitman/$jessy;eb06e65635359671 NAME

结果举例:

CHAT #bitman/$jessy;eb06e65635359671 NAME

#bitman/$jessy;eb06e65635359671

错误:ERROR 7 GET:invalid WHAT

对象名不存在或拼字错误(如 "GET CHTA ")。

ERROR 105 invalid chat name

CHATNAME参数错误。

ERROR 106 invalid PROP

属性名不存在或拼字错误。

CHATMESSAGE对象信息(协议3)

语法:GET CHATMESSAGE ID PROP

ID – 聊天内容标识符。

PROP - 属性名。适用属性:

CHATNAME, TIMESTAMP, FROM_HANDLE, FROM_DISPNAME, TYPE,

USERS, LEAVEREASON, BODY, STATUS

回传:如果配对吻合,则回传指定聊天内容的属性值。

TYPE值:

SETTOPIC, SAID, ADDEDMEMBERS, SAWMEMBERS,

CREATEDCHATWITH, LEFT, UNKNOWN

LEAVEREASON值:

USER_NOT_FOUND, USER_INCAPABLE,

ADDER_MUST_BE_FRIEND, ADDED_MUST_BE_AUTHORIZED,

UNSUBSCRIBE

23

Skype中文开发API文档

值:

SENDING, SENT, RECEIVED, READ

例如:GET CHATMESSAGE 60 CHATNAME

结果举例:

CHATMESSAGE 60 CHATNAME

#bitman/$jessy;eb06e65631239671

24 Skype Technologies S.A 27

错误:ERROR 7 GET: invalid WHAT

对象名不存在或拼字错误(如 "GET CHTAMESSAGE 60

CHATNAME")。

ERROR 14 invalid message id

聊天内容标识符含禁用符号(仅限使用数字记号)

(如 "GET CHATMESSAGE a")

ERROR 15 unknown message id

未知聊天内容标识符。

ERROR 16 invalid PROP

属性名不存在或拼字错误(如 "GET CHATMESSAGE 60")。

7.9.3 设定参数值

SET 指令是一般更新指令。在语法上,该指令可用于对象(CALL, USER,

MESSAGE)和一般变数(USERSTATUS)。一次可以用来更新任何已知对象的一种

属性。Skype则响应以适当的通知指令作为一种确认方式。

注意:多数属性仅供「只读」。

CALL对象信息

语法:SET CALL ID PROP VALUE

ID – 通话标识符(数字表示)。

PROP - 属性名。可写入的通话属性:

• STATUS – 给通话控制使用。适用值:

• ONHOLD – 通话暂候

• INPROGRESS – 接听来电或恢复通话

• FINISHED – 挂断通话

• SEEN – 设定来电已被看到,意思是某个错过的来电已被看到,并会

从错过的来电名单中删除。

• DTMF – 将VALUE作为DTMF发送。VALUE中允许使用的符号是:

{0..9,#,*}.

• JOIN_CONFERENCE – 将一个通话与另一个通话合并为电话会议。

VALUE为另一个通话的标识符。

回传:回传(新)属性值或错误信息。

例如:SET CALL 15 SEEN

结果举例:

24

Skype中文开发API文档

错误:ERROR 18 SET: invalid WHAT

对象名不存在或拼字错误(如 "SET CAL")。

ERROR 19 invalid call id

标识符含非数字字符(如 "SET CALL A")。

ERROR 20 unknown call id

25 Skype Technologies S.A 28

带指定标识符的通话既不存在于目前用户通话记录之内,也不在进行中。

ERROR 21 unknown prop

设定值不正确或有拼字错误(如"SET CALL 15 STATUS ONHOL")。

ERROR 22 cannot hold

该通话不在进行中,所以无法暂候。

ERROR 23 cannot resume/answer

该通话不在进行中,所以无法恢复/接听。

ERROR 24 cannot hangup

该通话不在进行中,所以无法挂断。

ERROR 25 invalid WHAT

属性名不存在或拼字错误(如 "SET CALL 15 STATU ONHOLD")。

ERROR 72 Cannot create conference

建立电话会议指令,如"SET CALL 65 JOIN_CONFERENCE

66",因某些原因而失败。

MESSAGE对象信息

语法:SET MESSAGE ID PROP

ID – 讯息标识符(数字表示)。

PROP - 属性名。可写入的讯息属性:

• SEEN –

指该条错过的即时消息已被看过,并会从错过的讯讯清单中删除。如果允许相关用

户组使用自动弹出功能,UI将自动设定该值。

回传:回传(新)属性值或错误信息。如果设定值没有改变,则回传目前的属性值。

例如:SET MESSAGE 1578 SEEN

结果举例:

MESSAGE 1578 STATUS READ

错误:ERROR 18 SET: invalid WHAT

对象名不存在或拼字错误(如 "SET CAL")。

ERROR 30 invalid message id

标识符含非数字字符(如 "SET MESSAGE A")。

ERROR 31 unknown message id

目前用户讯息记录内没有带指定标识符的信息。

ERROR 32 invalid WHAT

25

Skype中文开发API文档

"SET MESSAGE 21 SEN")。

用户状态

语法:SET USERSTATUS VALUE

VALUE - 用户状态值。适用值:

• ONLINE – 设定目前用户处于「上线」状态。

• OFFLINE – 设定目前用户处于「脱机」状态。

• SKYPEME – 设定目前用户处于"Skype Me" 状态 (协议2)。

26 Skype Technologies S.A 29

• AWAY – 设定目前用户处于「暂时离开」状态。

• NA – 设定目前用户处于「离开」状态。

• DND – 设定目前用户处于「请勿打扰」状态。

• INVISIBLE – 设定目前用户处于「隐藏」状态。

回传:回传(新)属性值或错误信息。

例如:SET USERSTATUS INVISIBLE

结果举例:

USERSTATUS INVISIBLE

错误:ERROR 18 SET: invalid WHAT

USERSTATUS指令不存在或拼字错误(如 "SET CAL")。

ERROR 28 SET USERSTATUS:unknown status

未知或有拼字错误的用户状态值 (如 "SET

USERSTATUS RICH")。

静音状态

语法:SET MUTE VALUE

VALUE – 设定打开或关闭静音。通话处于INPROGRESS状态时有效。

适用值:

• ON – 设定静音开启

• OFF –设定静音关闭

回传:回传(新)属性值或错误信息。

例如:SET MUTE ON

结果举例:

MUTE ON

错误:ERROR 18 SET: invalid WHAT

静音指令不存在或拼字错误(如 "SET MUT")。

ERROR 33 invalid parameter

未知或有拼字错误的静音值 (如 "SET MUTE

O")。

聊天内容状态

语法:SET CHATMESSAGE ID SEEN

ID – 聊天内容标识符。

26

Skype中文开发API文档

例如:SET CHATMESSAGE 61 SEEN

结果举例:

CHATMESSAGE 61 STATUS SEEN

错误:ERROR 18 SET: invalid WHAT

CHATMESSAGE指令不存在或拼字错误(如 "SET CHATMESSAGE")。

27 Skype Technologies S.A 30

ERROR 31 unknown message id

未知聊天内容标识符。

ERROR 30 invalid message id

聊天内容标识符有拼字错误,即含禁用符号(仅限使用数字记号) (如 "SET

CHATMESSAGE a SEEN")

ERROR 32 invalid WHAT

所设聊天内容状态无效 (如 "SET CHATMESSAGE 60

SEENA")

7.9.4 通话

语法:CALL TARGET [, TARGET2, ]

TARGET – 通话目标。如有多个目标,则会建立电话会议。

适用目标类型:

• USERNAME – 用户名,如 "pamela"

• PSTN – 电话号码,如 ""

• SPEED DIAL CODE – 1或2个字符的快速拨号代码

回传:回传通话标识符和状态。

例如:CALL pamela

结果举例:

CALL 49 STATUS ROUTING

CALL 49 STATUS RINGING

CALL 49 STATUS REFUSED

错误:ERROR 34 invalid user handle

找不到目标用户名/电话号码(如 "CALL ")。

ERROR 39 user blocked

并非接不通电话,而是错误使用API—试图与被封锁的用户通话。

ERROR 73 too many participants

向4人以上启动通话 (如 "CALL test, test_2, test_3, test_4, test_5") 。

经由API拨号通话时,Skype窗口为焦点窗口。可以经由API使用快速拨号。

通话错误代码

代码 说明: 可能原因

1 CALL 181 FAILUREREASO N 1 其他类错误。

2 CALL 181 FAILUREREASO N 2 用户/电话号码

27

Skype中文开发API文档

置码(如,

正确号码为

"",

28 Skype Technologies S.A 31

"+3725555555";错误号

码为 "3725555555")。

3 CALL 181 FAILUREREASO N 3 用户脱机。

4 CALL 181 FAILUREREASO N 4 找不到代理服务器

5 CALL 181 FAILUREREASO N 5 呼叫中断。

6 CALL 181 FAILUREREASO N 6 找不到编解器。

7 CALL 181 FAILUREREASO N 7 音响输入/输出错误。

8 CALL 181 FAILUREREASO N 8 遥控

音响装置问题。

9 CALL 181 FAILUREREASO N 9 通话被接收方封锁。

10 CALL 181 FAILUREREASO N 10 接收方未被列为朋友。

11 CALL 181 FAILUREREASO N 11 目前用户未经过

接收方授权。

12 CALL 181 FAILUREREASO N 12 录音错误。

7.9.5 发送讯息

语法:MESSAGE USERNAME TEXT

• USERNAME – 接收讯息方的用户名,如 "pamela"

TEXT – 讯息内容主体,如"Please call me"

回传:回传讯息标识符和状态。

例如:MESSAGE pamela Please call me

结果举例:

MESSAGE 136 STATUS SENDING

MESSAGE 136 STATUS SENT

错误:ERROR 26 invalid user handle

目标用户名不存在或含禁用符号(如

"MESSAGE ")

MESSAGE 138 STATUS RECEIVED

如讯息发送失败,则会收到LEFT类型讯息。

讯息指令LEAVEREASON说明发送失败的原因。

28 Skype Technologies S.A 32

7.9.6 打开对话框

新增联络人

语法:OPEN ADDAFRIEND

例如:OPEN ADDAFRIEND

28

Skype中文开发API文档

错误:ERROR 69 invalid open what

打开目标不存在或有拼字错误(如"OPEN ADDFRIEND")。

指令如成功将返回API。

即时消息

语法:OPEN IM USERNAME [MESSAGE]

USERNAME – 接收讯息方的用户名,如 "pamela"

MESSAGE – 讯息内容主体,如"Please call

me"。该值将被预先填入即时消息对话窗口。

例如:OPEN IM jdenton Testing

弹出实时息息对话框,里面会有已填好的文字"Testing"作为其讯息内容。

错误:ERROR 69 invalid open what

打开目标不存在或有拼字错误(如"OPEN IN")。

ERROR 70 SETㄩinvalid handle

用户名不存在或含禁用符号

指令如成功将返回API。

聊天

语法:OPEN CHAT TARGET [, TARGET2, TARGET3 ...]

TARGET –

加入聊天的用户名,如"pamela",如仅提供一个TARGET,则会打开一个对话框

回传:指令如成功则回传 CHAT id STATUS SUBSCRIBED 。

例如:OPEN CHAT jdenton, test_bi, pamela

"CHAT #name/$843934 STATUS

SUBSCRIBED",聊天窗口将弹出,指定的成员列在窗口右边。

错误:ERROR 69 invalid open what ??.

ERROR 70 SETㄩinvalid handle

用户名不存在或含禁用符号

指令如成功将返回API。

7.9.7 Skype窗口焦点控制

语法:FOCUS

例如:FOCUS

29 Skype Technologies S.A 33

把Skype窗口放在上面。

错误:ERROR 2 unknown command

FOCUS指令不存在或有拼字错误(如"FCOUS")。

7.9.8 检测连结

语法:PING

回传:如与Skype接通,则回传PONG。

例如:PING

29

Skype中文开发API文档

错误:ERROR 2 unknown command

PING指令不存在或有拼字错误(如"PNIG")。

7.10 错误代码

• ERROR CODE[ DESC]

每次Skype发现包括语法不正确的指令、内在不一致性等错误条件时,就会对错误发出回

应。CODE是专门用来辨识错误条件的数字,而DESC则为选择性情况概述,以英文编写

目前被定义的错误代码如下:

代码 说明: 可能原因

1 一般语法错误 找不到指令(如,将" "作为指令发出)

2 未知指令 指令拼字不正确(如,发出"GRT"而非"GET"

指令)

3 搜寻:未知WHAT值 找不到搜寻目标或有拼字错误

4 不允许空白目标

5 搜寻CALLS:目标无效 禁用字符(如,"!", "#", "¤", "€", " "

(空格)

等)被用在目标用户名内(如,"SEARCH CALLS !a")。

6 目标禁用于 如,"SEARCH MISSEDCALLS

MISSEDCALLS echo123

7 GET:无效WHAT值 找不到对象/属性名或有拼字错误

8 用户句柄无效 找不到USERNAME或含有一个禁用字符

(如,"GET USER !HANDLE")。

9 未知用户

30 Skype Technologies S.A 34

10 PROP无效 找不到属性名和/或标识符

或有拼字错误

11 通话标识符无效 找不到通话标识符或有拼字错误

(必须为数值)

12 未知通话 使用了不存在的通话标识符

13 PROP无效 回传到GET指令

CALL id

PARTNER_DISPLAYNAME.属性名不存在

或拼字错误

14 讯息标识符无效 GET – 找不到讯息标识符或

有拼字错误(必须为数值)

15 未知信息 不存在的讯息标识符被用在

GET指令中

16 PROP无效 回传到GET指令

30

Skype中文开发API文档

PARTNER_DISPLAYNAME。找不到属性名

或有拼字错误

17 不在使用中

18 SET:无效WHAT值 找不到属性名或

有拼字错误

19 通话标识符无效 找不到通话标识符或有拼字错误

(必须为数值)

20 未知通话 使用了不存在的通话标识符

21 未知/禁用通话属性 SET CALL值不正确或有拼字错误(如,

"SET CALL 15 STATUS

ONHOL")

22 该通话现在无法暂候 试图使不在进行中的通话暂候

23 该通话现在无法恢复 试图恢复/接听不在进行中的通话。

31 Skype Technologies S.A 35

24 无法挂断非使用中的通话 试图挂断不在进行中的通话

25 未知WHAT值 找不到属性名或有拼字错误(如,"SET

CALL 15 STATU

ONHOLD")

26 用户句柄无效 找不到目标用户名或

含有禁用

符号 (如 "MESSAGE ")

27 无效版本号码

28 未知用户状态 未知或有拼字错误的

用户状态值 (如,"SET

USERSTATUS RICH")。

29 目标禁用于 如,"SEARCH MISSEDMESSAGES

MISSEDMESSAGES echo123"

30 讯息标识符无效 SET – 找不到讯息标识符或有拼字错误

(必须为数值)

31 未知讯息标识符 不存在的讯息标识符被用在

SET指令中

32 无效WHAT值 找不到属性或其中有拼字错误

33 SET MUTE参数无效 未知或有拼字错误的

静音值 (如,"SET MUTE O")

34 CALL用户句柄无效 找不到目标用户名/电话号码

(如,"CALL ")

35 没有连结

36 没有上线

31

Skype中文开发API文档

没有连结

38 没有上线

39 被用户封锁 目的地用户被致电人封锁。也会出现在试

图致电给被封锁用户时。

32 Skype Technologies S.A 36

40 未知特权 特权有拼字错误或不存在 (如,

"GET PRIVILEGE

SKYPEOUT")。

41 无通话状态 处于闲置状态时,

试图发送DTMF

42 无效DTMF代码 发出无效DTMF代码。DTMF代码的

有效符号为{0..9,#,*}

43 无法发送空白讯息 被发送的讯息为空白讯息,

如,"MESSAGE echo123"。

66 没有连结 没有链接Skype,即用户

状态为"LOGGEDOUT"

67 目标禁用于 SEARCH FRIENDS SEARCH

FRIENDS有一个参数

68 拒绝存取

69 打开对象无效 找不到OPEN指令或

TARGET拼字错误,如 "OPEN IN"

70 无效句柄 OPEN即时消息参数

USERNAME不存在或含禁用符号

71 会议参加人数无效 会议参加人的

数字过大或

无效。

72 无法建立会议

73 参加人太多 召集四人以上

参加会议。

91 内部错误 无法拨打急救

号码

92 内部错误 所拨号码非有效

PSTN号码

93 内部错误 Skype名无效。

32 Skype Technologies S.A 37

94 内部错误 无法拨打自己的号码

95 内部错误 目的地用户

在拨打后立即被致电人封锁

96 内部错误 拨出的电话处于

32

Skype中文开发API文档

状态

97 内部错误 内部错误

98 内部错误 内部错误

99 内部错误 内部错误

100 内部错误 内部错误

101 内部错误 打给目的地用户的电话

已经在通话中

103 无法暂候 内部错误

104 无法恢复通话 内部错误

105 无效聊天名 聊天名不存在或拼字错误

106 PROP无效 找不到属性名或

CHAT或CHATMESSAGE有拼字错误

107 目标禁用于CHATS 不允许设定参数于指令SEARCH CHATS

9901 内部错误

7.11 操作示范

-> 装置发至Skype

<- Skype发至装置

; 说明

NB!实际传输采用utf-8编码。

; 装置自行引进并说明已经就绪

-> NAME HandSet 1.0

-> PROTOCOL 1

33 Skype Technologies S.A 38

; -> READY (尚未建置)

; Skype接受/启动装置

<- PROTOCOL 1

; <- ENABLE YES (尚未建置)

; 装置请求朋友名单

-> SEARCH FRIENDS

; Skype以名单回应

<- USERS kaido, taavet, toivo

; 装置请求朋友名单内所有人的全名

-> GET USER kaido FULLNAME

-> GET USER taavet FULLNAME

-> GET USER toivo FULLNAME

; Skype以所求数据响应...

<- USER kaido FULLNAME Kaido KΣrner

<- USER taavet FULLNAME

33

Skype中文开发API文档

- USER toivo FULLNAME Toivo Annus

; 装置启动与kaido通话程序

-> CALL kaido

; Skype显示各种接通状态

<- CALL 122211 STATUS ROUTING

; 同一时间, taavet脱机

<- USER taavet ONLINESTATUS OFFLINE

<- CALL 122211 STATUS RINGING

; Kaido接听电话

<- CALL 122211 STATUS INPROGRESS

; 通话在进行中..

; 装置现在决定挂断电话

-> SET CALL 122211 STATUS FINISHED

; Skype确认 ..

<- CALL 122211 STATUS FINISHED

7.12 操作示范:来电

-> 装置发至Skype

<- Skype发至装置

; 说明

; Skype发出有来电的通知

<- CALL 1594 STATUS RINGING

; 装置查询来电类型

-> GET CALL 1594 TYPE

<- CALL 1594 TYPE INCOMING_P2P

; 装置查询致电人的用户名,然后再查全名

-> GET CALL 1594 PARTNER_HANDLE

34 Skype Technologies S.A 39

<- CALL 1594 PARTNER_HANDLE caller

-> GET USER caller FULLNAME

<- USER caller FULLNAME answer me

; 装置表示接受 (接听来电)

-> SET CALL 1594 STATUS INPROGRESS

; Skype确认

<- CALL 1594 STATUS INPROGRESS

; Skype通告通话持续时间 (在通话结束前完成)

<- CALL 1594 DURATION 5

; Skype通告对方已挂断电话

<- CALL 1594 STATUS FINISHED

8 API传输层

34

Skype中文开发API文档

API都没有联结在任何具体的传输层上。

8.1 Windows 讯息的API传输

目前仅对Windows讯息建置好API传输。在目前建置的传输中,外部一方处于活动状态

,并负责启动通讯。当任何一方无法发送任何讯息时,通讯应视作被中断。

启动通讯时,客户端应会向系统中所有窗口广播窗口讯息

('SkypeControlAPIDiscover'),并用wParam参数指定本身窗口句柄。为了回应,

Skype向指定的句柄发出'SkypeControlAPIAttach'讯息,并以下面的其中一项lPara

m参数值说明连结状态:

• SKYPECONTROLAPI_ATTACH_SUCCESS =

0:客户端链接成功,API窗口句柄可见于wParam参数;

• SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION = 1:

Skype已确认链接请求并正在等候用户确认。尚未连结上客户端,并应等待SKYPE

CONTROLAPI_ATTACH_SUCCESS 讯息;

• SKYPECONTROLAPI_ATTACH_REFUSED = 2:用户明确拒绝客户端存取;

• SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE =

3:API现在不供使用。例如,目前无用户登入时就会出现这种情况。

客户端试图进一步连结之前应等待SKYPECONTROLAPI_ATTACH_API_AVAILA

BLE广播。

API一旦可供使用,Skype则以设定值SKYPECONTROLAPI_ATTACH_API_AVAILABL

E = 0x8001向系统的所有应用程序窗口广播SkypeControlAPIAttach讯息。

实际数据交换采用标准WM_COPYDATA讯息。被传送的数据是以Null结尾的utf-

8字符串指令(或响应)方式发出。注意结尾的0必须也要传送出去。不允许在一个讯息封包

内含多个讯息。传送的字符串长度不受此协议限制。

35 Skype Technologies S.A 40

Skype在收到该讯息之后不会再封锁链接。如采用SendMessage()

发出的讯息失败,就表示通讯管道被切断。

注意:讯息处理结果(同时包括SkypeControlApiMessage和copydata)

不得为零,否则会被Skype视作连结中断!

API客户端装置处理API讯息的时间不得超过1秒钟,如超过1秒钟连结会被切断。使用PI

NG指令测试链接状态。为了便于在开发时进行程序排错,可将机码

APITimeoutDisabled(DWORD value, 0 = timeout enabled 1 = timeout

disabled) 填入

HKCUSoftwareSkypePhoneUI –使Skype不再强制执行1秒钟超时限制。

8.2 Windows 讯息的API传输:常见问题解答

Skype能保持我的SendMessage() 指令有效多久?

Skype根本不保持SendMessage() 指令继续有效(在正常情况下)。

应用程序应当等多久,才能重新发出指令?

多数指令应能在数微秒之内回传,搜寻指令需要的时间更久。每隔数秒可用PING指令测

试一下通讯管道是否畅通。

35

Skype中文开发API文档

SendMessage()?

可以,但由于窗口本身会强迫这些线程合并为单一线程,因此没有真正的差别。

8.3 Windows 讯息的API传输:将被淘汰

启用通讯时,客户端应向系统中所有窗口广播窗口讯息('SkypeControlAPI'),

并用wParam参数指定本身窗口句柄。为了回应,Skype向指定的句柄发出同样的讯

息,并用wParam参数指定通话窗口句柄。现在双方都知道发送讯息的窗口句柄了。

客户端应继续以'SkypeControlAPI'讯息轮询Skype,不断检查它是否仍处于可供使用的

连结状态。__

36

本文标签: 用户讯息回传通话错误