• Как отправить несколько изображений в телеграм через sendMediaGroup?

    @seopublic
    var media = JSON.stringify([{
        "type": "photo",
        "media": "https://site.ru/uploads/image1.jpg",
        "caption": "Текст к группе фотографий"
    }, {
        "type": "photo",
        "media": "https://site.ru/uploads/image2.jpg"
    }, {
        "type": "photo",
        "media": "https://site.ru/uploads/image3.png"
    }]);
    
    jQuery.ajax({
        type: "POST",
        url: "https://api.telegram.org/bot" + token + "/sendMediaGroup?chat_id=" + chatid,
        data: "media=" + media,
    });


    1. Без JSON.stringify не хочет работать.
    2. Заметьте, "caption": "текст" есть только у первого фото. Если добавите ко всем, то отображаться под фото не будет. Будет в описании каждого фото, при пролистовании.
    Ограничение текста 1024 символов.
    Ответ написан
    Комментировать
  • Как подключится к SMTP Yandex?

    @seopublic
    Вот тут расписал что мне помогло: https://qna.habr.com/answer?answer_id=2192018
    Ответ написан
    Комментировать
  • PHPMailer не отправляет почту на yandex, что не так?

    @seopublic
    8 часов убил на выяснение. почему мой скрипт отправляет письмо, а не один из плагинов не хочет.
    Решение нашёл следующее

    скачал библиотеку PHPMailer-6.6.3
    переподключил

    require_once __DIR__ . '/PHPMailer/Exception.php';
    require_once __DIR__ . '/PHPMailer/PHPMailer.php';
    require_once __DIR__ . '/PHPMailer/SMTP.php';
    
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\SMTP;
    
    //и главная строчка: 
    $phpmailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;  //Без которой письмо на 587й порт по tls не уходит.
    
    //другие параметры:
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    $mail->isSMTP();    
    $mail->Mailer = 'tls';  
    $mail->Host       = 'smtp.yandex.ru';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'noreply@mydomain.ru';	
    $mail->Password   = 'пароль от ящика noreply@mydomain.ru';
        
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port       = 587;


    В итоге зашёл в один из плагинов вордпресс, переопределил библиотеку PHPMailer и всё заработало.

    Всё дело в том, что мой хостер блочит порты и не разрешает соединяться напрямую с smtp, а для разблокировки портов, просит чуть-ли не наторильную доверенность, сканы 10 документов и т.д.
    Ответ написан
    Комментировать
  • Как настроить отправку заказов по API на Сквозную Аналитику Яндекс.Метрики?

    @seopublic
    Есть готовая библиотека: https://github.com/crawler364/yandex-metrika-sdk
    Ответ написан
    Комментировать
  • Почему не отправляются сообщения в telegram через php?

    @seopublic
    Вы также отправляете сообщение боту, указав его токен, самого бота нужно добавить в этот групповой чат, в качестве chat_id указать id группы, она будет с минусом.
    Ответ написан
    Комментировать
  • Как правильно составить запрос CURL POST?

    @seopublic
    можете этот код попробовать, он рабочий:

    require '../../vendor/autoload.php';
    
      use Sendpulse\RestApi\ApiClient;
      use Sendpulse\RestApi\Storage\FileStorage;
    
       define( 'API_USER_ID', $_GET['client-id'] );
       define( 'API_SECRET', $_GET['secret-id'] );
       define( 'TOKEN_STORAGE', 'file' );
    
       $SPApiProxy = new ApiClient( API_USER_ID, API_SECRET, new FileStorage() );
    
    $emails = array(
                array(
                  'email' => $_GET['email'],
                  'variables' => array(
                      'Phone' => $_GET['phone'],
                      'Name' => $_GET['name'],
                    )
                    ),
                 );
    $bookID = $_GET['bookID'];
    $result = $SPApiProxy->addEmails($bookID,$emails);
    $json_result = json_encode($result);
    $json_beautified = str_replace(array("{", "}", ","), array("{<br />&nbsp;&nbsp;&nbsp;&nbsp;", "<br />}", ",<br />&nbsp;&nbsp;&nbsp;&nbsp;"), $json_result);
    print_r($json_beautified);
    Ответ написан
    Комментировать
  • Почему не отправляется запрос на sendpulse?

    @seopublic
    Можете воспользоваться готовым кодом:

    require '../../vendor/autoload.php';
    
      use Sendpulse\RestApi\ApiClient;
      use Sendpulse\RestApi\Storage\FileStorage;
    
       define( 'API_USER_ID', $_GET['client-id'] );
       define( 'API_SECRET', $_GET['secret-id'] );
       define( 'TOKEN_STORAGE', 'file' );
    
       $SPApiProxy = new ApiClient( API_USER_ID, API_SECRET, new FileStorage() );
    
    $emails = array(
                array(
                  'email' => $_GET['email'],
                  'variables' => array(
                      'Phone' => $_GET['phone'],
                      'Name' => $_GET['name'],
                    )
                    ),
                 );
    $bookID = $_GET['bookID'];
    $result = $SPApiProxy->addEmails($bookID,$emails);
    $json_result = json_encode($result);
    $json_beautified = str_replace(array("{", "}", ","), array("{<br />&nbsp;&nbsp;&nbsp;&nbsp;", "<br />}", ",<br />&nbsp;&nbsp;&nbsp;&nbsp;"), $json_result);
    print_r($json_beautified);
    Ответ написан
    Комментировать
  • Почему php требует ssl сертификат?

    @seopublic
    function file_get_contents_curl( $url ) {
    
      $ch = curl_init();
    
      curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
      curl_setopt( $ch, CURLOPT_HEADER, 0 );
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
      curl_setopt( $ch, CURLOPT_URL, $url );
      curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
    
      $data = curl_exec( $ch );
      curl_close( $ch );
    
      return $data;
    
    }


    Затем просто используйте file_get_contents_curl вместо file_get_contents всякий раз, когда вы вызываете URL-адрес, начинающийся с https.
    Ответ написан
    Комментировать