lele @Blog

--终身学习
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Msn Messager用户签名指令参考

Posted on 2008-02-24 22:45  kevinhgy  阅读(388)  评论(1)    收藏  举报

Msn Messenger协议之UBX/UUX

UUX/UBX指令应该是在MSNP11中新加入的,在最近的一个MSN Messenger 7.0测试版中体现了出来,即Personal Message。

在最新的测试版中,可以设置Personal Message,比如昵称设为“张三”,Personal Message设为“忙着呢!”,那么在好友的列表中会显示成“张三-忙着呢!”。

Msn Messenger还可以将Window Media Player和Msn Messenger集成起来,只要勾上一个选项,则Messenger会将当前Media Player中播放曲目做为登陆用户的Personal Message,在好友的列表上就会显示成“张三(耳塞的图标)歌曲信息”。

这是一个很有意思的功能,可以看得出来,微软正在借助于IM做其产品的整合。所以虽然MSN协议是不复杂(我原未想通Msn Messenger这个东西的发布周期怎么会有这么长),但是将不同的产品整合进来所花费的时间和代价是不少的。

这个功能在MSN协议上的体现就是UUX指令,指令格式为:UUX transactionId payloadLen\r\npayload。其中payload是一个XML文档:<Data><PSM>personal message</PSM><CurrentMedia>播放曲目信息</CurrentMedia></Data>。

PSM元素中的值即使设置好的Personal message,CurrentMedia元素中的值即是歌曲信息,CurrentMedia中曲目信息是以"\0"做为分隔的,第一位是"Music",第二位尚不清楚,目前都是"0",第三位都是"{0} - {1}",第四位是歌曲名称,第五位是艺术家,第六位是专辑名称,如果播放的ASF系列的音乐,第七位是其Metadata library object中的WM/WMContentID。

如设置personal message为hello,当前播放的歌曲名称是test,艺术家是artist,专辑名称是album,则生成的payload为:

<Data><PSM>hello</PSM><CurrentMedia>\0Music\00\0{0} - {1}\0test\0artist\0album\0\0</CurrentMedia></Data>

UBX是UUX的通知指令,比如我发送UUX改变了我的设置,那么我的好友接收到的就是UBX指令,格式与UUX相同。