TimRestInterface.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. <?php
  2. /**
  3. * 工厂函数
  4. * @param int $sdkappid 应用的appid
  5. * @param inti $accountype 应用账号类型
  6. * @return RestAPI
  7. */
  8. function createRestAPI(){
  9. return new TimRestAPI;
  10. }
  11. abstract class TimRestInterface
  12. {
  13. /**
  14. * 初始化函数
  15. * @param string $sdkappid 应用的appid
  16. * @param string $identifier 访问接口的用户
  17. * @return bool 返回true/false
  18. */
  19. abstract function init($sdkappid, $identifier);
  20. /**
  21. * 独立模式根据Identifier生成UserSig的方法
  22. * @param int $identifier 用户账号
  23. * @param int $expiry_after 过期时间
  24. * @param string $protected_key_path 私钥的存储路径及文件名
  25. * @return string $out 返回的签名字符串
  26. */
  27. abstract public function generate_user_sig($identifier, $expiry_after, $protected_key_path, $tool_path);
  28. /**
  29. * 托管模式设置用户凭证
  30. * @param string $protected_key_path 私钥的存储路径及文件名
  31. * @return bool 返回成功与否
  32. */
  33. abstract public function set_user_sig($usr_sig);
  34. ################################ 单发消息 ###################################
  35. /**
  36. * 发文本消息
  37. * @param string $account_id 发送者id
  38. * @param string $receiver 接收方的用户账号
  39. * @param string $text_content 消息内容(这里为文本消息)
  40. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  41. */
  42. abstract function openim_send_msg($account_id, $receiver, $text_content);
  43. /**
  44. * 发图片消息(图片不大于10M)
  45. * @param string $account_id 发送者id
  46. * @param string $receiver 接收方的用户账号
  47. * @param string $pic_path 要发送的图片本地路径
  48. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  49. */
  50. abstract function openim_send_msg_pic($account_id, $receiver, $pic_path);
  51. /**
  52. * 单发消息(高级接口)
  53. * @param string $account_id 发送者id
  54. * @param string $receiver 接收方的用户账号
  55. * @param array $msg_content 消息内容, php构造示例:
  56. *
  57. * $msg_content = array();
  58. * //创建array 所需元素
  59. * $msg_content_elem = array(
  60. * 'MsgType' => 'TIMTextElem', //文本类型
  61. * 'MsgContent' => array(
  62. * 'Text' => "hello", //hello 为文本信息
  63. * )
  64. * );
  65. * //将创建的元素$msg_content_elem, 加入array $msg_content
  66. * array_push($msg_content, $msg_content_elem);
  67. *
  68. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  69. */
  70. abstract function openim_send_msg2($account_id, $receiver, $msg_content);
  71. /**
  72. * 批量发文本消息
  73. * @param array $account_list 接收消息的用户id集合
  74. * @param string $text_content 消息内容(这里为文本消息)
  75. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  76. */
  77. abstract function openim_batch_sendmsg($account_list, $text_content);
  78. /**
  79. * 批量发图片
  80. * @param array $account_list 接收消息的用户id集合
  81. * @param string $pic_path 要发送图片的本地路径
  82. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  83. */
  84. abstract function openim_batch_sendmsg_pic($account_list, $pic_path);
  85. /**
  86. * 批量发消息(高级接口)
  87. * @param array $account_list 接收消息的用户id集合
  88. * @param array $msg_content 消息内容, php构造示例:
  89. *
  90. * $msg_content = array();
  91. * //创建array 所需元素
  92. * $msg_content_elem = array(
  93. * 'MsgType' => 'TIMTextElem', //文本??型
  94. * 'MsgContent' => array(
  95. * 'Text' => "hello", //hello 为文本信息
  96. * )
  97. * );
  98. * //将创建的元素$msg_content_elem, 加入array $msg_content
  99. * array_push($msg_content, $msg_content_elem);
  100. *
  101. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  102. */
  103. abstract function openim_batch_sendmsg2($account_list, $msg_content);
  104. ################################ 帐号管理 ###################################
  105. /**
  106. * 独立模式帐号同步接口
  107. * @param string $identifier 用户名
  108. * @param string $nick 用户昵称
  109. * @param string $face_url 用户头像URL
  110. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  111. */
  112. abstract function account_import($identifier, $nick, $face_url);
  113. /**
  114. * 独立模式帐号同步接口
  115. * @param string $Identifier 为用户申请同步的帐号,长度为4-24个字符
  116. * @param string $IdentifierType Identifier的类型,1:手机号(国家码-手机号) 2:邮箱 3:字符串帐号
  117. * @param string $Password Identifier的密码,长度为8-16个字符
  118. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  119. */
  120. abstract public function register_account($identifier, $identifierType, $password);
  121. ################################ 资料管理 ###################################
  122. /**
  123. * 获取用户资料
  124. * @param string $account_id 获取哪个用户的资料
  125. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、拉取到的用户信息(如果成功),及错误提示等字段
  126. */
  127. abstract function profile_portrait_get($account_id);
  128. /**
  129. * 获取用户资料(高级接口)
  130. * @param array $account_list 需要获取资料的帐号id集合, php构造示例:
  131. *
  132. * $account_list = array();
  133. * array_push($account_list, $account_id); //$account_id为用户id,需要用户传递
  134. *
  135. * @param array $tag_list 需要拉取的字段,目前可拉取的字段:
  136. * 1.昵称:"Tag_Profile_IM_Nick
  137. * 2.加好友设置"Tag_Profile_IM_AllowType", php构造示例:
  138. *
  139. * $tag_list = array(
  140. * "Tag_Profile_IM_Nick", //昵称
  141. * );
  142. *
  143. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、拉取到的用户信息(如果成功),及错误提示等字段
  144. */
  145. abstract function profile_portrait_get2($account_list, $tag_list);
  146. /**
  147. * 设置用户名称
  148. * @param string $account_id 需要设置的用户
  149. * @param string $new_name 要设置为的用户名
  150. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  151. */
  152. abstract function profile_portrait_set($account_id, $new_name);
  153. /**
  154. * 设置用户资料(高级接口)
  155. * @param string $account_id 需要设置的用户
  156. * @param array $profile_list 设置选项集合,用户账号设置内容选项, 比如昵称, php构造示例:
  157. *
  158. * //创建array $profile_list
  159. * $profile_list = array();
  160. * //创建昵称选项
  161. * $profile_nick = array(
  162. * "Tag" => "Tag_Profile_IM_Nick", //用户昵称
  163. * "Value" => "new_name" //"new_name"要设置成的用户名
  164. * );
  165. * //加好友验证方式
  166. * $profile_allow = array(
  167. * "Tag" => "Tag_Profile_IM_AllowType",
  168. * "Value" => "AllowType_Type_NeedConfirm"
  169. * );
  170. * array_push($profile_list, $profile_nick);
  171. * array_push($profile_list, $profile_allow);
  172. *
  173. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  174. */
  175. abstract function profile_portrait_set2($account_id, $profile_list);
  176. ################################ 关系链管理 ###################################
  177. ## 关系链托管方式请详见:关系链系统概述 (http://avc.qcloud.com/wiki2.0/im/) 即时通信云-概述-关系链系统 ##
  178. /**
  179. * 建立双方好友关系
  180. * @param string $account_id 发起者id
  181. * @param string $receiver 添加的用户,完成之后两者互为好友
  182. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  183. */
  184. abstract function sns_friend_import($accout_id, $receiver);
  185. /**
  186. * 解除双方好友关系
  187. * @param string $account_id 用户id,即需要删除好友的用户
  188. * @param string $frd_id 需要删除的好友
  189. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  190. */
  191. abstract function sns_friend_delete($account_id, $frd_id);
  192. /**
  193. * 解除所有好友关系
  194. * @param string $account_id 用户id,即需要解除所有好友关系的用户
  195. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  196. */
  197. abstract function sns_friend_delete_all($account_id);
  198. /**
  199. * 校验好友关系(默认双向严重)
  200. * @param string $account_id 需要校验好友的用户id
  201. * @param string $to_account 校验是否为好友的id
  202. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示、验证结果等字段
  203. */
  204. abstract function sns_friend_check($account_id, $to_account);
  205. /**
  206. * 校验好友关系
  207. * @param string $account_id 需要校验好友的用户id
  208. * @param array $to_account_list 校验是否为好友的id集合
  209. * @param string $check_type 校验类型,目前支持:单向校验"CheckResult_Type_Singal",双向校验"CheckResult_Type_Both"
  210. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示、验证结果等字段
  211. */
  212. abstract function sns_friend_check2($account_id, $to_account_list, $check_type);
  213. /**
  214. * 拉取好友
  215. * @param string $account_id 需要获取好友的用户id
  216. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的好友信息、成功与否及错误提示等字段
  217. */
  218. abstract function sns_friend_get_all($account_id);
  219. /**
  220. * 拉取好友(高级接口)
  221. * @param string $account_id 需要获取好友的用户id
  222. * @param array $tag_list 需要拉取的字段,该拉取协议是一条整合数据的协议,可以指定拉取自己好友的昵称
  223. * 加好友设置以及对用户的备注等字段,如果需要拉取昵称字段,则这里就需要在Json数组中填入Tag_Profile_IM_Nick.
  224. * php构造示例:
  225. *
  226. * $tag_list = array(
  227. * "Tag_Profile_IM_Nick", //昵称选项
  228. * "Tag_SNS_IM_Remark" //备注选项
  229. * );
  230. *
  231. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的好友信息、成功与否及错误提示等字段
  232. */
  233. abstract function sns_friend_get_all2($account_id, $tag_list);
  234. /**
  235. * 拉取指定好友的信息
  236. * @param string $account_id 需要拉取好友的帐号
  237. * @param string $frd_id 需要被拉取的好友
  238. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的好友信息、成功与否及错误提示等字段
  239. */
  240. abstract function sns_friend_get_list($account_id, $frd_id);
  241. /**
  242. * 拉取特定好友(高级接口)
  243. * @param string $account_id 需要拉取好友的帐号
  244. * @param array $frd_list 拉取好友对象, php构造示例:
  245. *
  246. * $frd_list = array();
  247. * array_push($frd_list, "leckie"); //"leckie" 为需要被拉取的好友id
  248. *
  249. * @param array $tag_list 需要拉取属性的选项字段, 该拉取协议是一条整合数据的协议,可以指定拉取自己好友的昵称
  250. * 、加好友设置以及对用户的备注等字段,如果需要拉取昵称字段,则这里就需要在Json数组中填入Tag_Profile_IM_Nick
  251. *
  252. * $tag_list = array(
  253. * "Tag_Profile_IM_Nick", //昵称选项
  254. * "Tag_SNS_IM_Remark" //备注选项
  255. * );
  256. *
  257. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的好友信息、成功与否及错误提示等字段
  258. */
  259. abstract function sns_friend_get_list2($account_id, $frd_list, $tag_list);
  260. ################################ 群组管理 ###################################
  261. /**
  262. * 获取app中所有群组, 如果APP中的总群数量超过10000个,最多只会返回10000个(如果需要获取完整必须使用高级接口)
  263. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的群组信息、成功与否及错误提示等字段
  264. */
  265. abstract function group_get_appid_group_list();
  266. /**
  267. * 获取app中所有群组(高级接口)
  268. * @param int $limit 最多获取多少个群,不得超过10000, 如果不填,获取能获取的最大数量的群.
  269. * @param int $offset 控制从整个群组列表中的第多少个开始读取(从0开始). 对于分页请求(页码数字从1开始),每
  270. * 一页的Offset值应当为:(页码数-1)×每页展示的群组数量, 如果不填从0开始.
  271. * @param string $group_type 如果仅需要返回特定群组形态的群组,可以通过GroupType进行过滤,但此时返回的TotalCount
  272. * 的含义就变成了APP中该群组形态的群组总数. 例如:假设APP旗下总共50000个群组,其中有20000个为公开群组,如
  273. * 果将请求包体中的GroupType设置为Public,那么不论limit和offset怎样设置,应答包体中的TotalCount都为20000,
  274. * 且GroupIdList中的群组全部为公开群组.
  275. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的群组信息、成功与否及错误提示等字段
  276. */
  277. abstract function group_get_appid_group_list2($limit, $offset, $group_type);
  278. /**
  279. * 创建群
  280. * @param string $group_type 群类型, 包括Public(公开群), Private(私密群), ChatRoom(聊天室)
  281. * @param string $group_name 群名称
  282. * @param string $owner_id 群主id, 自动添加到群成员中.如果不填,则群没有群主
  283. * @return array 通过解析REST接口json返回包得到的关联数组,包含新建的群号、成功与否、错误提示等字段
  284. */
  285. abstract function group_create_group($group_type, $group_name, $owner_id);
  286. /**
  287. * 创建群(高级接口)
  288. * @param string $group_type 群类型(包括Public(公开群), Private(私密群), ChatRoom(聊天室))
  289. * @param string $group_name 群名称
  290. * @param string $owner_id 群主id, 自动添加到群成员中.如果不填,群没有群主
  291. * @param array $info_set 存储群组基本信息的字典,内容包括用introduction 群简介, group_id 自定义群组显示出来的id,
  292. * notification 群公告, face_url 群头像url地址, max_member_num 最大群成员数量, apply_join 申请加群处理方式
  293. * (比如FreeAccess 自由加入). php构造示例:
  294. *
  295. * $info_set = array(
  296. * 'introduction' => "群简介"(string),
  297. * 'group_id' => "自定义群组id"(string),
  298. * 'notificatoin' => "群公告"(string),
  299. * 'face_url' => "群头像url地址"(string),
  300. * 'max_member_num' => 最大群成员数量(int),
  301. * 'apply_join' => "申请加群的处理方式"(string)
  302. * );
  303. *
  304. * @param array $mem_list 初始群成员列表,最多500个,每个群成员由Member_Account(用户id), Role(角色, 比如管理员Admin,
  305. * 普通成员Member)组成. php构造示例:
  306. *
  307. * $mem_list = array();
  308. * $mem_account = array()(
  309. * "Member_Account" => "bob", // 成员id
  310. * "Role" => "Admin" // 赋予该成员的身份,目前备选项只有Admin
  311. * );
  312. * array_push($account_list, $mem_account); //$mem_account为用户id,需要用户传递
  313. *
  314. * @return array 通过解析REST接口json返回包得到的关联数组,包含新建的群号、成功与否、错误提示等字段
  315. */
  316. abstract function group_create_group2($group_type, $group_name, $owner_id, $info_set, $mem_list);
  317. /**
  318. * 转让群组
  319. * @param string $group_id 需要转让的群组id
  320. * @param string $new_owner 需要设置的新群主id
  321. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  322. */
  323. abstract function group_change_group_owner($group_id, $new_owner);
  324. /**
  325. * 获取群组详细信息
  326. * @param string $group_id 需要获取信息的群组id
  327. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的群组信息(如果成功)、成功与否、错误提示等字段
  328. */
  329. abstract function group_get_group_info($group_id);
  330. /**
  331. * 获取群组详细信息(高级接口)
  332. * @param array $group_list 群组集合. php构造示例:
  333. *
  334. * $group_list = array();
  335. * array_push($group_list, "group_id"); //group_id 为群组号码
  336. *
  337. * @param array $base_info_filter 基础信息字段过滤器. php构造示例:
  338. *
  339. * $base_info_filter = array(
  340. * "Type", //群类型(包括Public(公开群), Private(私密群), ChatRoom(聊天室))
  341. * "Name", //群名称
  342. * "Introduction", //群简介
  343. * "Notification", //群公告
  344. * "FaceUrl", //群头像url地址
  345. * "CreateTime", //群组创建时间
  346. * "Owner_Account", //群主id
  347. * "LastInfoTime", //最后一次系统通知时间
  348. * "LastMsgTime", //最后一次消息发送时间
  349. * "MemberNum", //群组当前成员数目
  350. * "MaxMemberNum", //群组内最大成员数目
  351. * "ApplyJoinOption" //申请加群处理方式(比如FreeAccess 自由加入)
  352. * );
  353. *
  354. * @param array $member_info_filter 成员信息字段过滤器, php构造示例:
  355. *
  356. * $member_info_filter = array(
  357. * "Account", // 成员ID
  358. * "Role", // 成员身份
  359. *
  360. * "JoinTime", // 成员加入时间
  361. * "LastSendMsgTime", // 该成员最后一次发送消息时间
  362. * "ShutUpUntil" // 该成员被禁言直到某时间
  363. * );
  364. *
  365. * @param array $app_define_filter 群组维度的自定义字段过滤器, php构造示例:
  366. *
  367. * $app_define_filter = array(
  368. * "GroupTestData1", //自定义数据
  369. * );
  370. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的群组信息(如果成功)、成功与否、错误提示等字段
  371. */
  372. abstract function group_get_group_info2($group_list, $base_info_filter, $member_info_filter, $app_define_filter);
  373. /**
  374. * 获取群组成员详细信息
  375. * @param string $group_id 群组id
  376. * @param int $limit 最多获取多少个成员, 如果不填, 获取全部成员
  377. * @param int $offset 从第几个成员开始获取, 如果不填, 从第一个成员开始获取
  378. * @return array 通过解析REST接口json返回包得到的关联数组,包含拉取到的群组成员详细信息(如果成功)、成功与否、错误提示等字段
  379. */
  380. abstract function group_get_group_member_info($group_id, $limit, $offset);
  381. /**
  382. * 修改群组名字
  383. * @param string $group_id 群组id
  384. * @param string $group_name 将其作为群组名字
  385. * @return string 返回成功与否,及错误提示(如果有错误)
  386. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  387. */
  388. abstract function group_modify_group_base_info($group_id, $group_name);
  389. /**
  390. * 修改群组信息(高级接口)
  391. * @param string $group_id 群组id
  392. * @param string $group_name 群组名字
  393. * @param array $info_set 需要修改的群组基本信息的字典集合, 包括群简介,群公告, 群头像url地址,群成员最大数量,
  394. * 申请加群方式. php构造示例:
  395. *
  396. * $info_set = array(
  397. * 'introduction' => "群简介"(string),
  398. * 'notification' => "群公告"(string),
  399. * 'face_url' => "群头像url地址(string)",
  400. * 'max_member_num' => "群成员最大数量"(string),
  401. * 'apply_join' => "申请加入方式"(string)
  402. * );
  403. *
  404. * @param array $app_define_list 自定义字段. php构造示例:
  405. *
  406. * $app_define_list = array();
  407. * //定义自定义字段字典数组
  408. * $app_define_one = array()(
  409. * "Key": "GroupTestData1", // 需要修改的自定义字段key
  410. * "Value": "NewData" // 自定义字段的新值
  411. * );
  412. * array_push($app_define_list, $app_define_one);
  413. *
  414. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  415. */
  416. abstract function group_modify_group_base_info2($group_id, $group_name, $info_set, $app_define_list);
  417. /**
  418. * 增加群组成员
  419. * @param string $group_id 要操作的群组id
  420. * @param string $member_id 要加入的用户id
  421. * @param int $silence 是否静默加入, 0为否, 1为是
  422. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  423. */
  424. abstract function group_add_group_member($group_id, $member_id, $silence);
  425. /**
  426. * 删除群组成员
  427. * @param string $group_id 要操作的群组id
  428. * @param string $member_id 要删除的成员id
  429. * @param int silence 是否静默删除, 0为否,1为是
  430. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  431. */
  432. abstract function group_delete_group_member($group_id, $member_id, $silence);
  433. /**
  434. * 修改群成员身份
  435. * @param string $group_id 要操作的群组id
  436. * @param string $account_id 要操作的用户id
  437. * @param string $role 用户身份(Admin/Member)
  438. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  439. */
  440. abstract function group_modify_group_member_info($group_id, $account_id, $role);
  441. /**
  442. * 修改群成员资料(高级接口)
  443. * @param string $group_id 要操作的群组id
  444. * @param string $account_id 用户id
  445. * @param string $role Admin或者Member, 分别为设置/取消管理员, 为null则不改变成员身份
  446. * @param string $msg_flag 消息屏蔽类型,比如AcceptAndNotify(接收并提示), 为null则不改变屏蔽类型
  447. * @param int $shutup_time 禁言时间
  448. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  449. */
  450. abstract function group_modify_group_member_info2($group_id, $account_id, $role, $msg_flag, $shutup_time);
  451. /**
  452. * 解散群
  453. * @param string $group_id 群组id
  454. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  455. */
  456. abstract function group_destroy_group($group_id);
  457. /**
  458. * 获取某一用户加入的群组
  459. * @param string $account_id 用户id
  460. * @return array 通过解析REST接口json返回包得到的关联数组,包含该用户加入的群的信息(如果成功), 成功与否、错误提示等字段
  461. */
  462. abstract function group_get_joined_group_list($account_id);
  463. /**
  464. * 获取某一用户加入的群组(高级接口)
  465. * @param string $account_id 用户id
  466. * @param string $group_type 拉取哪种群组形态(Pulic(公开群)/Private(私密群)/ChatRoom(聊天室)),不填为拉取所有
  467. * @param array $base_info_filter 基础信息字段过滤器. php构造示例:
  468. *
  469. * $base_info_filter = array(
  470. * "Type", //群类型(包括Public(公开群), Private(私密群), ChatRoom(聊天室))
  471. * "Name", //群名称
  472. * "Introduction", //群简介
  473. * "Notification", //群公告
  474. * "FaceUrl", //群头像url地址
  475. * "CreateTime", //群组创建时间
  476. * "Owner_Account", //群主id
  477. * "LastInfoTime", //最后一次系统通知时间
  478. * "LastMsgTime", //最后一次消息发送时间
  479. * "MemberNum", //群组当前成员数目
  480. * "MaxMemberNum", //群组内最大成员数目
  481. * "ApplyJoinOption" //申请加群处理方式(比如FreeAccess 自由加入, NeedPermission 需要同意)
  482. * );
  483. *
  484. * @param array $self_info_filter 自身在群内的消息过滤器. php构造示例:
  485. *
  486. * $self_info_filter = array(
  487. * "Role", //群内身份(Amin/Member)
  488. * "JoinTime", //入群时间
  489. * "MsgFlag", //消息屏蔽类型
  490. * "UnreadMsgNum" //未读消息数量
  491. * );
  492. * @return array 通过解析REST接口json返回包得到的关联数组,包含该用户加入的群的信息(如果成功), 成功与否、错误提示等字段
  493. */
  494. abstract function group_get_joined_group_list2($account_id, $group_type, $base_info_filter, $self_info_filter);
  495. /**
  496. * 查询用户在某个群组中的身份
  497. * @param string $group_id 群组id
  498. * @param string $member_id 要查询的用户
  499. * @return array 通过解析REST接口json返回包得到的关联数组,包含该用户在某个群的身份(如果成功), 成功与否、错误提示等字段
  500. */
  501. abstract function group_get_role_in_group($group_id, $member_id);
  502. /**
  503. * 批量禁言/取消禁言
  504. * @param string $group_id 群组id
  505. * @param string $member_id 要禁言/取消禁言 的用户
  506. * @param int $second 表示禁言多少秒, 0表示取消禁言
  507. * @return array 通过解析REST接口json返回包得到的关联数组,包含该用户在某个群的身份(如果成功), 成功与否、错误提示等字段
  508. */
  509. abstract function group_forbid_send_msg($group_id, $member_id, $second);
  510. /**
  511. * 在某一群组里发普通消息
  512. * @param string $account_id 发送消息的用户
  513. * @param string $group_id 群组id
  514. * @param string $text_content 要发送的信息(均为文本消息)
  515. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  516. */
  517. abstract function group_send_group_msg($account_id, $group_id, $text_content);
  518. /**
  519. * 在某一群组里发送图片
  520. * @param string $account_id 发送消息的用户
  521. * @param string $group_id 群组id
  522. * @param string $pic_path 要发送图片的本地路径
  523. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  524. */
  525. abstract function group_send_group_msg_pic($account_id, $group_id, $pic_path);
  526. /**
  527. * 在某一群组里发普通消息(高级接口)
  528. * @param string $account_id 发送消息的用户
  529. * @param string $group_id 群组id
  530. * @param array $msg_content 要发送的消息集合,这里包括文本消息和表情消息. php构造示例:
  531. *
  532. * //创建array $msg_content
  533. * $msg_content = array();
  534. * //创建array 所需元素
  535. * $msg_content_text = array(
  536. * 'MsgType' => 'TIMTextElem', //文本类型
  537. * 'MsgContent' => array(
  538. * 'Text' => "hello", //"hello" 为文本信息
  539. * )
  540. *
  541. * $msg_content_face = array(
  542. * 'MsgType' => 'TIMTextElem', //表情类型
  543. * 'MsgContent' => array(
  544. * 'Data' => "abc\u0000\u0001", //"abc\u0000\u0001" 为图片信息
  545. * )
  546. *
  547. * array_push($msg_content, $msg_content_text);
  548. * array_push($msg_content, $msg_content_face);
  549. * );
  550. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  551. */
  552. abstract function group_send_group_msg2($account_id, $group_id, $msg_content);
  553. /**
  554. * 在某一群组发系统消息
  555. * @param string $group_id 群组id
  556. * @param string $content 系统通知内容,支持二进制数组
  557. * @param string $receiver_id 接收者群成员id,为空表示全员下发
  558. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  559. */
  560. abstract function group_send_group_system_notification($group_id, $content, $receiver_id);
  561. /**
  562. * 在某一群组发系统消息(高级接口)
  563. * @param string $group_id 群组id
  564. * @param string $content 系统通知内容,支持二进制数组
  565. * @param array $receiver_list 接收此系统提示的用户id集合, 为空表示发送给全员. php构造示例:
  566. *
  567. * $receiver_list = array(
  568. * "peter",
  569. * "leckie"
  570. * )
  571. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  572. */
  573. abstract function group_send_group_system_notification2($group_id, $content, $receiver_list);
  574. /**
  575. * 导入群成员(只导入一个成员, 入群时间默认为当前)
  576. * @param string $group_id 要操作的群组id
  577. * @param string $member_id 要导入的用户id
  578. * @param string $role 要导入的用户的身份(现可填值只有Admin),不填默认为Member
  579. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  580. */
  581. abstract function group_import_group_member($group_id, $member_id, $role);
  582. /**
  583. * 导入群成员(批量导入)
  584. * @param string $group_id 要操作的群组id
  585. * @param string $member_list 要导入的用户id集合,构造示例:
  586. *
  587. * $member_list = array();
  588. * $member_elem = array(
  589. * "Member_Account" => $member_id,
  590. * "Role" => $role
  591. * );
  592. * array_push($member_list, $member_elem);
  593. *
  594. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  595. */
  596. abstract function group_import_group_member2($group_id, $member_list);
  597. /**
  598. * 导入一条群文本消息
  599. * @param string $group_id 要操作的群组id
  600. * @param string $from_account 该消息发送者
  601. * @param int $text 文本消息内容
  602. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  603. */
  604. abstract function group_import_group_msg($group_id, $from_account, $text);
  605. /**
  606. * 导入群消息(高级接口, 一次最多导入20条)
  607. * @param string $group_id 要操作的群组id
  608. * @param string $msg_list 消息集合, 构造方式如下:
  609. *
  610. * //构造MsgBody
  611. * $msg_content = array(
  612. * "Text" => $text
  613. * );
  614. * $msg_body_elem = array(
  615. * "MsgType" => "TIMTextElem",
  616. * "MsgContent" => $msg_content,
  617. * );
  618. * $msg_body_list = array();
  619. * array_push($msg_body_list, $msg_body_elem);
  620. * //构造MsgList的一个元素
  621. * $msg_list_elem = array(
  622. * "From_Account" => $from_account,
  623. * "SendTime" => time(),
  624. * "Random" => rand(1, 65535),
  625. * "MsgBody" => $msg_body_list
  626. * );
  627. * //构造MsgList
  628. * $msg_list = array();
  629. * array_push($msg_list, $msg_list_elem);
  630. *
  631. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  632. */
  633. abstract function group_import_group_msg2($group_id, $msg_list);
  634. /**
  635. * 设置群组成员未读计数
  636. * @param string $group_id 要操作的群组id
  637. * @param string $member_account 要操作的群成员
  638. * @param int $unread_msg_num 该成员的未读计数
  639. * @return array 通过解析REST接口json返回包得到的关联数组,包含成功与否、错误提示等字段
  640. */
  641. abstract function group_set_unread_msg_num($group_id, $member_account, $unread_msg_num);
  642. ################################ 通用接口 ###################################
  643. /**
  644. * 直接访问RestApi
  645. * 建议仅在没有合适接口时才考虑使用
  646. * @param array $req_body 相应RestApi所需要的请求包体内容
  647. * @return array 通过解析REST接口json返回包得到的关联数组, 其中包含成功与否、及错误提示(如果有错误)等字段
  648. */
  649. abstract function comm_rest($server_name, $command, $req_body);
  650. }
  651. ?>