sendMessage($sendID,$data); } public function sendGroupMessage(string $sendID, string $groupID = '', array $data=[]): array { $data['recvID'] = ''; $data['groupID'] = $groupID; $data['sessionType'] = 3; return $this->sendMessage($sendID,$data); } public function sendMessage(string $sendID, array $data=[]): array { $user = \think\facade\Db::name('user')->where('id',$sendID)->field('avatar,nickname')->find(); $data = array_merge([ "sendID" => $sendID, "senderNickname" => $user['nickname'], "senderFaceURL" => $user['avatar'], "senderPlatformID" => 5, "content"=> [ "content" => "hello!!" ], "contentType" => 1, "sessionType" => 4, "isOnlineOnly" => false, "notOfflinePush"=> true, "sendTime" => time()*1000, "offlinePushInfo"=> [ "title" => "您收到一条新的消息", "desc" => "", "ex" => "", "iOSPushSound"=> "default", "iOSBadgeCount"=> true ], "ex"=> "" ],$data); return Utils::send(Url::$sendMsg, $data); } /** * 发送消息 * @param string $sendID 发送者ID * @param string $recvID 接收者ID,单聊时必填 * @param string $groupID 群组ID,群聊时必填 * @param string $senderNickname 发送者昵称 * @param string $senderFaceURL 发送者头像 * @param int $senderPlatformID 发送者平台ID * @param array $content 消息内容 * @param int $contentType 消息类型 * @param int $sessionType 会话类型,1单聊,2群聊 * @param bool $isOnlineOnly 是否仅在线用户接收 * @param bool $notOfflinePush 是否不离线推送 * @param int $sendTime 发送时间,毫秒 * @param array $offlinePushInfo 离线推送信息 * @param string $ex 扩展字段 * @return array */ public function sendMsg(string $sendID, string $recvID = '', string $groupID = '', string $senderNickname = '', string $senderFaceURL = '', int $senderPlatformID = 1, array $content = [], int $contentType = 101, int $sessionType = 1, bool $isOnlineOnly = false, bool $notOfflinePush = false, int $sendTime = 0, array $offlinePushInfo = [], string $ex = ''): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'sendID' => $sendID, 'senderNickname' => $senderNickname, 'senderFaceURL' => $senderFaceURL, 'senderPlatformID' => $senderPlatformID, 'contentType' => $contentType, 'sessionType' => $sessionType, 'isOnlineOnly' => $isOnlineOnly, 'notOfflinePush' => $notOfflinePush, 'ex' => $ex ]; // 根据会话类型设置recvID或groupID if ($sessionType == 1 && !empty($recvID)) { $data['recvID'] = $recvID; } elseif ($sessionType == 2 && !empty($groupID)) { $data['groupID'] = $groupID; } // 设置消息内容 if (empty($content)) { $data['content'] = ['text' => '']; } else { $data['content'] = $content; } // 设置发送时间,如果有的话 if ($sendTime > 0) { $data['sendTime'] = $sendTime; } // 设置离线推送信息,如果有的话 if (!empty($offlinePushInfo)) { $data['offlinePushInfo'] = $offlinePushInfo; } return Utils::send(Url::$sendMsg, $data, '发送消息失败', $adminToken); } /** * 批量发送消息 * @param string $sendID 发送者ID * @param string $senderNickname 发送者昵称 * @param string $senderFaceURL 发送者头像 * @param int $sessionType 会话类型 * @param int $contentType 消息类型 * @param string $content 消息内容 * @return array */ public function batchSendMsg(string $sendID, string $senderNickname, string $senderFaceURL, int $sessionType, int $contentType, string $content): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'senderPlatformID' => 0, 'sendID' => $sendID, 'senderNickname' => $senderNickname, 'senderFaceURL' => $senderFaceURL, 'sessionType' => $sessionType, 'contentType' => $contentType, 'content' => ['text' => $content] ]; return Utils::send(Url::$batchSendMsg, $data, '批量发送消息失败', $adminToken); } /** * 清空用户消息 * @param string $userID 用户ID * @return array */ public function clearMsg(string $userID): array { // 获取管理员token $adminToken = Utils::getAdminToken(); return Utils::send(Url::$clearMsg, ['userID' => $userID], '清空用户消息失败', $adminToken); } /** * 根据seq列表删除消息 * @param string $userID 用户ID * @param string $conversationID 会话ID * @param array $seqs seq列表 * @return array */ public function delMsg(string $userID, string $conversationID, array $seqs): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'userID' => $userID, 'conversationID' => $conversationID, 'seqs' => $seqs ]; return Utils::send(Url::$delMsg, $data, '删除消息失败', $adminToken); } /** * 撤回消息 * @param string $conversationID 会话ID * @param string $seq 消息seq * @param string $userID 用户ID * @return array */ public function revokeMessage(string $conversationID, string $seq, string $userID): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'conversationID' => $conversationID, 'seq' => intval($seq), 'userID' => $userID ]; return Utils::send(Url::$revokeMessage, $data, '撤回消息失败', $adminToken); } /** * 发送业务通知 * @param string $sendID 发送者ID * @param string $recvID 接收者ID * @param string $title 通知标题 * @param string $content 通知内容 * @param string $notificationUrl 通知点击跳转链接 * @param string $ex 扩展字段 * @return array */ public function sendBusinessNotification(string $sendID, string $recvID, array $data,string $type='user'): array { $key = isset($data['key']) ? $data['key'] : md5(time()); $sendMsg = isset($data['sendMsg']) ? $data['sendMsg'] : true; unset($data['key']); unset($data['sendMsg']); // 获取管理员token $data = [ 'sendUserID' => $sendID, 'recvUserID' => $type=='user' ? $recvID : '', 'recvGroupID' => $type=='user' ? '': $recvID, 'key' => $key, 'data' => json_encode($data), 'sendMsg' => $sendMsg, 'reliabilityLevel' => 1, ]; //log_alert($data); return Utils::send(Url::$sendBusinessNotification, $data, '发送业务通知失败'); } /** * 获取用户所有会话 * @param string $userID 用户ID * @return array */ public function getAllConversations(string $userID): array { // 获取管理员token $adminToken = Utils::getAdminToken(); return Utils::send(Url::$getAllConversations, ['userID' => $userID], '获取用户所有会话失败', $adminToken); } /** * 根据会话ID获取会话 * @param string $userID 用户ID * @param string $conversationID 会话ID * @return array */ public function getConversation(string $userID, string $conversationID): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'userID' => $userID, 'conversationID' => $conversationID ]; return Utils::send(Url::$getConversation, $data, '获取会话失败', $adminToken); } /** * 根据会话ID列表获取会话 * @param string $userID 用户ID * @param array $conversationIDs 会话ID列表 * @return array */ public function getConversations(string $userID, array $conversationIDs): array { // 获取管理员token $adminToken = Utils::getAdminToken(); $data = [ 'userID' => $userID, 'conversationIDs' => $conversationIDs ]; return Utils::send(Url::$getConversations, $data, '获取会话列表失败', $adminToken); } }