<?php 
include __DIR__ . '/vendor/autoload.php'; 
use PhpAmqpLib\Connection\AMQPStreamConnection; 
use PhpAmqpLib\Exchange\AMQPExchangeType; 
use PhpAmqpLib\Message\AMQPMessage; 
 
/* 
 * ????????? ??????? https://transformer-de.bitrix.info/json/add_queue.php 
 * ???? http://bitrix24.host.ru/secret_url/add_queue.php 
 * */ 
 
define('HOST', getenv('RABBITMQ_HOST') ? getenv('RABBITMQ_HOST') : '127.0.0.1'); 
define('PORT', getenv('RABBITMQ_PORT') ? getenv('RABBITMQ_PORT') : 5672); 
define('USER', getenv('RABBITMQ_USER') ? getenv('RABBITMQ_USER') : 'guest'); 
define('PASS', getenv('RABBITMQ_PASS') ? getenv('RABBITMQ_PASS') : 'guest'); 
define('VHOST', '/'); 
define('AMQP_DEBUG', getenv('AMQP_DEBUG') !== false ? (bool)getenv('AMQP_DEBUG') : false); 
define('DEBUG', getenv('DEBUG') !== false ? (bool)getenv('DEBUG') : false); 
 
try { 
    $exchange = 'bitrix'; 
    $queue = ''; 
 
    file_put_contents('/tmp/abb_traqnsform.log', date('d.m.y H:i:s') . PHP_EOL, FILE_APPEND); 
    file_put_contents('/tmp/abb_traqnsform.log', json_encode($_POST) . PHP_EOL, FILE_APPEND); 
    file_put_contents('/tmp/abb_traqnsform.log', json_encode($_SERVER) . PHP_EOL, FILE_APPEND); 
    # ???????? ??????? 
    // {"command":"Bitrix\\TransformerController\\Document","params":{"documentId":"9","queue":"documentgenerator_create","file":"https:\/\/bitrix24.ru\/upload\/documentgenerator\/920\/5ln4gt0wbnzh8h8035gkpk0wobvo2s2s\/Schet_faktura_Rossiya_1.docx","fileSize":"29232","formats":{"jpg":"jpg","pdf":"pdf"},"back_url":"https:\/\/bitrix24.ru\/bitrix\/tools\/transformer_result.php?id=XWeti6XidT625428cb0978c"},"QUEUE":"documentgenerator_create","BX_LICENCE":"6b78d816e3","BX_DOMAIN":"https:\/\/bitrix24.ru","BX_TYPE":"BOX","BX_VERSION":"1","BX_HASH":"a31ff1c2c72f10b20d9bf814d0b7"} 
    $in = &$_POST; 
    $ret = [ 
        'success' => true, 
        'result' => [ 
            'code' => 400, 
        ] 
    ]; 
 
    if ($in['command'] == 'Bitrix\\TransformerController\\Document') { 
        $queue=$in['QUEUE']; 
        $connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST); 
        $channel = $connection->channel(); 
        $channel->queue_declare($queue, false, true, false, false, false, ['x-message-ttl' => ['I', 86400000]]); 
        $channel->exchange_declare($exchange, AMQPExchangeType::DIRECT, false, true, false); 
        $channel->queue_bind($queue, $exchange); 
        $messageBody = json_encode($in['params'], 256); 
        $message = new AMQPMessage($messageBody, array('content_type' => 'text/plain', 'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)); 
        $channel->basic_publish($message, $exchange); 
        $channel->close(); 
        $connection->close(); 
        # ????????? ? ??????????? ???????? ???? url ? $in['params'] 
        # ???????????? ? ??????????? ??????? 
        # echo exec('docker run --rm -it -v '.__DIR__.':/tmp --name libreoffice-headless ipunktbs/docker-libreoffice-headless:latest --convert-to jpg "???????????? (??????) 1.docx"'); 
        # ???????????  ????????? ????? ??? ???????? ??????? ?? ???? ? ?????????? ????????????????? ????? ?? 1 ??, ??????? ??? ??????? ???????? 
        # ?????????? ????????????? ?????????? ??????         
    } else { 
        throw new Exception('??????? ?? ??????????????'); 
    } 
} catch (Exception $e) { 
    $ret['success'] = false; 
    $ret['result']['code'] = 1000; 
    $ret['result']['msg'] = $e->getMessage(); 
} 
echo json_encode($ret);
 
 |