Псевдо-бот для телеграмма

Нашел такой пример. В нем все работает если вызывать его из файла site.ru/bot.php а если вставить этот код в новый снипет то MODX выдает 500 ошибку. Научите вызывать curl в снипетах и плагинах MODX

<?php
//Создадим переменную, которая будет содержать то, чтонам нужно.
$Peremenaya=«api.telegram.org/bot[ТОКЕН]/sendMessage?disable_web_page_preview=true&chat_id=[ЧАТ ИД]&text=Нам написали тикет скорее отвечайте»;
// создание нового ресурса cURL
$ch = curl_init();
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "$Peremenaya");
//а это что бы на страницу не выводилось
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//это в справочнике прочтете
curl_setopt($ch, CURLOPT_HEADER, 0);
// загрузка страницы и выдача её браузеру другими словами при открытии страницы где вы этот скрипт сделаете автоматически отправится сообщение в заданный вами телеграм чат.
curl_exec($ch);
// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>
Kinda
12 апреля 2016, 06:25
modx.pro
2 590
0

Комментарии: 11

Григорий Коленько
12 апреля 2016, 09:48
0
на хостинге curl включён?
    Kinda
    12 апреля 2016, 09:54
    0
    cURL support enabled
    cURL Information 7.38.0

    usr --with-curl=/opt/curlssl
    Павел Гвоздь
    12 апреля 2016, 10:03
    0
    А в логах на сервере что?
      Kinda
      12 апреля 2016, 10:15
      0
      В логах пусто
        Павел Гвоздь
        12 апреля 2016, 10:21
        0
        Ошибка 500 — internal server error, внутренняя ошибка сервера — часто возникает из-за того, что веб-сервер предотвращает выполнение скрипта в целях безопасности.
        В связи с этим, в логах Apache, Nginx или PHP не должно быть пусто.

        Либо, предлагаю попробовать переписать использование CURL на встроенный в MODX CURL-клиент — modx.pro/help/7518/#comment-52713

        Также, как вариант, попробовать запустить свой код в компоненте Console. Проверить, будет ли там работать.
          Kinda
          12 апреля 2016, 10:38
          0
          Это в консоле работает а на сайте все равно 500:
          $client = $modx->getService('rest.modRestCurlClient');
          $result = $client->request('https://api.telegram.org/bot[ТОКЕН]/sendMessage?disable_web_page_preview=true&chat_id=[ЧАТ ИД]&text=TEST-BOT', '/', 'POST', $params = array('foo' => 'foo'));
          print $result;

          Хоть и выполняется в консоле, но к сообщению дописывается «Array» (например: TEST-BOTArray)
            Павел Гвоздь
            12 апреля 2016, 11:13
            0
            «Array», наверняка, дописывается по причине того, что ты передаёшь массив параметров в POST запросе. Попробуй переписать на GET…

            И не может всё-таки быть, чтобы в лог ничего не писалось. Может быть ты не туда смотришь?
              Kinda
              12 апреля 2016, 11:35
              0
              Сохранил в снипет с перезаписью теперь все работает и заголовок страницы отправляет. Остался один вопрос как скрыть вывод снипета?

              $url = «api.telegram.org/bot[ТОКЕН]/sendMessage?disable_web_page_preview=true&chat_id=[ЧАТ ИД]&text=TEXT »;
              $message = $modx->resource->get('pagetitle');
              $client = $modx->getService('rest.modRestCurlClient');
              $result = $client->request($url, $message);
              print $result;
                Павел Гвоздь
                12 апреля 2016, 12:09
                0
                Не понял вопроса.
                  Kinda
                  12 апреля 2016, 12:13
                  0
                  На странице снипет выводит следующее:
                  {«ok»:true,«result»:{«message_id»:ID,«from»:{«id»:63901264,«first_name»:«NAME»,«username»:«NAMEBOT»},«chat»:{«id»:ID,«first_name»:«NAME»,«type»:«private»},«date»:1460450949,«text»:«TEXT \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?»}}

                  Этот код снипета должен же работать если его вставить в плагин?
                    Павел Гвоздь
                    12 апреля 2016, 12:16
                    +1
                    Должен. А зачем print делать, если результата отработки не надо выводить? И кстати не print, а return лучше использовать.
                    И код, пожалуйста, в тег code оформляй, когда комментарий пишешь. Ибо невозможно читать и повторно использовать, если кому пригодится.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      11