Exemplo n.º 1
0
 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;
 }