token = $token; $this->curl = curl_init(); } /** * Event tracking * * @param \TelegramBot\Api\Types\Message $message * @param string $eventName * * @throws \TelegramBot\Api\Exception * @throws \TelegramBot\Api\HttpException * * @return void */ public function track(Message $message, $eventName = 'Message') { $uid = $message->getFrom()->getId(); $options = [ CURLOPT_URL => self::BASE_URL . "?token={$this->token}&uid={$uid}&name={$eventName}", CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => $message->toJson(), CURLOPT_TIMEOUT => 5, ]; curl_setopt_array($this->curl, $options); /** @var string $response */ $response = curl_exec($this->curl); /** @var array $result */ $result = BotApi::jsonValidate($response, true); BotApi::curlValidate($this->curl); if ($result['status'] !== 'accepted') { throw new Exception('Error Processing Request'); } } /** * Destructor. Close curl */ public function __destruct() { $this->curl && curl_close($this->curl); } }