弹出对话框-金山毒霸主页
2023年4月3日发(作者:seagate驱动)
Skype中文开发API文档
1
保密条款:本文件为SkypeTechnologiesS.A.公司所有,全部内容严格保密。本档仅在保密基础上提供
给被选中并符合条件的潜在
合作伙伴、客户或供货商,任何其他人一概不得使用。亦不得以任何形式加以复制、保存
、传播或备份。如收件人接受本档,即表示他或她同意,在终止与SkypeTechnologies
S.A.合作时,须将此档退还本公司。
他或她进一步同意,未经许可不得备份、传真、复制或传播所收到的、与本公司合作之业
务有关的任何文件。
本档不构成销售要约或招揽收购的要约。
©SkypeTechnologiesS.A3
1本文档编撰目的
介绍SkypeAPI并说明建置透过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时出现的语法混乱
•错误修正:SEARCHMESSAGES不再回传CHATMESSAGES值,
如果使用协议2的话
•错误修正:API以前仅显示讯息的第一个字或全名
•错误修正:访问控制列表(ACL)只记住一项程序的许可
•错误修正:MC信息标识符无法回传
•错误修正:与原有应用程序的链接问题
•错误修正:修正了在两个Windows账户下同时使用Skype
时出现的应用程序异常
•错误修正:Win98/Me中显示有许多动态链接库(dll)檔而不是各自的
应用程序在使用Skype
•错误修正:API有时不回传'BUDDYSTATUS1'讯息
修订版:1.2.0.11
Skype中文开发API文档
2
2005-03-04
发行说明:
•增加内容:协议4
•支持电话会议:召开电话会议、增加会议人数并能够获得参加会议者的
名单和有关通知
•可查看SkypeOut余额
•可拨打快速拨号单内的号码
•声频装置变更通知
•删除即时消息(IM)记录的通知
©SkypeTechnologiesS.A4
•将语言与国家选项修改为按国际标准国家代码(ISO)名单而非以国家
名称回传(新做法:从协议4开始,语言与国家回传值之前将加上ISO代码
('GETUSERecho123COUNTRY'=>'USERecho123COUNTRYee
Estonia'))
•关闭Skype的通知
•支持SkypeIn
•为了排除错误而将程序暂停一秒钟的登录机码
•可增加用户句柄至OPENADDAFRIEND
•CALLFAILUREREASON1–文件文件记录错误,文件文件改用"Miscerror"
(其他类错误)显示
•更新内容:如找不到CHATMESSAGE属性,'SETCHATMESSAGEid'
指令将发出同一错误讯息,而不论信息标识符是否存在
•更新内容:PSTN_STATUS发出从网关回传的错误字符串
•更新内容:HASCALLEQUIPMENT回传值永远显示TRUE
•错误修正:#11648API:"AUDIOIN"和"AUDIOOUT"指令不能正确读取
双字节驱动程序命名
•错误修正:#11473API:BTN_PRESSEDE指令失效,出现错误号码71
无效机码
•错误修正:#11472API:静音功能被启动
•错误修正:#11473API:初始设定参加电话会议人数超过4人
•错误修正:#11368API:IMHISTORYCHANGED指令无效
•错误修正:#11272API:MUTE指令无效
•错误修正:#11473API:无法使用快速拨号拨给SkypeOut联络人
•错误修正:#11473API:空白CALL指令无响应
•错误修正:#11204SKYPE存取应用程序编程接口不能拒绝存取装置。
•更新内容:#10567经由电话应用程序编程接口上下自动扩展联络人名单群组
•错误修正:#11473API:用户更换声频装置时不发出通知
2.2文件
修订版本日期修改人备注/更新内容
Skype中文开发API文档
3
-10-22TaavetHinrikusAPI公开释出
1.12005-01-12TaavetHinrikusSkype释出版本
1.22005-03-04TaavetHinrikus
Skype释出版本1.2,协议4,
开发工程师常见问题解
答项目等等
3法定地位
©SkypeTechnologiesS.A5
本API文件档和SkypeAPI均为SkypeTechnologiesS.A.或其关联公司版权所有。有关
使用限制请查阅Skype网站上登载的终端用户许可协议(EULA):
/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
•NAMEdeviceName
•PROTOCOLversion
•AUDIO_INdeviceName
•AUDIO_OUTdeviceName
•HOOKON|OFF
•MUTEON|OFF
•BTN_PRESSED(0-9,A-Z,#,*,UP,DOWN,YES,NO,SKYPE)
Skype中文开发API文档
4
BTN_RELEASED...
6.2从Skype发至装置
•MUTEON|OFF
©SkypeTechnologiesS.A6
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.3API的访问控制列表(ACL)
每当一个应用程序试图使用SkypeAPI时,就会弹出一个要求用户确认的对话窗口—
无论是否允许该程序使用API。这一功能的主要作用在于保护用户的隐私和安全。
为保持操作简便、易于用户使用,我们向开发人员建议如下:
•可执行程序(.exe檔)的命名应当通俗易懂,例如,"".
"",这一点非常重要,因为用户可以直接看到可执行文件案名称。
如果文件名含糊不清,用户就可能不允许该程序存取Skype。
•签名–应用程序应以VeriSign的CodesSigning(代码签字)证书签署。
•NAME指令–应用程序应支持"NAME"指令并应将其名称发表。
7.4SkypeOut
4SkypeTechnologiesS.A7
7.4.1SkypeOut联络人名单
可以索取SkypeOut联络人名单—这些数据现已成为主要名单的一部分,亦即
如果执行"SEARCHFRIENDS"指令,则会回传表内联络人名单号码。
如需得到目前用户的SkypeOut联络人号码的详细数据,可执行
"GETUSER
Skype中文开发API文档
5
SkypeOut联络人,"GETUSER
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.7SkypeAPI协议版本
目前有协议版本1、2和3。
7.7.1协议2新增功能
•新增onlinestatusSKYPEME。
5SkypeTechnologiesS.A8
•如通话处于暂候状态,API会分别向所有客户端发出"CALLxxSTATUS
LOCALHOLD/REMOTEHOLD"的通知。协定1仅回传ONHOLD。
•新增callstatusCANCELLED
7.7.2协议3新增功能
•多人聊天指令
•旧版即时消息(IM)的相容层
7.7.3协议4新增功能
•在语言和国家值前面补加ISO代码
协议1、2的兼容性
如要求的协议版本低于3,则所有导入指令均以下列方式被转换:
•SEARCHMESSAGES->SEARCHCHATMESSAGES
•SEARCHMISSEDMESSAGES->SEARCHMISSEDCHATMESSAGES
•GETMESSAGE->GETCHATMESSAGE
•SETMESSAGE->SETCHATMESSAGE
Skype中文开发API文档
6
GETMESSAGE属性也被转换:
•PARTNER_HANDLE->FROM_HANDLE
•PARTNER_DISPNAME->FROM_DISPNAME
所有对API发出的通知的回答(包括GET/SETMESSAGE)均被转换:
•CHATMESSAGE*FROM_HANDLEx->MESSAGE*
PARTNER_HANDLEx
•CHATMESSAGE*FROM_DISPNAMEx->MESSAGE*
FROM_DISPNAMEx
•CHATMESSAGE*FROM_DISPNAMEx->MESSAGE*
如协议版本低于3,SEARCHMESSAGES和SEARCH
MISSEDMESSAGES指令将回传字符串MESSAGES1、2、3。
7.8从Skype发至装置
7.8.1状态指令
所有这些指令均由Skype在初次建立连结或在出现参数更变时进行广播。可用GET
指令随时对它们进行查询。
用户状态
语法:USERSTATUSstatus
status-用户状态值。适用值:
•UNKNOWN.
•ONLINE-目前用户处于上线状态。
•OFFLINE-目前用户处于脱机状态。
•SKYPEME-目前用户正在使用"SkypeMe"模式(协议2)。
6SkypeTechnologiesS.A9
•AWAY-目前用户处于暂时离开状态。
•NA-目前用户离开。
•DND-目前用户处于“请勿打扰”模式。
•INVISIBLE-目前用户处于隐藏状态,其他用户看不见。
•LOGGEDOUT-目前用户已注销。用户已断线。
例如:USERSTATUSINVISIBLE
连结状态
语法:CONNSTATUSstatus
status–连结状态值。适用值:
•OFFLINE
•CONNECTING
•PAUSING
•ONLINE
•LOGGEDOUT-目前用户已注销。
例如:CONNSTATUSONLINE
目前用户句柄
Skype中文开发API文档
7
CURRENTUSERHANDLEuserhandle
例如:CURRENTUSERHANDLEbanana
7.8.2搜寻结果
这些是对SEARCH指令的响应。
将来会把搜索结果数目限制在N个
(N值可以被设定),但现在没有限制。今后可能支持传呼或自定范围查询。
用户搜寻
找到的用户名单。
语法:USERSuser1[,user2][,user3]
例如:USERSabc,-abc-,abc10
朋友搜寻
找到的朋友名单。
语法:USERSuser1[,user2][,user3]
例如:USERStim,joe,mike
通话搜寻
找到的通话标识符名单。
7SkypeTechnologiesS.A10
语法:CALLSid1[,id2][,id3]
例如:CALLS15,16,39
未接来电的搜寻
找到的未接来电标识符名单。
语法:CALLSid1[,id2][,id3]
例如:CALLS15,16,39
留言搜寻
找到的留言标识符名单。
语法:MESSAGESid1[,id2][,id3]
例如:MESSAGES15,16,39
错过的留言搜寻
找到的错过留言标识符名单。
语法:MESSAGESid1[,id2][,id3]
例如:MESSAGES15,16,39
聊天搜寻
找到的聊天标识符名单。
语法:CHATSid1[,id2][,id3]
例如:CHATS#test_2/$testtest20;54389d65f7d6f2c4,
#test_b/$testtest20;867c47704bcc71fb
进行中的聊天搜寻
找到的UI上开放的聊天标识符名单。
语法:CHATSid1[,id2][,id3]
Skype中文开发API文档
8
CHATS#test_2/$testtest20;54389d65f7d6f2c4,
#test_b/$testtest20;867c47704bcc71fb
错过的聊天搜寻
找到的含未读讯息的聊天标识符名单。
语法:CHATSid1[,id2][,id3]
例如:CHATS#test_2/$testtest20;54389d65f7d6f2c4,
#test_b/$testtest20;867c47704bcc71fb
最近的聊天搜寻
找到的最近聊天标识符名单。
语法:CHATSid1[,id2][,id3]
例如:CHATS#test_2/$testtest20;54389d65f7d6f2c4,
#test_b/$testtest20;867c47704bcc71fb
8SkypeTechnologiesS.A11
标注的聊天搜寻
找到的标注聊天标识符名单。
语法:CHATSid1[,id2][,id3]
例如:CHATS#test_2/$testtest20;54389d65f7d6f2c4,
#test_b/$testtest20;867c47704bcc71fb
7.8.3通知
如相应对象发生变化或以GET指令请求属性值,Skype则会发出通知。另外,如果属性值
被SET指令所更改,会发出通知,确认更改。
涉及相关对象时会发出通知,如好友名单(buddylist)内的用户、正在进行的通话和即
时讯息等。
"PROP"是对应对象的属性。
用户对象
就用户对象的属性发出通知。
语法:USERUSERNAMEPROPVALUE
USERNAME–用户名。
PROP-属性名。适用属性:
•HANDLE–用户名。例如:USERpamelaHANDLEpamela。
•FULLNAME–用户全名。例如:USERpamelaFULLNAMEJane
Doe.
•BIRTHDAY–以YYYYMMDD格式表示用户生日。例如:USERbitman
BIRTHDAY19780329.
•SEX–例如:USERpamelaSEXUNKNOWN.值:
•UNKNOWN–用户在个人资料内未注明性别。
•MALE
•FEMALE
•LANGUAGE–语言名称。例如:USERmikeLANGUAGE
Skype中文开发API文档
9
.协议4中采用ISO前置码,例如:USERmikeLANGUAGE
enEnglish.
•COUNTRY–国家名称。例如:USERmikeCOUNTRYEstonia.在
协议4中采用ISO前置码,例如:USERmikeCOUNTRYEstonia.
•PROVINCE–例如:USERmikePROVINCEHarjumaa.
•CITY–例如:USERmikeCITYTallinn.
•PHONE_HOME–例如:USERmikePHONE_HOME3721111111.
•PHONE_OFFICE–例如:USERmikePHONE_OFFICE3721111111.
•PHONE_MOBILE–例如:USERmikePHONE_MOBILE3721111111.
•HOMEPAGE–例如:USERmikeHOMEPAGEhttp://.
•ABOUT–例如:USERmikeABOUTIamaniceperson.
9SkypeTechnologiesS.A12
•HASCALLEQUIPMENT–回传值永远显示TRUE。例如:USERpamela
HASCALLEQUIPMENTTRUE.
•BUDDYSTATUS–例如:USERpamelaBUDDYSTATUS2.可设定的
BUDDYSTATUS值:
•0–从未列入联络人名单。
•1–已从联络人名单内删除。
•2–有待授权。
•3-已加入联络人名单。
•ISAUTHORIZED–已得到目前用户的授权。例如:USERpamela
ISAUTHORIZEDTRUE.值:
•TRUE
•FALSE
•ISBLOCKED–已被目前用户封锁。例如:USERspammerISBLOCKED
TRUE.值:
•TRUE
•FALSE
•DISPLAYNAME–例如:USERpamelaDISPLAYNAMEpam.
•ONLINESTATUS用户上线状态。例如:USERmike
ONLINESTATUSONLINE.值:
•UNKNOWN–未知用户。
•OFFLINE–用户处于脱机状态(未联机)。如果目前用户未经其他用
户授权而查看他/她的上线状态,也会回传此值。
•ONLINE-用户处于上线状态。
•AWAY–用户处于暂时离开状态(已有一定时间没活动)。
•NA-用户离开。
•DND-用户处于“请勿打扰”模式。
•SKYPEOUT–用户在SkypeOut联络人名单内。
Skype中文开发API文档
10
SKYPEME(协议2)
•LASTONLINETIMESTAMP-UNIX时间戳,仅供脱机用户查阅。例如:
USERmikeLASTONLINETIMESTAMP1078959579.
通话对象
就通话对象的属性发出通知。
语法:CALLIDPROPVALUE
ID–通话标识符。
PROP-属性名。适用属性:
•TIMESTAMP–通话的时间(UNIX时间戳)。例如:
CALL17TIMESTAMP1078958218
•PARTNER_HANDLE–例如:CALL17PARTNER_HANDLEmike
•PARTNER_DISPNAME–例如:CALL17PARTNER_DISPNAMEMike
Mann
10SkypeTechnologiesS.A13
•CONF_ID–如果CONF_ID>0,则为电话会议。例如:CALL17CONF_ID0
•TYPE–通话类型。例如:CALL17TYPEOUTGOING_PSTN.可设定的
TYPE值:
•INCOMING_PSTN–从PSTN接入的来电。
•OUTGOING_PSTN–向PSTN拨出的电话。
•INCOMING_P2P-从P2P接入的来电。
•OUTGOING_P2P–向P2P拨出的电话。
•STATUS–通话状态。例如:CALL17STATUSFAILED.可设定的
STATUS值:
•UNPLACED–从未打过的电话。
•ROUTING–通话正在转接中。
•EARLYMEDIA–
采用pstn,则可能在实际建立通话之前,已开始播放媒体。例如可以出现来
电铃声或待接留言(线路繁忙,请稍候)等。
•FAILED–
电话未接通。试图获得FAILUREREASON,以便了解详细原因。
•RINGING–电话铃正在响。
•INPROGRESS–通话正在进行中。
•ONHOLD–通话处于暂候状态。
•FINISHED–通话完毕。
•MISSED–未接到来电。
•REFUSED–来电被拒接。
•BUSY–对方电话占线,即已按下挂机键。
•CANCELLED(协议2)
•FAILUREREASON–例如:CALL17FAILUREREASON1(数字表示).
Skype中文开发API文档
11
SUBJECT–未使用。
•PSTN_NUMBER–例如:CALL17PSTN_NUMBER372123123.
•DURATION–例如:CALL17DURATION0.
•PSTN_STATUS–进行PSTN通话时从网关回传的错误字符串。
例如:CALL26PSTN_STATUS6500PSTNconnectioncreationtimeout.
•CONF_PARTICIPANTS_COUNT–
举行电话会议时非会议主持者的人数。可设定值:
•0–通话不属于电话会议。因为会议主持人CONF_PARTICIPANTS_COUNT
永远为0。
•1–通话是以前的电话会议。
•2,3,4–通话属于电话会议。
•CONF_PARTICIPANTn–
电话会议第n个参加者的句柄、通话类型与状态、以及参加者的姓名显示(仅限
非主持人)。例如:CALL59CONF_PARTICIPANT1echo123
INCOMING_P2PINPROGRESSEchoTestService.
11SkypeTechnologiesS.A14
MESSAGE物件
就讯息对象的属性发出通知。
语法:MESSAGEIDPROPVALUE
ID–讯息标识符。
PROP-属性名。适用属性:
•TIMESTAMP–讯息送出的时间(UNIX时间戳)。
例如:MESSAGE21TIMESTAMP1078958218
•PARTNER_HANDLE–例如:MESSAGE21PARTNER_HANDLEmike
•PARTNER_DISPNAME–例如:MESSAGE21
PARTNER_DISPNAMEMikeMann
•CONF_ID–未使用。
•TYPE–讯息类型。例如:MESSAGE21TYPETEXT.可设定的
TYPE值:
•AUTHREQUEST–请求授权。
•TEXT–即时消息或标题组。
•CONTACTS–联络人数据。
•UNKNOWN.—其他。
•STATUS–讯息状态。例如:MESSAGE21STATUSQUEUED.
可设定的STATUS值:
•SENDING–讯息正被发送。
•SENT–讯息已被发送。
•FAILED–
讯息发送失败。不妨发一个FAILUREREASON指令了解详细原因。
Skype中文开发API文档
12
RECEIVED–讯息已被接收。
•READ–讯息已被读取。
•IGNORED–讯息被忽略。
•QUEUED–讯息被列入待发队列。
•FAILUREREASON–例如:MESSAGE21FAILUREREASON1
(数字表示)。
•BODY–讯息内容主体。例如:MESSAGE21BODYHi,what'sup?
聊天讯息CHATMESSAGE对象
就聊天讯息对象的属性发出通知。
语法:CHATMESSAGEIDPROPVALUEID–聊天讯息标识符。
PROP-属性名。适用属性:
•TIMESTAMP–讯息送出的时间(UNIX时间戳)。
例如:MESSAGE21TIMESTAMP1078958218
•PARTNER_HANDLE–例如:CHATMESSAGE21
PARTNER_HANDLEmike
•PARTNER_DISPNAME–例如:CHATMESSAGE21
12SkypeTechnologiesS.A15
PARTNER_DISPNAMEMikeMann
•TYPE–讯息类型。例如:MESSAGE21TYPETEXT.可设定的
TYPE值:
•SETTOPIC–聊天题目变更。
•SAID–即时消息。
•ADDEDMEMBERS–邀请某人加入聊天。
•SAWMEMBERS–参加聊天者见过其他成员。
•CREATEDCHATWITH–已建立多人聊天。
•LEFT–有人已退出聊天;如某人不能被加入聊天,也会作通知。
•UNKNOWN.—其他。
•STATUS–讯息状态。例如:MESSAGE21STATUSQUEUED.
可设定的STATUS值:
•SENDING–讯息正被发送。
•SENT–讯息已被发送。
•RECEIVED–讯息已被接收。
•READ–讯息已被读取。
•LEAVEREASON–与LEFT类型讯息同时使用。例如:
CHATMESSAGE21LEAVEREASONUNSUBSCRIBE.可设定的
LEAVEREASON值:
•USER_NOT_FOUND–没有找到用户。
•USER_INCAPABLE–用户使用旧版Skype,因此无法加入多人聊天。
•ADDER_MUST_BE_FRIEND–
Skype中文开发API文档
13
•ADDED_MUST_BE_AUTHORIZED–
收件人仅接受授权用户发来的讯息,而发件人未经过授权。
•UNSUBSCRIBE–参加者已退出聊天。
•BODY–讯息内容主体。例如:CHATMESSAGE21BODYHi,what'sup?
•CHATNAME–含有讯息的聊天,例如:#test_3/$b17eb511457e9d20
•USERS–加入聊天的人。
CHAT对象(协议3)
就聊天对象的属性发出通知。
语法:CHATIDPROPVALUE
ID–聊天标识符。
PROP-属性名。适用属性:
•NAME–聊天标识符。例如:CHAT#test_l/$6a072ce5537c4044NAME
#test_l/$6a072ce5537c4044
•TIMESTAMP–聊天建立的时间。例如:CHAT
#test_l/$6a072ce5537c4044TIMESTAMP1078958218.
•ADDER–邀请目前用户加入聊天的用户。例如:CHAT
13SkypeTechnologiesS.A16
1078958218ADDERk6rberebane.
•STATUS–聊天状态。例如:CHAT#test_l/$6a072ce5537c4044
STATUSMULTI_SUBSCRIBED.可设定的STATUS值:
•LEGACY_DIALOG–老式即时消息。
•DIALOG–1对1聊天。
•MULTI_SUBSCRIBED–参加聊天者。
•UNSUBSCRIBED–退出聊天者。
•POSTERS–贴讯息的成员。例如:CHAT
#test_l/$6a072ce5537c4044POSTERSk6rberebanetest_3
•MEMBERS–所有来过的用户。例如:CHAT
#test_l/$6a072ce5537c4044MEMBERSk6rberebanetesttest_2
test_3
•TOPIC–聊天题目。例如:CHAT#test_l/$6a072ce5537c4044TOPIC
APItestimine
•CHATMESSAGES–这次聊天的所有讯息标识符。例如:CHAT
#test_l/$6a072ce5537c4044CHATMESSAGES34,35,36,38,39
•ACTIVEMEMBERS–留下来继续聊天的成员。例如:CHAT
#test_l/$6a072ce5537c4044ACTIVEMEMBERSk6rberebanetest_2
test_3
•FRIENDLYNAME–聊天窗口标题显示的姓名。例如:CHAT
#test_l/$6a072ce5537c4044FRIENDLYNAMETestTestXX|tereise
Skype中文开发API文档
14
通话记录
就通话记录变更并需要重载发出通知。在全部或部分通话记录被删除时出现。
语法:CALLHISTORYCHANGED
即时消息记录
就即时消息记录变更并需要重载发出通知。目前只在全部即时消息记录被删除时出现
。
语法:IMHISTORYCHANGED
联络人状态
如果有用户被加入联络人名单,或从中被删除,或已授权目前用户,即发出通知。
语法:USERusernameBUDDYSTATUSnumber
例如:用户已被加入联络人名单并有待授权。
USERpamelaBUDDYSTATUS2
用户已授权目前用户。
USERpamelaBUDDYSTATUS3
14SkypeTechnologiesS.A17
用户已从联络人名单内被删除。
USERpamelaBUDDYSTATUS1
7.8.4其他
可为Skype设定输入/输出装置。以空白名称设定装置时应选取Windows
默认装置。设定成功会得到AUDIO_*[装置名称]的确认。
目前正在运行的装置可以GETAUDIO_IN|AUDIO_OUT查询而知。
如默认装置被选取,AUDIO_*将回传一个空白回答。
声频输入设备
语法:AUDIO_IN[devicename](将淘汰)
SETAUDIO_IN[devicename]
例如:AUDIO_INSBAudigy2ZSAudio[DC00](将淘汰)
SETAUDIO_INSBAudigy2ZSAudio[DC00]
声频输出装置
语法:AUDIO_OUT[devicename](将淘汰)
SETAUDIO_OUT[devicename]
例如:AUDIO_OUTSBAudigy2ZSAudio[DC00](将淘汰)
SETAUDIO_OUTSBAudigy2ZSAudio[DC00]
7.9从装置发至Skype
7.9.1启动搜寻
SEARCHWHAT[target]请求与目标有关的具体信息类型。
如果没有指定目标,则会回传所有结果。
WHAT指定信息类型,可为下列的其中一项:USERS,
FRIENDS,CALLS,MISSEDCALLS,ACTIVECALLS,MESSAGES,
Skype中文开发API文档
15
协定3:CHATS,ACTIVECHATS,MISSEDCHATS,
RECENTCHATS,BOOKMARKEDCHATS,CHATMESSAGES,
MISSEDCHATMESSAGES).
注意:目前采用同步搜寻指令。今后可能会改变。
注意:下一项搜寻取代上一项搜寻。换言之,如果一项搜寻正在进行而又有一项搜寻被送
出,则第一项搜寻将终止搜寻。
搜寻朋友
语法:SEARCHFRIENDS
回传:如果找到配对吻合的结果,将回传一份用户名单。
15SkypeTechnologiesS.A18
例如:SEARCHFRIENDS
回传目前用户的所有朋友。结果举例:
USERStim,joe,mike
错误:ERROR67targetnotallowedwithSEARCHFRIENDS
目标是以指令SEARCHFRIENDS来指定的(如
"SEARCHFRIENDSmike")
搜寻用户
语法:SEARCHUSERSTARGET
TARGET–
用户名。如果搜寻字符串含"@",则搜寻按电子邮件地址进行(注意电子邮件地址必须100
%吻合)。否则,如果搜寻字符串为一个有效的Skype用户名(用户名必须有6至22个字符
,仅含以下符号:a-Z0-9-_,.
,而且必须以一个字母开头),该搜寻将按全名和用户名字段进行。所有其他搜寻仅按全
名字段进行。
回传:回传配对吻合的用户名。
例如:SEARCHUSERSabc
回传所有含"abc"的用户名。结果举例:
USERSabc,-abc-,abc10
错误:ERROR4emptytargetnotallowed
未指定目标用户名。
搜寻通话
语法:SEARCHCALLSTARGET
TARGET–
用户名。目标是可选项。如果指定目标,则会搜寻目前用户与目标用户之间的通话记录。
回传:回传一份通话标识符名单。
如果指定目标,则会回传目前用户与目标用户之间所有的以往通话标识符。
例如:SEARCHCALLSabc
结果举例:
CALLS15,16,39
Skype中文开发API文档
16
ERROR5SEARCHCALLS:目标无效
目标用户名中含禁用字符(如"SEARCHCALLS
!a")。用户名必须有6至22个字符并仅含以下符号:a-Z0-9-_,.。
搜寻进行中的通话
语法:SEARCHACTIVECALLS
列出所有通话卷标上显示的通话,如果主持电话会议,则包括所有参加会议的
成员。
16SkypeTechnologiesS.A19
回传:回传一份进行中的通话标识符名单。
例如:SEARCHACTIVECALLS
结果举例:
CALLS25,56
错误:ERROR3SEARCH:invalidWHAT
ACTIVECALLS拼字错误。
搜寻未接的来电
语法:SEARCHMISSEDCALLS
回传:回传一份未接来电的标识符名单,亦即显示处于MISSED状态的通话。
例如:SEARCHMISSEDCALLS
结果举例:
CALLS25,56
错误:ERROR29targetnotallowedwithMISSEDCALLS
使用SEARCHMISSEDCALLS时,不允许指定目标。
搜寻留言
语法:SEARCHMESSAGES[TARGET]
TARGET–
用户名。目标是可选项。如果指定目标,则会搜寻目前用户与目标用户之间的留言记录。
回传:回传一份讯息标识符名单。
如果指定目标,则会回传目前用户与目标用户之间所有的留言标识符。
例如:SEARCHMESSAGESabc
结果举例:
MESSAGES123,124
错误:ERROR29SEARCHMESSAGES:目标无效
目标用户名中含禁用字符(如"SEARCHMESSAGES!a")。用户名必须有6
至22个字符并仅含以下符号:a-Z0-9-_,.。
搜寻错过的留言
语法:SEARCHMISSEDMESSAGES
回传:回传一份留言标识符名单。
例如:SEARCHMISSEDMESSAGES
结果举例:
Skype中文开发API文档
17
错误:ERROR6targetnotallowedwithMISSEDMESSAGES
使用SEARCHMISSEDMESSAGES时,不允许指定目标。
搜寻聊天(协议3)
语法:SEARCHCHATS
回传:回传一份聊天标识符名单。
17SkypeTechnologiesS.A20
例如:SEARCHCHATS
结果举例:
CHATS#bitman/$jessy;eb06e65612353279,
#bitman/$jdenton;9244e98f82d7d391
错误:ERROR107targetnotallowedwithCHATS
使用SEARCHCHATS时,不允许指定目标。
搜寻进行中的聊天(协议3)
语法:SEARCHACTIVECHATS
回传:回传UI上开放的聊天标识符名单。
例如:SEARCHACTIVECHATS
结果举例:
CHATS#bitman/$jessy;eb06e65612353279,
#bitman/$jdenton;9244e98f82d7d391
错误:?
搜寻错过的聊天(协定3)
语法:SEARCHMISSEDCHATS
回传:回传一份含有未读内容的聊天标识符名单。
例如:SEARCHMISSEDCHATS
结果举例:
CHATS#bitman/$jessy;eb06e65612353279,
#bitman/$jdenton;9244e98f82d7d391
错误:?
搜寻最近的聊天(协议3)
语法:SEARCHRECENTCHATS
回传:回传一份最近的聊天标识符名单。
例如:SEARCHRECENTCHATS
结果举例:
CHATS#bitman/$jessy;eb06e65612353279,
#bitman/$jdenton;9244e98f82d7d391
错误:?
搜寻加标注的聊天(协定3)
语法:SEARCHBOOKMARKEDCHATS
Skype中文开发API文档
18
例如:SEARCHBOOKMARKEDCHATS
结果举例:
CHATS#bitman/$jessy;eb06e65612353279,
#bitman/$jdenton;9244e98f82d7d391
18SkypeTechnologiesS.A21
错误:?
搜寻聊天内容(协议3)
语法:SEARCHCHATMESSAGES[TARGET]
TARGET–用户名。目标是可选项。实际上用户从来都不用。
回传:回传一份聊天内容标识符名单。
例如:SEARCHCHATMESSAGESabc
结果举例:
CHATMESSAGES60,59
错误:ERROR29SEARCHCHATMESSAGES:目标无效
目标用户名中含禁用字符(如"SEARCHMESSAGES!a")。用户名必须
有6至22个字符并仅含以下符号:a-Z0-9-_,.。
搜寻错过的聊天(协定3)
语法:SEARCHMISSEDCHATS
回传:回传一份含有未读内容的聊天标识符名单。
例如:SEARCHMISSEDCHATS
结果举例:
CHATMESSAGES61,62
错误:ERROR29targetnotallowedwithMISSEDMESSAGES
使用SEARCH
MISSEDCHATMESSAGES时,不允许指定目标。
7.9.2索取参数值
GET指令是一般请求指令。一次可以用来求得任何已知对象的一种属性
(USER,CALL,MESSAGE,(PROTOCOL3:CHAT,
CHATMESSAGE))或一个一般变数(USERSTATUS,CONNSTATUS,
AUDIO_IN,AUDIO_OUT,CURRENTUSERHANDLE,
MUTE)。Skype则以适当的通知指令响应。
USER对象信息
语法:GETUSERUSERNAMEPROP
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,
Skype中文开发API文档
19
LASTONLINETIMESTAMP
回传:如配对吻合,则回传指定用户的属性值。
19SkypeTechnologiesS.A22
例如:GETUSERpamelaFULLNAME
结果举例:
USERpamelaFULLNAMEJaneDoe
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETUSE")。
ERROR10invalidprop
标识符和/或属性不存在或拼字错误(如"GETUSERPamelaFULLNAM")。
ERROR8invalidhandle
USERNAME不存在或含禁用字符(如
"GETUSER!HANDLE")。
注意GETUSERUSERNAMEONLINESTATUS将回传
"OFFLINE",除非目前用户经其他用户授权,可以查看他/她的上线状态。
CALL对象信息
语法:GETCALLIDPROP
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
回传:如找到该笔通话,则回传指定通话的属性值。
例如:GETCALL1594TYPE
结果举例:
CALL1594TYPEOUTGOING_P2P
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETCAL")。
ERROR11invalidcallid
标识符含非数字字符(如"GETCALL15!")。
ERROR12unknowncallid
当前用户通话记录内没有带指定标识符的通话。
ERROR13invalidprop
属性名不存在或拼字错误(如"GETCALL15TYP")。
ERROR71InvalidconferenceparticipantNO
Skype中文开发API文档
20
"GET
CALL15CONF_PARTICIPANTkala","GETCALL15
CONF_PARTICIPANT5")
注意下述情形,如果隐蔽的通话被看到,亦即SEEN=FALSE变为SEEN=TRUE,
例如用户在Skype内点选了错过的来电,Skype将会通知API。
20SkypeTechnologiesS.A23
MESSAGE对象信息
语法:GETMESSAGEIDPROP
ID–讯息标识符。
PROP-属性名。适用属性:
TIMESTAMP(UNIX时间戳),PARTNER_HANDLE,
PARTNER_DISPNAME,
CONF_ID(未使用),TYPE,STATUS,FAILUREREASON(数字表示),BODY
回传:如找到该讯息,则回传指定讯息的属性值。
例如:GETMESSAGE159TYPE
结果举例:
MESSAGE159TYPETEXT
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETMESAGE")。
ERROR14invalidmessageid
标识符含非数字字符(如"GETMESSAGE1a")。
ERROR15unknownmessageid
目前用户讯息记录内没有带指定标识符的讯息。
ERROR16invalidprop
属性名不存在或拼字错误(如"GETMESSAGE21TYP")。
用户状态
语法:GETUSERSTATUS
回传:回传目前用户的状态。可设定值:
UNKNOWN,OFFLINE,ONLINE,SKYPEME(协定l2),AWAY,
NA,DND,INVISIBLE.
例如:GETUSERSTATUS
结果举例:
USERSTATUSONLINE
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETUSESTATUS")。
连结状态
语法:GETCONNSTATUS
回传:回传目前连结状态。可设定值:
OFFLINE,CONNECTING,PAUSING,ONLINE.
Skype中文开发API文档
21
GETCONNSTATUS
结果举例:
CONNSTATUSONLINE
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETCONSTATUS")。
21SkypeTechnologiesS.A24
声频输入设备
语法:GETAUDIO_IN
回传:回传目前为Skype设定的声频输入设备。
例如:GETAUDIO_IN
结果举例:
AUDIO_INSBAudigy2ZSAudio[DC00]
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETAUDO_IN")。
声频输出装置
语法:GETAUDIO_OUT
回传:回传目前为Skype设定的声频输出装置。
例如:GETAUDIO_OUT
结果举例:
AUDIO_OUTSBAudigy2ZSAudio[DC00]
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETAUDO_OT")。
目前用户句柄
语法:GETCURRENTUSERHANDLE
回传:回传目前用户的句柄。
例如:GETCURRENTUSERHANDLE
结果举例:
CURRENTUSERHANDLEbanana
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETCURENTUSERHANDLE")。
静音状态
语法:GETMUTE
回传:回传静音状态:MUTEON或MUTEOFF。如果没有通话处于
INPROGRESS状态中,MUTE永远处于OFF。
例如:GETMUTE
结果举例:
MUTEOFF
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETMUT")。
Skype中文开发API文档
22
语法:GETPRIVILEGE[PRIVILEGE]
PRIVILEGE–特权名。适用特权:
SKYPEOUT
22SkypeTechnologiesS.A25
回传:如用户有特权,则回传TRUE,否则回传FALSE。
例如:GETPRIVILEGESKYPEOUT
结果举例:
PRIVILEGESKYPEOUTTRUE
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETPIVILEGE")。
ERROR40unknownprivilege
特权拼字错误或不存在(如"GETPIVILEGE
SKYPEOUT").
用户数据
语法:GETPROFILE[PROP]
PROP–数据属性。适用属性:
PSTN_BALANCE–按欧分计算的SkypeOut余额。
PSTN_BALANCE_CURRENCY-SkypeOut货币。只可能使用的货币是
欧元。
回传:PSTN_BALANCE_CURRENCY回传PROFILE
PSTN_BALANCE_CURRENCYEUR,假如用户有SkypeOut特权的话。
否则会回传PROFILEPSTN_BALANCE_CURRENCY。
例如:GETPROFILEPSTN_BALANCE
结果举例:
PROFILEPSTN_BALANCE109
例如:GETPROFILEPSTN_BALANCE_CURRENCY
结果举例:
PROFILEPSTN_BALANCE_CURRENCYEUR
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETPROFIIL")。
ERROR10InvalidPROP
属性拼字错误或不存在(如"GETPROFILE
PSTN_BALANSS")。
Skype版本
语法:GETSKYPEVERSION
回传:回传Skype版本信息。
例如:GETSKYPEVERSION
结果举例:
Skype中文开发API文档
23
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GET
SKYPVERSION")。
23SkypeTechnologiesS.A26
CHAT对象信息(协议3)
语法:GETCHATIDPROP
ID–聊天标识符。
PROP-属性名。适用属性:
NAME,TIMESTAMP,ADDER,STATUS,POSTERS,MEMBERS,TOPIC,
CHATMESSAGES,ACTIVEMEMBERS,FRIENDLYNAME
回传:如果配对吻合,则回传指定聊天的属性值。STATUS
值:
LEGACY_DIALOG,DIALOG,MULTI_SUBSCRIBED,
UNSUBSCRIBED
例如:GETCHAT#bitman/$jessy;eb06e65635359671NAME
结果举例:
CHAT#bitman/$jessy;eb06e65635359671NAME
#bitman/$jessy;eb06e65635359671
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETCHTA")。
ERROR105invalidchatname
CHATNAME参数错误。
ERROR106invalidPROP
属性名不存在或拼字错误。
CHATMESSAGE对象信息(协议3)
语法:GETCHATMESSAGEIDPROP
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
Skype中文开发API文档
24
值:
SENDING,SENT,RECEIVED,READ
例如:GETCHATMESSAGE60CHATNAME
结果举例:
CHATMESSAGE60CHATNAME
#bitman/$jessy;eb06e65631239671
24SkypeTechnologiesS.A27
错误:ERROR7GET:invalidWHAT
对象名不存在或拼字错误(如"GETCHTAMESSAGE60
CHATNAME")。
ERROR14invalidmessageid
聊天内容标识符含禁用符号(仅限使用数字记号)
(如"GETCHATMESSAGEa")
ERROR15unknownmessageid
未知聊天内容标识符。
ERROR16invalidPROP
属性名不存在或拼字错误(如"GETCHATMESSAGE60")。
7.9.3设定参数值
SET指令是一般更新指令。在语法上,该指令可用于对象(CALL,USER,
MESSAGE)和一般变数(USERSTATUS)。一次可以用来更新任何已知对象的一种
属性。Skype则响应以适当的通知指令作为一种确认方式。
注意:多数属性仅供「只读」。
CALL对象信息
语法:SETCALLIDPROPVALUE
ID–通话标识符(数字表示)。
PROP-属性名。可写入的通话属性:
•STATUS–给通话控制使用。适用值:
•ONHOLD–通话暂候
•INPROGRESS–接听来电或恢复通话
•FINISHED–挂断通话
•SEEN–设定来电已被看到,意思是某个错过的来电已被看到,并会
从错过的来电名单中删除。
•DTMF–将VALUE作为DTMF发送。VALUE中允许使用的符号是:
{0..9,#,*}.
•JOIN_CONFERENCE–将一个通话与另一个通话合并为电话会议。
VALUE为另一个通话的标识符。
回传:回传(新)属性值或错误信息。
例如:SETCALL15SEEN
结果举例:
Skype中文开发API文档
25
错误:ERROR18SET:invalidWHAT
对象名不存在或拼字错误(如"SETCAL")。
ERROR19invalidcallid
标识符含非数字字符(如"SETCALLA")。
ERROR20unknowncallid
25SkypeTechnologiesS.A28
带指定标识符的通话既不存在于目前用户通话记录之内,也不在进行中。
ERROR21unknownprop
设定值不正确或有拼字错误(如"SETCALL15STATUSONHOL")。
ERROR22cannothold
该通话不在进行中,所以无法暂候。
ERROR23cannotresume/answer
该通话不在进行中,所以无法恢复/接听。
ERROR24cannothangup
该通话不在进行中,所以无法挂断。
ERROR25invalidWHAT
属性名不存在或拼字错误(如"SETCALL15STATUONHOLD")。
ERROR72Cannotcreateconference
建立电话会议指令,如"SETCALL65JOIN_CONFERENCE
66",因某些原因而失败。
MESSAGE对象信息
语法:SETMESSAGEIDPROP
ID–讯息标识符(数字表示)。
PROP-属性名。可写入的讯息属性:
•SEEN–
指该条错过的即时消息已被看过,并会从错过的讯讯清单中删除。如果允许相关用
户组使用自动弹出功能,UI将自动设定该值。
回传:回传(新)属性值或错误信息。如果设定值没有改变,则回传目前的属性值。
例如:SETMESSAGE1578SEEN
结果举例:
MESSAGE1578STATUSREAD
错误:ERROR18SET:invalidWHAT
对象名不存在或拼字错误(如"SETCAL")。
ERROR30invalidmessageid
标识符含非数字字符(如"SETMESSAGEA")。
ERROR31unknownmessageid
目前用户讯息记录内没有带指定标识符的信息。
ERROR32invalidWHAT
Skype中文开发API文档
26
"SETMESSAGE21SEN")。
用户状态
语法:SETUSERSTATUSVALUE
VALUE-用户状态值。适用值:
•ONLINE–设定目前用户处于「上线」状态。
•OFFLINE–设定目前用户处于「脱机」状态。
•SKYPEME–设定目前用户处于"SkypeMe"状态(协议2)。
26SkypeTechnologiesS.A29
•AWAY–设定目前用户处于「暂时离开」状态。
•NA–设定目前用户处于「离开」状态。
•DND–设定目前用户处于「请勿打扰」状态。
•INVISIBLE–设定目前用户处于「隐藏」状态。
回传:回传(新)属性值或错误信息。
例如:SETUSERSTATUSINVISIBLE
结果举例:
USERSTATUSINVISIBLE
错误:ERROR18SET:invalidWHAT
USERSTATUS指令不存在或拼字错误(如"SETCAL")。
ERROR28SETUSERSTATUS:unknownstatus
未知或有拼字错误的用户状态值(如"SET
USERSTATUSRICH")。
静音状态
语法:SETMUTEVALUE
VALUE–设定打开或关闭静音。通话处于INPROGRESS状态时有效。
适用值:
•ON–设定静音开启
•OFF–设定静音关闭
回传:回传(新)属性值或错误信息。
例如:SETMUTEON
结果举例:
MUTEON
错误:ERROR18SET:invalidWHAT
静音指令不存在或拼字错误(如"SETMUT")。
ERROR33invalidparameter
未知或有拼字错误的静音值(如"SETMUTE
O")。
聊天内容状态
语法:SETCHATMESSAGEIDSEEN
ID–聊天内容标识符。
Skype中文开发API文档
27
例如:SETCHATMESSAGE61SEEN
结果举例:
CHATMESSAGE61STATUSSEEN
错误:ERROR18SET:invalidWHAT
CHATMESSAGE指令不存在或拼字错误(如"SETCHATMESSAGE")。
27SkypeTechnologiesS.A30
ERROR31unknownmessageid
未知聊天内容标识符。
ERROR30invalidmessageid
聊天内容标识符有拼字错误,即含禁用符号(仅限使用数字记号)(如"SET
CHATMESSAGEaSEEN")
ERROR32invalidWHAT
所设聊天内容状态无效(如"SETCHATMESSAGE60
SEENA")
7.9.4通话
语法:CALLTARGET[,TARGET2,TARGET3...]
TARGET–通话目标。如有多个目标,则会建立电话会议。
适用目标类型:
•USERNAME–用户名,如"pamela"
•PSTN–电话号码,如""
•SPEEDDIALCODE–1或2个字符的快速拨号代码
回传:回传通话标识符和状态。
例如:CALLpamela
结果举例:
CALL49STATUSROUTING
CALL49STATUSRINGING
CALL49STATUSREFUSED
错误:ERROR34invaliduserhandle
找不到目标用户名/电话号码(如"CALL")。
ERROR39userblocked
并非接不通电话,而是错误使用API—试图与被封锁的用户通话。
ERROR73toomanyparticipants
向4人以上启动通话(如"CALLtest,test_2,test_3,test_4,test_5")。
经由API拨号通话时,Skype窗口为焦点窗口。可以经由API使用快速拨号。
通话错误代码
代码说明:可能原因
1CALL181FAILUREREASON1其他类错误。
2CALL181FAILUREREASON2用户/电话号码
Skype中文开发API文档
28
置码(如,
正确号码为
"",
28SkypeTechnologiesS.A31
"+3725555555";错误号
码为"3725555555")。
3CALL181FAILUREREASON3用户脱机。
4CALL181FAILUREREASON4找不到代理服务器
5CALL181FAILUREREASON5呼叫中断。
6CALL181FAILUREREASON6找不到编解器。
7CALL181FAILUREREASON7音响输入/输出错误。
8CALL181FAILUREREASON8遥控
音响装置问题。
9CALL181FAILUREREASON9通话被接收方封锁。
10CALL181FAILUREREASON10接收方未被列为朋友。
11CALL181FAILUREREASON11目前用户未经过
接收方授权。
12CALL181FAILUREREASON12录音错误。
7.9.5发送讯息
语法:MESSAGEUSERNAMETEXT
•USERNAME–接收讯息方的用户名,如"pamela"
TEXT–讯息内容主体,如"Pleasecallme"
回传:回传讯息标识符和状态。
例如:MESSAGEpamelaPleasecallme
结果举例:
MESSAGE136STATUSSENDING
MESSAGE136STATUSSENT
错误:ERROR26invaliduserhandle
目标用户名不存在或含禁用符号(如
"MESSAGE")
MESSAGE138STATUSRECEIVED
如讯息发送失败,则会收到LEFT类型讯息。
讯息指令LEAVEREASON说明发送失败的原因。
28SkypeTechnologiesS.A32
7.9.6打开对话框
新增联络人
语法:OPENADDAFRIEND
例如:OPENADDAFRIEND
Skype中文开发API文档
29
错误:ERROR69invalidopenwhat
打开目标不存在或有拼字错误(如"OPENADDFRIEND")。
指令如成功将返回API。
即时消息
语法:OPENIMUSERNAME[MESSAGE]
USERNAME–接收讯息方的用户名,如"pamela"
MESSAGE–讯息内容主体,如"Pleasecall
me"。该值将被预先填入即时消息对话窗口。
例如:OPENIMjdentonTesting
弹出实时息息对话框,里面会有已填好的文字"Testing"作为其讯息内容。
错误:ERROR69invalidopenwhat
打开目标不存在或有拼字错误(如"OPENIN")。
ERROR70SETㄩinvalidhandle
用户名不存在或含禁用符号
指令如成功将返回API。
聊天
语法:OPENCHATTARGET[,TARGET2,TARGET3...]
TARGET–
加入聊天的用户名,如"pamela",如仅提供一个TARGET,则会打开一个对话框
回传:指令如成功则回传CHATidSTATUSSUBSCRIBED。
例如:OPENCHATjdenton,test_bi,pamela
"CHAT#name/$843934STATUS
SUBSCRIBED",聊天窗口将弹出,指定的成员列在窗口右边。
错误:ERROR69invalidopenwhat??.
ERROR70SETㄩinvalidhandle
用户名不存在或含禁用符号
指令如成功将返回API。
7.9.7Skype窗口焦点控制
语法:FOCUS
例如:FOCUS
29SkypeTechnologiesS.A33
把Skype窗口放在上面。
错误:ERROR2unknowncommand
FOCUS指令不存在或有拼字错误(如"FCOUS")。
7.9.8检测连结
语法:PING
回传:如与Skype接通,则回传PONG。
例如:PING
Skype中文开发API文档
30
错误:ERROR2unknowncommand
PING指令不存在或有拼字错误(如"PNIG")。
7.10错误代码
•ERRORCODE[DESC]
每次Skype发现包括语法不正确的指令、内在不一致性等错误条件时,就会对错误发出回
应。CODE是专门用来辨识错误条件的数字,而DESC则为选择性情况概述,以英文编写
。
目前被定义的错误代码如下:
代码说明:可能原因
1一般语法错误找不到指令(如,将""作为指令发出)
2未知指令指令拼字不正确(如,发出"GRT"而非"GET"
指令)
3搜寻:未知WHAT值找不到搜寻目标或有拼字错误
4不允许空白目标
5搜寻CALLS:目标无效禁用字符(如,"!","#","¤","€",""
(空格)
等)被用在目标用户名内(如,"SEARCHCALLS!a")。
6目标禁用于如,"SEARCHMISSEDCALLS
MISSEDCALLSecho123
7GET:无效WHAT值找不到对象/属性名或有拼字错误
8用户句柄无效找不到USERNAME或含有一个禁用字符
(如,"GETUSER!HANDLE")。
9未知用户
30SkypeTechnologiesS.A34
10PROP无效找不到属性名和/或标识符
或有拼字错误
11通话标识符无效找不到通话标识符或有拼字错误
(必须为数值)
12未知通话使用了不存在的通话标识符
13PROP无效回传到GET指令
CALLid
PARTNER_DISPLAYNAME.属性名不存在
或拼字错误
14讯息标识符无效GET–找不到讯息标识符或
有拼字错误(必须为数值)
15未知信息不存在的讯息标识符被用在
GET指令中
16PROP无效回传到GET指令
Skype中文开发API文档
31
PARTNER_DISPLAYNAME。找不到属性名
或有拼字错误
17不在使用中
18SET:无效WHAT值找不到属性名或
有拼字错误
19通话标识符无效找不到通话标识符或有拼字错误
(必须为数值)
20未知通话使用了不存在的通话标识符
21未知/禁用通话属性SETCALL值不正确或有拼字错误(如,
"SETCALL15STATUS
ONHOL")
22该通话现在无法暂候试图使不在进行中的通话暂候
23该通话现在无法恢复试图恢复/接听不在进行中的通话。
31SkypeTechnologiesS.A35
24无法挂断非使用中的通话试图挂断不在进行中的通话
25未知WHAT值找不到属性名或有拼字错误(如,"SET
CALL15STATU
ONHOLD")
26用户句柄无效找不到目标用户名或
含有禁用
符号(如"MESSAGE")
27无效版本号码
28未知用户状态未知或有拼字错误的
用户状态值(如,"SET
USERSTATUSRICH")。
29目标禁用于如,"SEARCHMISSEDMESSAGES
MISSEDMESSAGESecho123"
30讯息标识符无效SET–找不到讯息标识符或有拼字错误
(必须为数值)
31未知讯息标识符不存在的讯息标识符被用在
SET指令中
32无效WHAT值找不到属性或其中有拼字错误
33SETMUTE参数无效未知或有拼字错误的
静音值(如,"SETMUTEO")
34CALL用户句柄无效找不到目标用户名/电话号码
(如,"CALL")
35没有连结
36没有上线
Skype中文开发API文档
32
没有连结
38没有上线
39被用户封锁目的地用户被致电人封锁。也会出现在试
图致电给被封锁用户时。
32SkypeTechnologiesS.A36
40未知特权特权有拼字错误或不存在(如,
"GETPRIVILEGE
SKYPEOUT")。
41无通话状态处于闲置状态时,
试图发送DTMF
42无效DTMF代码发出无效DTMF代码。DTMF代码的
有效符号为{0..9,#,*}
43无法发送空白讯息被发送的讯息为空白讯息,
如,"MESSAGEecho123"。
66没有连结没有链接Skype,即用户
状态为"LOGGEDOUT"
67目标禁用于SEARCHFRIENDSSEARCH
FRIENDS有一个参数
68拒绝存取
69打开对象无效找不到OPEN指令或
TARGET拼字错误,如"OPENIN"
70无效句柄OPEN即时消息参数
USERNAME不存在或含禁用符号
71会议参加人数无效会议参加人的
数字过大或
无效。
72无法建立会议
73参加人太多召集四人以上
参加会议。
91内部错误无法拨打急救
号码
92内部错误所拨号码非有效
PSTN号码
93内部错误Skype名无效。
32SkypeTechnologiesS.A37
94内部错误无法拨打自己的号码
95内部错误目的地用户
在拨打后立即被致电人封锁
96内部错误拨出的电话处于
Skype中文开发API文档
33
状态
97内部错误内部错误
98内部错误内部错误
99内部错误内部错误
100内部错误内部错误
101内部错误打给目的地用户的电话
已经在通话中
103无法暂候内部错误
104无法恢复通话内部错误
105无效聊天名聊天名不存在或拼字错误
106PROP无效找不到属性名或
CHAT或CHATMESSAGE有拼字错误
107目标禁用于CHATS不允许设定参数于指令SEARCHCHATS
9901内部错误
7.11操作示范
->装置发至Skype
<-Skype发至装置
;说明
NB!实际传输采用utf-8编码。
;装置自行引进并说明已经就绪
->NAMEHandSet1.0
->PROTOCOL1
33SkypeTechnologiesS.A38
;->READY(尚未建置)
;Skype接受/启动装置
<-PROTOCOL1
;<-ENABLEYES(尚未建置)
;装置请求朋友名单
->SEARCHFRIENDS
;Skype以名单回应
<-USERSkaido,taavet,toivo
;装置请求朋友名单内所有人的全名
->GETUSERkaidoFULLNAME
->GETUSERtaavetFULLNAME
->GETUSERtoivoFULLNAME
;Skype以所求数据响应...
<-USERkaidoFULLNAMEKaidoKΣrner
<-USERtaavetFULLNAME
Skype中文开发API文档
34
-USERtoivoFULLNAMEToivoAnnus
;装置启动与kaido通话程序
->CALLkaido
;Skype显示各种接通状态
<-CALL122211STATUSROUTING
;同一时间,taavet脱机
<-USERtaavetONLINESTATUSOFFLINE
<-CALL122211STATUSRINGING
;Kaido接听电话
<-CALL122211STATUSINPROGRESS
;通话在进行中..
;装置现在决定挂断电话
->SETCALL122211STATUSFINISHED
;Skype确认..
<-CALL122211STATUSFINISHED
7.12操作示范:来电
->装置发至Skype
<-Skype发至装置
;说明
;Skype发出有来电的通知
<-CALL1594STATUSRINGING
;装置查询来电类型
->GETCALL1594TYPE
<-CALL1594TYPEINCOMING_P2P
;装置查询致电人的用户名,然后再查全名
->GETCALL1594PARTNER_HANDLE
34SkypeTechnologiesS.A39
<-CALL1594PARTNER_HANDLEcaller
->GETUSERcallerFULLNAME
<-USERcallerFULLNAMEanswerme
;装置表示接受(接听来电)
->SETCALL1594STATUSINPROGRESS
;Skype确认
<-CALL1594STATUSINPROGRESS
;Skype通告通话持续时间(在通话结束前完成)
<-CALL1594DURATION5
;Skype通告对方已挂断电话
<-CALL1594STATUSFINISHED
8API传输层
Skype中文开发API文档
35
API都没有联结在任何具体的传输层上。
8.1Windows讯息的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必须也要传送出去。不允许在一个讯息封包
内含多个讯息。传送的字符串长度不受此协议限制。
35SkypeTechnologiesS.A40
Skype在收到该讯息之后不会再封锁链接。如采用SendMessage()
发出的讯息失败,就表示通讯管道被切断。
注意:讯息处理结果(同时包括SkypeControlApiMessage和copydata)
不得为零,否则会被Skype视作连结中断!
API客户端装置处理API讯息的时间不得超过1秒钟,如超过1秒钟连结会被切断。使用PI
NG指令测试链接状态。为了便于在开发时进行程序排错,可将机码
APITimeoutDisabled(DWORDvalue,0=timeoutenabled1=timeout
disabled)填入
HKCUSoftwareSkypePhoneUI–使Skype不再强制执行1秒钟超时限制。
8.2Windows讯息的API传输:常见问题解答
Skype能保持我的SendMessage()指令有效多久?
Skype根本不保持SendMessage()指令继续有效(在正常情况下)。
应用程序应当等多久,才能重新发出指令?
多数指令应能在数微秒之内回传,搜寻指令需要的时间更久。每隔数秒可用PING指令测
试一下通讯管道是否畅通。
Skype中文开发API文档
36
SendMessage()?
可以,但由于窗口本身会强迫这些线程合并为单一线程,因此没有真正的差别。
8.3Windows讯息的API传输:将被淘汰
启用通讯时,客户端应向系统中所有窗口广播窗口讯息('SkypeControlAPI'),
并用wParam参数指定本身窗口句柄。为了回应,Skype向指定的句柄发出同样的讯
息,并用wParam参数指定通话窗口句柄。现在双方都知道发送讯息的窗口句柄了。
客户端应继续以'SkypeControlAPI'讯息轮询Skype,不断检查它是否仍处于可供使用的
连结状态。__
更多推荐
skype账号注册
发布评论