public function actionIndex() { $deskId = $this->getQuery('deskId'); $clientOpenId = $this->getQuery('clientOpenId'); $sentTime = $this->getQuery('sentTime'); $page = $this->getQuery('page', 1); $perPage = $this->getQuery('per-page', 10); $start = ($page - 1) * $perPage; if (empty($clientOpenId) || empty($deskId) || !isset($sentTime)) { throw new BadRequestHttpException('Missing required fields'); } $accountId = $this->getAccountId(); $conversations = ChatConversation::getByClient($clientOpenId, $accountId, new \MongoId($deskId)); $conversationIds = ChatConversation::getIdList($conversations); $chatMessages = ChatMessage::getByConversations($conversationIds, $perPage, $start, $sentTime); $messages = []; foreach ($chatMessages as $chatMessage) { $messages[] = ['conversationId' => $chatMessage['conversationId'] . '', 'messageId' => $chatMessage->_id . '', 'content' => $chatMessage['content'], 'isReply' => $chatMessage['isReply'], 'sentTime' => $chatMessage['sentTime']]; } return $messages; }
/** * Get message history * * <b>Request Type: </b>GET<br/> * <b>Request Endpoint: </b>http://{server-domain}/api/chat/conversation/message-history/{id} * <b>Summary: </b> This api is for get message history.<br/> * * <b>Request Parameters: </b><br/> * accesstoken: string<br/> * per-page: int<br/> * page: int<br/> * start: int<br/> * deskId: string, id of the desk.<br/> * clientOpenId: string, the openId of the client.<br/> * * <b>Response Example: </b><br/> * [ * { * "conversationId": "54f401fbe9c2fbe2388b4567", * "content": { * "msgType": "TEXT", * "body": "dfgd" * }, * "isReply": false, * "sentTime": 1425277474000 * }, * { * "conversationId": "54f401fbe9c2fbe2388b4567", * "content": { * "msgType": "TEXT", * "body": "nbbnbnn" * }, * "isReply": true, * "sentTime": 1425277469000 * }, * { * "conversationId": "54f401fbe9c2fbe2388b4567", * "content": { * "msgType": "TEXT", * "body": "asdasd" * }, * "isReply": true, * "sentTime": 1425277464000 * } * ] */ public function actionMessageHistory() { $deskId = $this->getQuery('deskId'); $clientOpenId = $this->getQuery('clientOpenId'); $page = $this->getQuery('page', 1); $perPage = $this->getQuery('per-page', 10); $start = $this->getQuery('start', 0); $start = empty($start) ? ($page - 1) * $perPage : $start; $end = $start + $perPage; if (empty($clientOpenId)) { throw new BadRequestHttpException('Missing required fields'); } $accountId = $this->getAccountId(); if (!empty($deskId)) { $deskId = new \MongoId($deskId); } $conversations = ChatConversation::getByClient($clientOpenId, $accountId, $deskId); $conversationIds = ChatConversation::getIdList($conversations); $chatMessages = ChatMessage::getByConversations($conversationIds, $perPage, $start); $messages = []; foreach ($chatMessages as $chatMessage) { $messages[] = ['conversationId' => (string) $chatMessage['conversationId'], 'content' => $chatMessage['content'], 'isReply' => $chatMessage['isReply'], 'sentTime' => $chatMessage['sentTime']]; } return $messages; }