easeChat

来自于:环信官方立即使用

注册、登录、退出、监听

创建群组、添加/删除好友、获取好友列表

消息、会话、聊天

附录

概述

关于环信

环信是北京易掌云峰科技有限公司旗下一家企业级服务软件提供商,环信成立于2013年4月,并于2016年荣膺“Gartner 2016 Cool Vendor”。产品有国内上线最早规模最大的即时通讯云平台——环信即时通讯云,移动端最佳实践的全媒体智能云客服平台—环信移动客服。截至2016年上半年,环信即时通讯云共服务了82149家App客户,环信移动客服共服务了29437家企业用户.

主要产品:

环信移动客服——全媒体智能云客服倡导者。

环信即时通讯云——国内最大的即时通讯云PaaS平台。

模块概览

本模块封装了环信即时通讯云的开放SDK。本模块封装的接口都是纯功能类接口,主要分三大类:

1,注册、登录、退出、监听

2,创建群组、添加/删除好友、获取好友列表

3,消息、会话、聊天

功能详情参考模块接口。

新手上路

1. 注册

2. 服务器端集成

3. 客户端集成(模块使用)

使用此模块之前必须先配置 config 文件,配置方法如下:

  • 名称:easeChat
  • 参数:appKey、ios_apnsCertName
  • 配置示例:
  <feature name="easeChat">
    <param name="appKey" value="1154170221178369#apicloud" />
    <param name="ios_apnsCertName" value="81qz3dBYB5q2nGji4IYrawr1" />
  </feature>

在android平台配置如下

<meta-data
      name="EASEMOB_APPKEY"
      value="1176170302115001#test" />

value:为appKey

环信为 IM 部分提供了 APNS 推送功能(本模块暂未封装推送相关功能,后期版本会逐步添加),如果您要使用,请跳转到APNS离线推送

注意:本模块 iOS 平台上最低适配系统版本为 iOS 8.0

模块接口

easeRegister

注册模式分两种,开放注册和授权注册。

  • 只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。
  • 授权注册的流程应该是您服务器通过环信提供的 REST API 注册,之后保存到您的服务器或返回给客户端。

easeRegister({params},callback(ret, err))

params

username:

  • 类型:字符串
  • 描述:用户名

password:

  • 类型:字符串
  • 描述:密码

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 描述:注册结果
  • 内部字段:
{
    status: true           //布尔类型;是否注册成功,true|false
}

err:

  • 类型:JSON 对象
  • 描述:注册结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.easeRegister({
   username: '',
   password: ''
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'注册成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

login

登录接口

login({params},callback(ret, err))

params

username:

  • 类型:字符串
  • 描述:用户名

password:

  • 类型:字符串
  • 描述:密码

autoLogin:

  • 类型:布尔
  • 描述:是否开启自动登录(仅支持ios)
  • 默认:false
  • 说明:

    自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

    本模块自动登录属性默认是关闭的,需要您在登录时自定义设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

    自动登录在以下几种情况下会被取消:

    用户调用了模块的登出动作;

    用户在别的设备上更改了密码,导致此设备上自动登录失败;

    用户的账号被从服务器端删除;

    用户从另一个设备登录,把当前设备上登录的用户踢出。

    所以,在您调用登录方法前,应该先调用 isAutoLogin 接口判断是否设置了自动登录,如果设置了,则不需要您再调用。可通过 addAutoLoginListener 接口监听自动登录完成的回调。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 描述:登录结果
  • 内部字段:
{
    status: true           //布尔类型;是否登录成功,true|false
}

err:

  • 类型:JSON 对象
  • 描述:登录结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.login({
   username: '',
   password: '',
   autoLogin: true
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'登录成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

isAutoLogin

是否设置了自动登录(仅支持ios)

isAutoLogin(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true    //布尔类型;是否设置了自动登录,true|false
}

示例代码

var easeChat = api.require('easeChat');
easeChat.isAutoLogin(function(ret, err) {
    if (ret.status) {
       alert('已开启自动登录');
    } else {
       alert('未开启自动登录');
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

logout

退出登录

退出登录分两种类型:主动退出登录和被动退出登录。

  • 主动退出登录:调用模块的退出接口;
  • 被动退出登录:1. 正在登录的账号在另一台设备上登录;2. 正在登录的账号被从服务器端删除。可通过 addAccountListener 接口监听。

在被动退出时模块内部处理,不需要调用本接口。

logout(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true    //布尔类型;是否成功退出登录,true|false
}

err:

  • 类型:JSON 对象
  • 描述:退出登录失败结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.logout(function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'登录成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

addConnectionListener

连接服务器的状态变化事件的监听

有以下几种情况, 会引起该方法的调用:

    1. 登录成功后, 手机无法上网时, 会调用该回调
    1. 登录成功后, 网络状态变化时, 会调用该回调

当掉线时,SDK 会自动重连,只需要监听重连相关的回调,无需进行任何操作。

addConnectionListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    state: 'connected'    //字符串类型;网络连接状态,取值范围如下:
                          //connected:已连接
                          //disconnected:未连接
}

示例代码

var easeChat = api.require('easeChat');
easeChat.addConnectionListener(function(ret) {
        alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addAutoLoginListener

自动登录完成时的回调事件监听(仅支持ios)

addAutoLoginListener(callback(ret, err))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    complete: true    //布尔类型;自动登录是否完成,true|false
}

err:

  • 类型:JSON 对象
  • 描述:自动登录失败结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.addAutoLoginListener(function(ret) {
    if (ret.complete) {
        api.alert({ msg:'自动登录成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addAccountListener

账号异常事件的监听

addAccountListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'otherLogin'    //字符串类型;监听的事件类型,取值范围如下:
                               //otherLogin:当前登录账号在其它设备登录事件
                               //remove:当前登录账号已经被从服务器端删除事件
                               //forbid:服务被禁用事件(仅支持ios)
}

示例代码

var easeChat = api.require('easeChat');
easeChat.addAccountListener(function(ret) {
        api.alert({ msg:ret.eventType});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

createGroup

创建群组

createGroup({params},callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:群组名

description:

  • 类型:字符串
  • 描述:群组描述

message:

  • 类型:字符串
  • 描述:邀请消息

userCount:

  • 类型:数字
  • 描述:(可选项)群组容纳的人数,群组的最大成员数(3 - 2000)
  • 默认:200

invitees:

  • 类型:数组
  • 描述:群组成员(不包括创建者自己)
  • 示例:
['6001','6002','6003','6004']

style:

  • 类型:字符串
  • 描述:群组类型
  • 默认:openJoin
  • 取值范围:
    • openJoin:公开群组,用户可以自由加入
    • ownerInvite:私有群组,只允许Owner邀请用户加入
    • memberCanInvite:私有群组,Owner和群成员均可邀请用户加入
    • public:公开群组,Owner可以邀请用户加入; 非群成员用户发送入群申请,经Owner同意后才能入组

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 描述:创建群返回结果
  • 内部字段:
{
    status: true ,          //布尔类型;是否创建成功,true|false
    group: {                //JSON对象;创建的群组信息
       groupId: '',         //字符串类型;群组id
       subject: '',         //字符串类型;群组的主题
       description: '',     //字符串类型;群组的描述
       memberCount: ,       //数字类型;群组当前的成员数量
       setting: {            
          style: '',        //字符串类型;群组的类型
          maxUserCount:     //数字类型;群组的最大成员数(3 - 2000,默认是200)
       },
       owner: '',           //字符串类型;群组的所有者,拥有群的最高权限(只有一人)
       members: [],         //数组类型;群组的成员列表
       blackList: [],       //数组类型;群组的黑名单,需要owner权限才能查看,非owner返回undefine
       isPublic: ,          //布尔类型;此群是否为公开群
       isBlocked: ,         //布尔类型;是否屏蔽群消息
       isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(仅支持ios)
    }
}

err:

  • 类型:JSON 对象
  • 描述:创建群失败后返回结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.createGroup({
    name:'APICloud',
    description: 'APICloud大牛群',
    message:'欢迎加入!',
    userCount:200,
    invitees:['6001','6002','6003','6004'],
    style: 'public'
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'创建成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

getGroupInfo

获取制定 id 的群组信息

getGroupInfo({params},callback(ret))

params

id:

  • 类型:字符串
  • 描述:群组 id

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    group: {                //JSON对象;获取的群组信息
       groupId: '',         //字符串类型;群组id
       subject: '',         //字符串类型;群组的主题
       description: '',     //字符串类型;群组的描述
       memberCount: ,       //数字类型;群组当前的成员数量
       setting: {            //仅支持ios
          style: '',        //字符串类型;群组的类型
          maxUserCount:     //数字类型;群组的最大成员数(3 - 2000,默认是200)
       },
       owner: '',           //字符串类型;群组的所有者,拥有群的最高权限(只有一人)
       members: [],         //数组类型;群组的成员列表
       blackList: [],       //数组类型;群组的黑名单,需要owner权限才能查看,非owner返回undefine
       isPublic: ,          //布尔类型;此群是否为公开群
       isBlocked: ,         //布尔类型;是否屏蔽群消息
       isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(仅支持ios)
    }
}

示例代码



可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

addContact

添加好友

addContact({params},callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:要添加的用户

message:

  • 类型:字符串
  • 描述:邀请消息

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否添加成功,true|false
    name: ''                //字符串类型;用户名
}

err:

  • 类型:JSON 对象
  • 描述:添加失败后返回结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.addContact({
    name:'APICloud',
    message:'欢迎加入!'
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'添加成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

approveFriendRequest

同意加好友的申请

approveFriendRequest({params},callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:申请者

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否同意成功,true|false
    name: ''                //字符串类型;用户名
}

err:

  • 类型:JSON 对象
  • 描述:同意失败后返回结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.approveFriendRequest({
    name:'APICloud'
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'同意成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

declineFriendRequest

拒绝加好友的申请

declineFriendRequest({params},callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:申请者

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否拒绝成功,true|false
    name: ''                //字符串类型;用户名
}

err:

  • 类型:JSON 对象
  • 描述:拒绝失败后返回结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.declineFriendRequest({
    name:'APICloud'
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'同意成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

deleteContact

删除好友

deleteContact({params},callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:要删除的好友

isDeleteConversation:

  • 类型:布尔
  • 描述:(可选项)是否删除会话(仅ios有效)
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否删除成功,true|false
    name: ''                //字符串类型;用户名
}

err:

  • 类型:JSON 对象
  • 描述:删除失败后返回结果
  • 内部字段:
{
    code: 1,           //数字类型;错误码
    msg: ''            //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.deleteContact({
    name:'APICloud',
    isDeleteConversation: true
},function(ret, err) {
    if (ret.status) {
        api.alert({ msg:'删除成功'});
    } else {
        api.alert({ msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

getContacts

获取好友列表(仅支持ios)

getContacts({params},callback(ret))

params

original:

  • 类型:字符串
  • 描述:(可选项)数据源(仅ios有效)
  • 默认:server
  • 取值范围:
    • server:从服务器获取所有的好友
    • local:获取本地存储的所有好友

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否获取成功,true|false
    list: []                //数组类型;获取的好友列表
}

示例代码

var easeChat = api.require('easeChat');
easeChat.getContacts({
    original: 'server'
},function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

getConversation

新建(仅支持ios)/获取一个会话

getConversation({params},callback(ret))

params

conversationId:

  • 类型:字符串
  • 描述:(可选项)会话的id,若创建时可不传此参数

type:

  • 类型:字符串
  • 描述:(可选项)会话类型(仅支持ios)
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

ifCreate:

  • 类型:布尔
  • 描述:(可选项) 如果会话不存在是否创建会话(仅支持ios)
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否创建成功,true|false
    conversation: {}        //JSON 对象;返回会话信息,详细内容参考附件:会话信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.getConversation({
    conversationId: '',
    type: 'chat',
    ifCreate: true
},function(ret) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

deleteConversation

删除会话

deleteConversation({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要删除的会话的id

isDeleteMessages:

  • 类型:布尔
  • 描述:(可选项) 是否删除会话中的消息
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true ,          //布尔类型;是否删除成功,true|false
    conversation: {}        //JSON 对象;返回删除的会话信息,详细内容参考附件:会话信息
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.deleteConversation({
    conversationId: '',
    isDeleteMessages: true
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

deleteConversations

删除一组会话

deleteConversations({params},callback(ret,err))

params

conversationIds:

  • 类型:数组
  • 描述:要删除的会话的id 组成的数组

isDeleteMessages:

  • 类型:布尔
  • 描述:(可选项) 是否删除会话中的消息
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true           //布尔类型;是否删除成功,true|false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.deleteConversations({
    conversationIds: [],
    isDeleteMessages: true
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

getAllConversations

获取所有会话,如果内存中不存在会从DB中加载

getAllConversations(callback(ret,err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    conversations: []       //数组类型;返回的会话信息组成的数组,会话信息详细内容参考附件:会话信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.getAllConversations(function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

loadMessageWithId

根据会话id 及其类型,获取指定消息 ID 的消息

loadMessageWithId({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要获取信息的会话的 id

type:

  • 类型:字符串
  • 描述:(可选项)会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

messageId:

  • 类型:字符串
  • 描述:指定的消息的 ID

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否获取成功,true|false
    message: {}            //JSON 对象;获取的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.loadMessageWithId({
    conversationId: '',
    type: 'chat',
    messageId: ''
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

lastReceivedMessage

根据会话id 及其类型,获取收到的对方发送的最后一条消息(仅支持ios)

lastReceivedMessage({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要获取信息的会话的 id

type:

  • 类型:字符串
  • 描述:(可选项)会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否获取成功,true|false
    message: {}            //JSON 对象;获取的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.lastReceivedMessage({
    conversationId: '',
    type: 'chat',
    messageId: ''
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendText

发送文本消息

sendText({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

text:

  • 类型:字符串
  • 描述:发送的消息

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息(仅支持ios)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendText({
    conversationId: '',
    chatType: 'chat',
    text: 'APICloud hello',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendImage

发送图片消息

sendImage({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

path:

  • 类型:字符串
  • 描述:要发送的图片的路径,要求本地路径(fs://、widget://)

displayName:

  • 类型:字符串
  • 描述:附件显示名(不包含路径)(仅支持ios)

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息(仅支持ios)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendImage({
    conversationId: '',
    chatType: 'chat',
    path: 'widget://res/abc.png',
    displayName: 'cloud',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendLocation

发送位置消息

sendLocation({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

address:

  • 类型:字符串
  • 描述:要发送的地址

latitude:

  • 类型:数字
  • 描述:纬度

longitude:

  • 类型:数字
  • 描述:经度

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息(仅支持ios)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendLocation({
    conversationId: '',
    chatType: 'chat',
    address: '北京市天安门',
    latitude: ,
    longitude: ,
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendVoice

发送声音消息

sendVoice({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

path:

  • 类型:字符串
  • 描述:要发送的音频的路径,要求本地路径(fs://、widget://)

displayName:

  • 类型:字符串
  • 描述:附件显示名(不包含路径)

length:

  • 类型:数字
  • 描述:录音时间(秒)

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息(仅支持ios)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendVoice({
    conversationId: '',
    chatType: 'chat',
    path: 'widget://res/abc.mp3',
    displayName: 'cloud',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendVideo

发送视频消息

sendVideo({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

path:

  • 类型:字符串
  • 描述:要发送的视频的路径,要求本地路径(fs://、widget://)

displayName:

  • 类型:字符串
  • 描述:附件显示名(不包含路径)

length:

  • 类型:数字
  • 描述:视频时间长度(秒)

thumbPath:

  • 类型:字符串
  • 描述:视频预览图路径,要求本地路径(fs://、widget://)

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendVideo({
    conversationId: '',
    chatType: 'chat',
    path: 'widget://res/abc.mp4',
    displayName: 'cloud',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendFile

发送文件消息

sendFile({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

path:

  • 类型:字符串
  • 描述:要发送的文件的路径,要求本地路径(fs://、widget://)

displayName:

  • 类型:字符串
  • 描述:附件显示名(不包含路径)

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendFile({
    conversationId: '',
    chatType: 'chat',
    path: 'widget://res/abc.zip',
    displayName: 'cloud',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendCmd

发送命令消息

sendCmd({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

action:

  • 类型:字符串
  • 描述:要发送的命令

from:

  • 类型:字符串
  • 描述:(可选项)发送方
  • 默认:当前登录账号

to:

  • 类型:字符串
  • 描述:接收方

ext:

  • 类型:JSON 对象
  • 描述:扩展信息

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendCmd({
    conversationId: '',
    chatType: 'chat',
    action: '出发',
    from: '',
    to: 'APICloud',
    ext: {}
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

downloadMessageThumbnail

下载缩略图(图片消息的缩略图或视频消息的第一帧图片),

SDK会自动下载缩略图,所以除非自动下载失败,

用户不需要自己下载缩略图

downloadMessageThumbnail({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)要发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

messageId:

  • 类型:字符串
  • 描述:要下载的信息的 id

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否下载成功,true|false
    message: {}            //JSON 对象;下载的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.downloadMessageThumbnail({
    conversationId: '',
    chatType: 'chat',
    messageId: ''
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

downloadMessageAttachments

下载消息附件(语音,视频,图片原图,文件),

SDK会自动下载语音消息,所以除非自动下载语音失败,

用户不需要自动下载语音附件

downloadMessageAttachments({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)发送消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

messageId:

  • 类型:字符串
  • 描述:要下载的信息的 id

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否下载成功,true|false
    message: {}            //JSON 对象;下载的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.downloadMessageAttachments({
    conversationId: '',
    chatType: 'chat',
    messageId: ''
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

sendMessageReadAck

发送消息已读回执

sendMessageReadAck({params},callback(ret,err))

params

conversationId:

  • 类型:字符串
  • 描述:要发送回执消息的会话的 id

chatType:

  • 类型:字符串
  • 描述:(可选项)发送回执消息的会话类型
  • 默认:chat
  • 取值范围:
    • chat:单聊会话
    • groupChat:群聊会话
    • chatRoom:聊天室会话

messageId:

  • 类型:字符串
  • 描述:要发送回执的信息的 id

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否发送成功,true|false
    message: {}            //JSON 对象;发送的回执的消息,详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.sendMessageReadAck({
    conversationId: '',
    chatType: 'chat',
    messageId: ''
},function(ret,err) {
    if(ret.status)
    api.alert({ msg:JSON.stringify(ret)});
    else
    api.alert({ msg:JSON.stringify(err)});
});

可用性

iOS系统,Android系统

可提供的 1.0.0 及更高版本

addMessageListener

添加消息相关事件监听

addMessageListener({params}, callback(ret, err))

params

name:

  • 类型:字符串
  • 描述:要监听的消息相关事件名称
  • 默认:receive
  • 取值范围:
    • receive:消息的监听
    • cmdReceive:cmd消息的监听
    • read:消息已阅读的监听
    • deliver:消息已送达的监听
    • msgChange:消息状态发生变化的监听
    • msgAttachmentChange:消息附件状态发生改变的监听
    • conversationListDidUpdate:会话列表发生变化的监听

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    conversations: [], //数组类型;仅当 name 为 conversationListDidUpdate 时本参数有值,发送变化的会话信息组成的数组,会话信息参考附录:会话信息
    messages: []       //数组类型;仅当 name 非 conversationListDidUpdate 时本参数有值,消息组成的数组,消息详情参考附录:消息内容
}

err:

  • 类型:JSON 对象
  • 描述:消息/消息附件状态发送改变时的错误信息,仅当 name 为msgChange 或 msgAttachmentChange 时本参数有值
  • 内部字段:
{
    code:   ,         //数字类型;错误码
    msg: ''           //字符串类型;错误信息
}

示例代码

var easeChat = api.require('easeChat');
easeChat.addMessageListener({
    name: 'receive'
}, function(ret) {
    if (ret.messages) {
        api.alert({msg:JSON.stringify(ret.messages)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeMessageListener

移除消息相关事件监听

removeMessageListener({params})

params

name:

  • 类型:字符串
  • 描述:要移除的消息相关事件名称
  • 默认:receive
  • 取值范围:
    • receive:消息的监听
    • cmdReceive:cmd消息的监听
    • read:消息已阅读的监听
    • deliver:消息已送达的监听
    • msgChange:消息状态发生变化的监听
    • msgAttachmentChange:消息附件状态发生改变的监听
    • conversationListDidUpdate:会话列表发生变化的监听

示例代码

var easeChat = api.require('easeChat');
easeChat.addMessageListener({
    name: 'receive'
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

附录

会话信息

  • 类型:JSON 对象
  • 描述:创建、获取到的会话的相关信息
  • 内部字段:
{
    conversationId: '',     //字符串类型;会话 ID
    unreadMessagesCount: ,  //数字类型;会话未读消息数量
    ext: {},                //JSON 对象;会话扩展属性
    type: '',               //字符串类型;会话类型,取值范围如下:
                            //chat:单聊会话
                            //groupChat:群聊会话
                            //chatRoom:聊天室会话
    latestMessage: {}       //JSON 对象;会话最新一条消息,详情参考附录:消息内容
}

消息内容

  • 类型:JSON 对象
  • 描述:获取到的消息包含的内容及其相关信息
  • 内部字段:
{
    messageId: '',          //字符串类型;本条消息的 ID
    conversationId: ,       //字符串类型;本条消息所在会话的会话 ID
    direction: '',          //字符串类型;消息的方向,取值范围如下:
                            //send:发送的消息
                            //receive:接收的消息
    from: '',               //字符串类型;消息的发送方
    to: '',                 //字符串类型;消息的接收方
    timestamp: ,            //数字类型;时间戳,服务器收到此消息的时间
    localTime: ,            //数字类型;客户端发送/收到此消息的时间
    chatType: '',           //字符串类型;本条消息的类型,取值范围如下:
                            //chat:单聊会话
                            //groupChat:群聊会话
                            //chatRoom:聊天室会话
    status: '',             //字符串类型:消息的状态,取值范围如下:
                            //pending:发送未开始
                            //delivering:正在发送
                            //successed:发送成功
                            //failed:发送失败
    isReadAcked: ,          //布尔类型;已读回执是否已发送/收到, 对于发送方表示是否已经收到已读回执,对于接收方表示是否已经发送已读回执
    isDeliverAcked: ,       //布尔类型;送达回执是否已发送/收到,对于发送方表示是否已经收到送达回执,对于接收方表示是否已经发送送达回执,如果EMOptions设置了enableDeliveryAck,SDK收到消息后会自动发送送达回执
    isRead: ,               //布尔类型;是否已读
    ext: {},                //JSON 对象;消息扩展,Key值类型必须是NSString, Value值类型必须是NSString或者 NSNumber类型的 BOOL, int, unsigned in, long long, double
    body: {}                //JSON 对象;消息体(消息包含的内容),,详情参考附录:消息体内容
}

消息体内容

  • 类型:JSON 对象
  • 描述:消息体包含的内容及其相关信息
  • 内部字段:
{
    type: '',               //字符串类型;消息体的类型,取值范围如下:
                            //text:文本类型
                            //image:图片类型
                            //video:视频类型
                            //location:位置类型
                            //voice:语音类型
                            //file:文件类型
                            //cmd:命令类型
    ...: ...                //消息体除type外的其它内容,详情参考附录:消息体-文本、图片、视频、位置、语音、文件、命令
}

消息体-文本

  • 类型:JSON 对象
  • 描述:文本类型的消息体内容
  • 内部字段:
{
    type: 'text', 
    text: ''                //字符串类型;文本内容
}

消息体-图片

  • 类型:JSON 对象
  • 描述:图片类型的消息体内容
  • 内部字段:
{
    type: 'image', 
    displayName: '',            //字符串类型;附件的显示名
    localPath: '',              //字符串类型;附件的本地路径
    remotePath: '',             //字符串类型;附件在服务器上的路径
    secretKey: '',              //字符串类型;附件的密钥, 下载附件时需要密匙做校验
    fileLength: ,               //数字类型;附件的大小, 以字节为单位
    downloadStatus: '',         //字符串类型;附件的下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
    thumbnailDownloadStatus: '',//字符串类型;缩略图下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
    size: {                     // JSON 对象;图片大小
       width: ,                 //数字类型;图片的宽
       height:                  //数字类型;图片的高
    },
    compressionRatio: ,         //数字类型;设置发送图片消息时的压缩率,1.0时不压缩,默认值是0.6,如果设置了小于等于0的值,则使用默认值
    thumbnailDisplayName: '',   //字符串类型;缩略图的显示名
    thumbnailLocalPath: '',     //字符串类型;缩略图的本地路径
    thumbnailRemotePath: '',    //字符串类型;缩略图在服务器的路径
    thumbnailSecretKey: '',     //字符串类型;缩略图的密钥, 下载缩略图时需要密匙做校验
    thumbnailSize: {            // JSON 对象;缩略图片大小
       width: ,                 //数字类型;图片的宽
       height:                  //数字类型;图片的高
    },
    thumbnailFileLength:        //数字类型;缩略图文件的大小, 以字节为单位
}

消息体-视频

  • 类型:JSON 对象
  • 描述:视频类型的消息体内容
  • 内部字段:
{
    type: 'video', 
    duration: '',                //数字类型;视频时长, 秒为单位
    displayName: '',            //字符串类型;附件的显示名
    localPath: '',              //字符串类型;附件的本地路径
    remotePath: '',             //字符串类型;附件在服务器上的路径
    secretKey: '',              //字符串类型;附件的密钥, 下载附件时需要密匙做校验
    fileLength: ,               //数字类型;附件的大小, 以字节为单位
    downloadStatus: '',         //字符串类型;附件的下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
    thumbnailLocalPath: '',     //字符串类型;缩略图的本地路径
    thumbnailRemotePath: '',    //字符串类型;缩略图在服务器的路径
    thumbnailSecretKey: '',     //字符串类型;缩略图的密钥, 下载缩略图时需要密匙做校验
    thumbnailSize: {            // JSON 对象;缩略图片大小
       width: ,                 //数字类型;图片的宽
       height:                  //数字类型;图片的高
    },
    thumbnailDownloadStatus: '',//字符串类型;缩略图下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
}

消息体-位置

  • 类型:JSON 对象
  • 描述:位置类型的消息体内容
  • 内部字段:
{
    type: 'location', 
    address: '',               //字符串类型;地址信息
    latitude: ,                //数字类型;纬度
    longitude:                 //数字类型;经度
}

消息体-语音

  • 类型:JSON 对象
  • 描述:语音类型的消息体内容
  • 内部字段:
{
    type: 'voice', 
    duration: '',               //数字类型;语音时长, 秒为单位
    displayName: '',            //字符串类型;附件的显示名
    localPath: '',              //字符串类型;附件的本地路径
    remotePath: '',             //字符串类型;附件在服务器上的路径
    secretKey: '',              //字符串类型;附件的密钥, 下载附件时需要密匙做校验
    fileLength: ,               //数字类型;附件的大小, 以字节为单位
    downloadStatus: ''          //字符串类型;附件的下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
}

消息体-文件

  • 类型:JSON 对象
  • 描述:文本类型的消息体内容
  • 内部字段:
{
    type: 'file', 
    displayName: '',            //字符串类型;附件的显示名
    localPath: '',              //字符串类型;附件的本地路径
    remotePath: '',             //字符串类型;附件在服务器上的路径
    secretKey: '',              //字符串类型;附件的密钥, 下载附件时需要密匙做校验
    fileLength: ,               //数字类型;附件的大小, 以字节为单位
    downloadStatus: ''          //字符串类型;附件的下载状态,取值范围如下:
                                //downloading:正在下载
                                //successed:下载成功
                                //failed:下载失败
                                //pending:准备下载
}

消息体-命令

  • 类型:JSON 对象
  • 描述:命令类型的消息体内容
  • 内部字段:
{
    type: 'cmd', 
    action: '',                //字符串类型;命令内容
}