====== 发送消息 ======
----
聊天相关 API。
===== 流程说明 =====
* 发送文本/透传消息:直接编辑内容发送。
* 发送图片/语音/视频消息:需要先上传这三类文件,从接口返回值中获取到相应的参数,按照 API 要求编辑到消息体中然后的发送。
===== 发送文本消息 =====
给一个或者多个用户,或者一个或者多个群组发送消息,并且通过可选的 from 字段让接收方看到发送方是不同的人。同时,支持扩展字段,通过 ext 属性,APP 可以发送自己专属的消息结构。
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试,同时用户消息+扩展字段的长度在40k字节以内。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type" : "users", // users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
"target" : ["u1", "u2", "u3"], // 注意这里需要用数组,数组长度建议不大于20,即使只有一个用户,
// 也要用数组 ['u1'],给用户发送时数组元素是用户名,给群组发送时
// 数组元素是groupid
"msg" : {
"type" : "txt",
"msg" : "hello from rest" //消息内容,参考[[start:100serverintegration:30chatlog|聊天记录]]里的bodies内容
},
"from" : "jma2" //表示消息发送者。无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
}
curl 示例:
curl -X POST -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/messages" -d '{"target_type" : "users","target" : ["stliu1", "jma3", "stliu", "jma4"],"msg" : {"type" : "txt","msg" : "hello from rest"},"from" : "jma2"}'
Response 示例:
{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {},
"uri": "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities": [],
"data": {
"stliu1": "success",
"jma3": "success",
"stliu": "success",
"jma4": "success"
},
"timestamp": 1404932446668,
"duration": 110,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}
===== 发送图片消息 =====
给一个或者多个用户,或者一个或者多个群组发送消息,并且通过可选的 from 字段让接收方看到发送方是不同的人。同时,支持扩展字段,通过 ext 属性,APP 可以发送自己专属的消息结构。
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type" : "users", //users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
"target" : ["u1", "u2", "u3"],// 注意这里需要用数组,数组长度建议不大于20,即使只有一个用户,
// 也要用数组 ['u1'],给用户发送时数组元素是用户名,给群组发送时
// 数组元素是groupid
"msg" : { //消息内容
"type" : "img", // 消息类型
"url": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/55f12940-64af-11e4-8a5b-ff2336f03252", //成功上传文件返回的UUID
"filename": "24849.jpg", // 指定一个文件名
"secret": "VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_", // 成功上传文件后返回的secret
"size" : {
"width" : 480,
"height" : 720
}
},
"from" : "jma2" //表示消息发送者,无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
}
curl 示例:
curl -X POST -i 'https://a1.easemob.com/easemob-demo/chatdemoui/messages' -H 'Authorization: Bearer YWMtsFVigGSuEeSTc7k5183Z5QAAAUqzeFx_9IjRch-ZxNbIlBIvx_4GWvzheSU' -d '{"target_type":"users","target":["l1k4vpllxp"],"from":"jma2","msg":{"type":"img","filename":"24849.jpg","secret":"VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_","url":"https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/55f12940-64af-11e4-8a5b-ff2336f03252"},size:{"width":480,"height":720}}
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : {
"l1k4vpllxp" : "success"
},
"timestamp" : 1415166497129,
"duration" : 12,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 发送语音消息 =====
发送语音文件,需要先上传语音文件,然后再发送此消息。(URL 中的 UUID 和 secret 可以从上传后的 response 获取)
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type" : "users", //users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
"target" : ["testd", "testb", "testc"],// 注意这里需要用数组,数组长度建议不大于20,即使只有一个
// 用户或者群组,也要用数组形式 ['u1'],给用户发送
// 此数组元素是用户名,给群组发送时数组元素是groupid
"msg" : { //消息内容
"type": "audio", // 消息类型
"url": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/1dfc7f50-55c6-11e4-8a07-7d75b8fb3d42", //成功上传文件返回的UUID
"filename": "messages.amr", // 指定一个文件名
"length": 10,
"secret": "Hfx_WlXGEeSdDW-SuX2EaZcXDC7ZEig3OgKZye9IzKOwoCjM" // 成功上传文件后返回的secret
},
"from" : "testa" //表示消息发送者,无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
}
curl 示例:
curl -X POST -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/messages" -d '{"target_type" : "users","target" : ["testd", "testb", "testc"],"msg" : {"type": "audio","url": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/1dfc7f50-55c6-11e4-8a07-7d75b8fb3d42","filename": "messages.amr","length": 10,"secret": "Hfx_WlXGEeSdDW-SuX2EaZcXDC7ZEig3OgKZye9IzKOwoCjM"},"from" : "testa" }'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : {
"testd" : "success",
"testb" : "success",
"testc" : "success"
},
"timestamp" : 1415166234863,
"duration" : 5,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 发送视频消息 =====
发送视频消息,需要先上传视频文件和视频缩略图文件,然后再发送此消息。(URL 中的 UUID 和 secret 可以从上传后的 response 获取)
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type": "users", //users 给用户发消息。chatgroups: 给群发消息,chatrooms: 给聊天室发消息
"target": [
"ceshib"// 注意这里需要用数组,数组长度建议不大于20,即使只有一个用户或者群组,也要用数组形式 ['u1'],给用户发送
],// 此数组元素是用户名,给群组发送时数组元素是groupid
"from": "ceshia", //表示消息发送者,无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
"msg": { //消息内容
"type": "video",// 消息类型
"filename": "1418105136313.mp4",// 视频文件名称
"thumb": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/67279b20-7f69-11e4-8eee-21d3334b3a97",//成功上传视频缩略图返回的UUID
"length": 10,//视频播放长度
"secret": "VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_",// 成功上传视频文件后返回的secret
"file_length": 58103,//视频文件大小
"thumb_secret": "ZyebKn9pEeSSfY03ROk7ND24zUf74s7HpPN1oMV-1JxN2O2I",// 成功上传视频缩略图后返回的secret
"url": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/671dfe30-7f69-11e4-ba67-8fef0d502f46"//成功上传视频文件返回的UUID
}
}
curl 示例:
curl -X POST -i 'https://a1.easemob.com/easemob-demo/chatdemoui/messages' -H 'Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ' -d '{"target_type":"users","target":["testd","testb","testc"],"from":"testa","msg":{"type":"video","filename" : "1418105136313.mp4","thumb" : "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/67279b20-7f69-11e4-8eee-21d3334b3a97","length" : 0,"secret":"VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_","file_length" : 58103,"thumb_secret" : "ZyebKn9pEeSSfY03ROk7ND24zUf74s7HpPN1oMV-1JxN2O2I","url" : "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/671dfe30-7f69-11e4-ba67-8fef0d502f46"}}'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : {
"testd" : "success",
"testb" : "success",
"testc" : "success"
},
"timestamp" : 1415166234863,
"duration" : 5,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 发送透传消息 =====
透传消息:不会在客户端提示(铃声、震动、通知栏等),也不会有 APNS 推送(苹果推送),但可以在客户端监听到,具体功能可以根据自身自定义。
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type":"users", // users 给用户发消息。chatgroups 给群发消息,chatrooms 给聊天室发消息
"target":["testb","testc"], // 注意这里需要用数组,数组长度建议不大于20,即使只有
// 一个用户u1或者群组,也要用数组形式 ['u1'],给用户发
// 送时数组元素是用户名,给群组发送时数组元素是groupid
"msg":{ //消息内容
"type":"cmd", // 消息类型
"action":"action1"
},
"from":"testa" //表示消息发送者。无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
}
curl 示例:
curl -X POST -H "Authorization:Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" -i "https://a1.easemob.com/easemob-demo/chatdemoui/messages" -d '{"target_type":"users","target":["testb","testc"],"msg":{"type":"cmd","action":"action1"},"from":"testa"}}'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : {
"testb" : "success",
"testc" : "success"
},
"timestamp" : 1415167842297,
"duration" : 4,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 发送扩展消息 =====
扩展消息:若普通消息类型不满足用户消息需求,可以使用扩展消息。任何类型的消息都支持扩展,主要是通过message的ext字段实现。
注意:在调用程序中,如果返回429或503错误,说明接口被限流了,请稍微暂停一下并重试。请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/messages
* Request Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(消息结构错误)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
Request Body:
{
"target_type":"users", // users 给用户发消息。chatgroups 给群发消息,chatrooms 给聊天室发消息
"target":["testb","testc"], // 注意这里需要用数组,数组长度建议不大于20,即使只有
// 一个用户u1或者群组,也要用数组形式 ['u1'],给用户发
// 送时数组元素是用户名,给群组发送时数组元素是groupid
"msg":{ //消息内容
"type":"txt", // 消息类型,不局限与文本消息。任何消息类型都可以加扩展消息
"msg":"消息" // 随意传入都可以
},
"from":"testa", //表示消息发送者。无此字段Server会默认设置为"from":"admin",有from字段但值为空串("")时请求失败
"ext":{ //扩展属性,由APP自己定义。可以没有这个字段,但是如果有,值不能是"ext:null"这种形式,否则出错
"attr1":"v1" // 消息的扩展内容,可以增加字段,扩展消息主要解析部分,必须是基本类型数据。
}
}
curl 示例:
curl -X POST -H "Authorization:Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" -i "https://a1.easemob.com/easemob-demo/chatdemoui/messages" -d '{"target_type":"users","target":["testb","testc"],"msg":{"type":"txt","msg":"消息"},"from":"testa","ext":{"attr1":"v1"}}'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : {
"testb" : "success",
"testc" : "success"
},
"timestamp" : 1415167842297,
"duration" : 4,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
----
上一页:[[im:100serverintegration:40fileoperation|文件上传下载]]
下一页:[[im:100serverintegration:60groupmgmt|群组管理]]