diff --git a/Web/Presenters/SupportPresenter.php b/Web/Presenters/SupportPresenter.php index ac680ff7..6c050da4 100644 --- a/Web/Presenters/SupportPresenter.php +++ b/Web/Presenters/SupportPresenter.php @@ -7,6 +7,7 @@ use openvk\Web\Models\Entities\TicketComment; use openvk\Web\Models\Repositories\TicketComments; // use openvk\Web\Models\Repositories\Users; use openvk\Web\Models\RowModel; +use openvk\Web\Util\Telegram; use Nette\Database\Table\ActiveRow; use Chandler\Database\DatabaseConnection; use Chandler\Session\Session; @@ -52,6 +53,17 @@ final class SupportPresenter extends OpenVKPresenter $ticket->setText($this->postParam("text")); $ticket->setcreated(time()); $ticket->save(); + + $helpdeskChat = OPENVK_ROOT_CONF["openvk"]["credentials"]["telegram"]["helpdeskChat"]; + if($helpdeskChat) { + $ticketText = ovk_proc_strtr($this->postParam("text"), 1500); + $telegramText = "📬 Новый тикет!\n\n"; + $telegramText .= "{$ticket->getName()}\n"; + $telegramText .= "$ticketText\n\n"; + $telegramText .= "Автор: {$ticket->getUser()->getCanonicalName()} ({$ticket->getUser()->getRegistrationIP()})\n"; + Telegram::send($helpdeskChat, $telegramText); + } + header("HTTP/1.1 302 Found"); header("Location: /support/view/" . $ticket->getId()); } else { diff --git a/Web/Util/Telegram.php b/Web/Util/Telegram.php new file mode 100644 index 00000000..4c76ce2b --- /dev/null +++ b/Web/Util/Telegram.php @@ -0,0 +1,34 @@ +enable) + return false; + + try { + (new GuzzleClient)->request( + "POST", + "https://api.telegram.org/bot{$conf->token}/sendMessage", + [ + "form_params" => [ + "chat_id" => $to, + "text" => $text, + "disable_web_page_preview" => $webPagePreview ? "true" : "false", + "parse_mode" => "HTML", + ] + ] + ); + } catch (GuzzleClientException $ex) { + trigger_error("Could not send Telegram message to $to: {$ex->getMessage()}", E_USER_WARNING); + return false; + } + + return true; + } +} diff --git a/openvk-example.yml b/openvk-example.yml index f2552319..2bb61e81 100644 --- a/openvk-example.yml +++ b/openvk-example.yml @@ -65,6 +65,10 @@ openvk: enable: false client: "" secret: "SECRET_KEY_HERE" + telegram: + enable: false + token: "TOKEN_HERE" + helpdeskChat: "" eventDB: enable: false # Better enable this database: