addType('localToken', Types::STRING); $this->addType('remoteServerUrl', Types::STRING); $this->addType('remoteToken', Types::STRING); $this->addType('remoteMessageId', Types::BIGINT); $this->addType('actorType', Types::STRING); $this->addType('actorId', Types::STRING); $this->addType('actorDisplayName', Types::STRING); $this->addType('messageType', Types::STRING); $this->addType('systemMessage', Types::STRING); $this->addType('expirationDatetime', Types::DATETIME); $this->addType('message', Types::TEXT); $this->addType('messageParameters', Types::TEXT); $this->addType('creationDatetime', Types::DATETIME); $this->addType('metaData', Types::TEXT); } public function getParsedMessageParameters(): array { return json_decode($this->getMessageParameters() ?? '[]', true); } public function getParsedMetaData(): array { return json_decode($this->getMetaData() ?? '[]', true); } /** * @return TalkChatProxyMessage */ #[\Override] public function jsonSerialize(): array { $expirationTimestamp = 0; if ($this->getExpirationDatetime()) { $expirationTimestamp = $this->getExpirationDatetime()->getTimestamp(); } return [ 'actorType' => $this->getActorType(), 'actorId' => $this->getActorId(), 'actorDisplayName' => $this->getActorDisplayName() ?? '', 'timestamp' => $this->getCreationDatetime()->getTimestamp(), 'expirationTimestamp' => $expirationTimestamp, 'messageType' => $this->getMessageType(), 'systemMessage' => $this->getSystemMessage() ?? '', 'message' => $this->getMessage() ?? '', 'messageParameters' => $this->getParsedMessageParameters(), ]; } }