http = $http; } /** * List messages, optionally filtered by chat or sender. Returns a page shaped * {messages: list, total: count} — iterate over the `messages` field, not the * result itself. Consistent with the JavaScript, Python, and Java SDKs. * * @param array $query * @return array{messages: array>, total: int} */ public function list(string $sessionId, array $query = []): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages", $query) ?? ['messages' => [], 'total' => 0]; } /** * @param array $body * @return array */ public function sendText(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-text", [], $body); } /** * @param array $body * @return array */ public function sendImage(string $sessionId, array $body): array { return $this->sendMedia($sessionId, 'send-image', $body); } /** @return array */ public function sendVideo(string $sessionId, array $body): array { return $this->sendMedia($sessionId, 'send-video', $body); } /** @return array */ public function sendAudio(string $sessionId, array $body): array { return $this->sendMedia($sessionId, 'send-audio', $body); } /** @return array */ public function sendDocument(string $sessionId, array $body): array { return $this->sendMedia($sessionId, 'send-document', $body); } /** @return array */ public function sendSticker(string $sessionId, array $body): array { return $this->sendMedia($sessionId, 'send-sticker', $body); } /** @return array */ private function sendMedia(string $sessionId, string $segment, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/{$this->http->encodeSegment($segment)}", [], $body); } /** @return array */ public function sendLocation(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-location", [], $body); } /** @return array */ public function sendContact(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-contact", [], $body); } /** @return array */ public function sendTemplate(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-template", [], $body); } /** @return array */ public function reply(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/reply", [], $body); } /** @return array */ public function forward(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/forward", [], $body); } /** @return array */ public function react(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/react", [], $body); } /** @return array */ public function delete(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/delete", [], $body); } /** * Edit the text of a message sent by this account. Body is * {chatId, messageId, body}; 404 when the message is not found. * * @param array $body * @return array */ public function editMessage(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/edit", [], $body); } /** * @param array $query * @return array> */ public function history(string $sessionId, string $chatId, array $query = []): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/{$this->http->encodeSegment($chatId)}/history", $query) ?? []; } /** @return array> */ public function reactions(string $sessionId, string $chatId, string $messageId): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/{$this->http->encodeSegment($chatId)}/{$this->http->encodeSegment($messageId)}/reactions") ?? []; } /** @return array */ public function sendBulk(string $sessionId, array $body): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/send-bulk", [], $body); } /** @return array */ public function batchStatus(string $sessionId, string $batchId): array { return $this->http->request('GET', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/batch/{$this->http->encodeSegment($batchId)}"); } /** @return array */ public function cancelBatch(string $sessionId, string $batchId): array { return $this->http->request('POST', "/api/sessions/{$this->http->encodeSegment($sessionId)}/messages/batch/{$this->http->encodeSegment($batchId)}/cancel"); } }