Skip to content

Instantly share code, notes, and snippets.

@koukuko
Last active August 15, 2024 06:02
Show Gist options
  • Save koukuko/eb375cee7883764e01fb213b1ace4727 to your computer and use it in GitHub Desktop.
Save koukuko/eb375cee7883764e01fb213b1ace4727 to your computer and use it in GitHub Desktop.
发送XML消息的格式

QQ的XML消息格式整理

QQ可以使用xml的方式发送消息,以下为了方便描述统称为卡片。

发送方式

通过机器人的API进行发送xml即可,但是如果选择发送xml,那么其他如[image=xxx][@xxx]这些命令就不可使用了。整个消息只有XML。

基本结构

xml主要由msg,item,source这3部分组成

<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<!-- msg 卡片的基本属性 只可以有1个  -->
<msg flag='1' serviceID='1' brief='foobar' templateID='1' action='plugin' >
	<!-- item 卡片的内容 可重复使用  -->
	<item layout="0">
		<title>layout="0"</title>
        <summary>title,summary,picture各占一行均可重复使用,按照Element顺序显示</summary>
        <picture cover="http://placekitten.com/250/100"/>
	</item>
	<!-- source 卡片的来源,即卡片的角标 只可以有1个  -->
	<source name="koukuko" icon="https://avatars2.githubusercontent.com/u/3916013?v=3&s=40" url="" action="plugin" appid="-1"/>
</msg>

<msg>

attribute

attribute value description
flag 0,1,2,3 0默认,可以转发和收藏
1不能转发
2不能收藏
3不能收藏也不能转发
serviceID 1 -
brief {String} 卡片的简介,会显示于消息提示里
templateID 1,12345 -
action webplugin -
url {String} 点击后打开的url

<item>

attribute

attribute value description
layout 0,1,2,3,4,5,6 排版方式
bg 0,1,2 <item>的背景颜色
0默认透明
1蓝色
2红色
手机端支持如#ff0000的自定义颜色

layout

layout="0" 顺序自由排版
<?xml version="1.0" encoding="utf-8"?>
<msg templateID="12345" action="web" brief="TEST" serviceID="1" url="http://koukuko.com">
	<item layout="1">
		<title>layout="1"</title>
        <summary>title,summary,picture各占一行均可重复使用,按照Element顺序显示</summary>
        <picture cover="http://placekitten.com/250/100"/>
	</item>
</msg>

layout="1" -

会留空,用意不明

layout="2" 左中图右文字
<?xml version="1.0" encoding="utf-8"?>
<msg templateID="12345" action="web" brief="TEST" serviceID="1" url="http://koukuko.com">
	<item layout="2">
		<title>layout="2"</title>
        <summary>左侧有1:1封面右侧正文</summary>
        <picture cover="http://placekitten.com/100/100"/>
	</item>
</msg>

layout="3" 三图
<?xml version="1.0" encoding="utf-8"?>
<msg templateID="12345" action="web" brief="TEST" serviceID="1" url="http://koukuko.com">
	<item layout="3">
        <picture cover="http://placekitten.com/100/100"/>
		<picture cover="http://placekitten.com/200/200"/>
		<picture cover="http://placekitten.com/300/300"/>
		<title>layout="3"</title>
        <summary>固定显示2-3个封面,不显示title,picture必须要在最前面</summary>
	</item>
</msg>

layout="4" 左小图右文字
<?xml version="1.0" encoding="utf-8"?>
<msg templateID="12345" action="web" brief="TEST" serviceID="1" url="http://koukuko.com">
	<item layout="4">
		<title>layout="4" 左侧有1:1小封面右侧正文 不显示summary</title>
        <summary>左侧有1:1小封面右侧正文</summary>
        <picture cover="http://placekitten.com/100/100"/>
	</item>
</msg>

layout="5" 标题在图片之上且有黑底
<?xml version="1.0" encoding="utf-8"?>
<msg templateID="12345" action="web" brief="TEST" serviceID="1" url="http://koukuko.com">
	<item layout="5">
		<title>layout="5" 标题在图片之上 不显示summary</title>
        <summary>标题在图片之上</summary>
        <picture cover="http://placekitten.com/400/200"/>
	</item>
</msg>

layout="6" -

和1 类似

element

<item>中可选的element

<title>

标题

attribute

<picture>

封面图片

attribute
attribute value description
cover ${String} 图片URL
``````

正文文本

attribute
attribute value description
size ${Int} 文字大小(仅手机端支持)
color ${Int16_hex} 文字颜色 如:#000000
<button>

按钮,按钮只有手机端可见,手机端下一排可现实两个按钮,必须使用layout="3"的排版才可以正常使用,但是``layout="3"```的排版在PC上无论如何都会显示出3个封面图,因此不推荐使用。

attribute
attribute value description
action appplugin appAPP
plugin插件
p_actionData {String} -
a_actionData {String} 安卓下的schema
i_actionData {String} iOs下的schema
<br/>

换行

<hr/>

分割线

attribute
attribute value description
hidden {Boolean} 显示或隐藏分割线

<source>

attribute

attribute value description
url {String} 点击角标后打开的url
icon {String} 角标图片的地址
name {String} 角标的名称
action appplugin app点击角标打开APP
plugin插件
appid {Int} http://open.mobile.qq.com/ 下的appid
p_actionData {String} -
a_actionData {String} 安卓下的schema
i_actionData {String} iOs下的schema
@biuuu
Copy link

biuuu commented Apr 15, 2016

cmd exit 0

@Gao-Chuan
Copy link

用哪个api可以发送xml?没搜到。。

@VOID001
Copy link

VOID001 commented Feb 2, 2017

用哪个api可以发送xml?没搜到。。

同没找到, 我自己写的SmartQQ Client只能发纯文本消息,没法发XML

@tianlitao
Copy link

同问,如何才能发送xml

@gehongyan
Copy link

现在只有layout 2 和 4 能发出去😭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment