#########
消息格式
#########
本节定义了在 :doc:`api_msg` 一节中,收/发消息的消息接口所涉及的消息格式。
消息类型
*********
全媒体系统支持的消息类型有:
* 系统命令消息
* 文本消息
* 图片消息
* 声音消息
* 文件消息
消息类型在 ``MsgType`` 属性中指定:
=========== ========================
类型标识符 说明
=========== ========================
event 事件通知消息
text 文本消息
image 图片消息
voice 声音消息
file 文件消息
=========== ========================
消息内容
*********
消息的内容在 ``Content`` 属性中指定。
.. attention:: 坐席的IM界面完全按照本文定义的消息格式,对坐席展示客户输入的消息,以及生成坐席输入的消息。请APP开发者不要自行扩展消息格式。
以下定义不同消息类型下, ``Content`` 属性的不同格式:
事件通知消息
============
该类型的消息用于APP客户端向全媒体系统发送特殊的事件或者命令
这些请求不会被当作聊天文字,而是被当作命令。如 **请求人工服务** ::
{
"MsgType": "event.CLICK.RG",
}
当 ``MsgType`` 属性值为 ``event.CLICK.RG`` 时,全媒体系统会进行人工服务的排队。
文本消息
========
文本消息应被原样的展现给坐席与客户,除了 `HTML标签`_ 与 `表情转义符`_ 。
如::
{
"MsgType": "text",
"Content": "[微笑] 亲,你好!"
}
APP 开发者请注意HTML标签、特殊字符以及JSON转义字符的问题。
HTML标签
--------
```` 标签,可用于在文本中插入超链接
如:
.. code-block:: html
你好,戳这里访问百度 ,呵呵
此时,应向用户呈现的效果是:
----
.. raw:: html
你好,戳这里访问百度 ,呵呵
----
表情转义符
----------
方括号内具有表情关键字的文本,被视作表情转义符。
例如::
[微笑]
被视作微笑表情转义符,此时应向客户端显示:
----
.. raw:: html
----
同理,以下文本::
我[晕],这下[糗大了]!
应该被显示为:
----
.. raw:: html
我,这下!
----
APP开发者可在此下载我们采用的默认表情素材:`下载地址 <_static/qqemoji.zip>`_ )
该压缩包中,每个表情图片都是一个png文件,文件名是数字。
表情与文件名的对应关系如下表所示:
.. literalinclude:: _static/qqemoji_map.txt
:language: js
APP开发者也可以选择其他素材作为表情,但是必须遵守转义规则,且表情转义符必须按照上表的定义。
图片消息
==========
消息内容是图片文件的超链接地址。
如::
{
"MsgType": "image",
"Content": "xxxx/xxxx.jpg"
}
消息发送程序必须保证该地址可被访问。
文件大小: <120KB
文件格式:JPG
声音消息
========
消息内容是声音文件的超链接地址。
如::
{
"MsgType": "voice",
"Content": "xxxx/xxxx.amr"
}
消息发送程序必须保证该地址可被访问。
文件大小: <2M
播放长度: <60s
文件格式:AMR, MP3
文件消息
========
消息内容是文件的超链接地址。
如::
{
"MsgType": "voice",
"Content": "xxxx/xxxx.zip"
}
消息发送程序必须保证该地址可被访问。
消息附件
*********
当消息类型是图片、文件、声音时,发送一方需要将附件 **预先** 通过 **FTP 上传** 到全媒体系统的文件服务器,并在消息中填写文件路径,为了避免名称冲突,应使用UUID作为文件名。
为了方便备份和文件见管理,请 IM 的接入服务使用如下的文件格式::
////.
例如,APPID为1003的接入服务要发送一个JPEG图片,它应该将该图片上传到FTP服务器,上传后的文件名形如 ``1001/2014/12/25/01b626e8-a10f-11e4-97d6-a424f507d784.jpg`` ,这个文件路径名同时也是消息体中 ``Content`` 字段填写的内容。坐席将通过HTTP协议从文件服务器下载该路径所对应的文件。
同理,在接收附件时,APP通过HTTP协议从文件服务器下载 ``Content`` 对应的附件。
.. attention:: APP服务器通过 **FTP** 协议向文件服务器上传文件。为了便于客户端/浏览器访问附件,文件服务器同时也提供了 **HTTP** 访问功能。
.. tip:: 文件服务器的 FTP 与 HTTP 访问地址可能存在前缀, APP 应可设置这些地址的前缀,以及 FTP 的地址、端口、用户、密码。
.. warning:: 文件服务器上的附件必须保留其真实的后缀名。