承接 digilopment/n8n-client 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

digilopment/n8n-client

最新稳定版本:v0.0.1

Composer 安装命令:

composer require digilopment/n8n-client

包简介

PHP client library for n8n webhook integration

README 文档

README

PHP client library for n8n webhook integration.

Installation

composer require digilopment/n8n-client

Configuration

Create a .env file in your project root:

N8N_BASE_URL=https://your-n8n-instance.com
N8N_BEARER_TOKEN=your_bearer_token_here
N8N_ENVIRONMENT=production

The .env file is automatically loaded when you use the Config class.

Quick Start

Backend (ajax.php)

<?php

require 'vendor/autoload.php';

use Digilopment\N8NClient\Services\Handler;

$data = [
    'tema' => $_POST['tema'] ?? null,
];

$errorData = [
    'message' => 'Chyba pri generovaní',
    'details' => null,
];

(new Handler())
    ->setData($data)
    ->handleJson('generuj-obsah')
    ->getAll()
    ->ifError($errorData)
    ->getData();

Frontend (index.html)

<!DOCTYPE html>
<html lang="sk">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Generátor</title>
    <style>
        body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; line-height: 1.6; background-color: #f9f9f9; color: #333; }
        h1 { color: #1a1a1a; text-align: center; }
        .input-group { display: flex; gap: 10px; margin-bottom: 30px; background: white; padding: 20px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); }
        input { flex-grow: 1; padding: 12px; border: 1px solid #ddd; border-radius: 5px; outline: none; font-size: 16px; }
        input:focus { border-color: #007bff; }
        button { padding: 12px 24px; background: #007bff; color: white; border: none; cursor: pointer; border-radius: 5px; font-weight: bold; transition: background 0.2s; }
        button:hover { background: #0056b3; }
        button:disabled { background: #ccc; cursor: not-allowed; }
        #result { display: none; background: white; padding: 30px; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); margin-top: 20px; animation: fadeIn 0.4s ease-out; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        #res-title { color: #007bff; margin-top: 0; }
        #res-desc { color: #666; font-size: 1.1em; display: block; margin-bottom: 15px; }
        hr { border: 0; border-top: 1px solid #eee; margin: 20px 0; }
        #res-content p { margin-bottom: 15px; }
        .loader { display: none; text-align: center; color: #666; font-style: italic; margin: 20px 0; }
    </style>
</head>
<body>
    <h1>🤖 Gemini AI Content Writer</h1>
    
    <div class="input-group">
        <input type="text" id="topic" placeholder="Zadaj tému (napr. Výhody n8n automatizácie)...">
        <button id="btn-generate">Generuj</button>
    </div>
    <div id="loader" class="loader">Gemini premýšľa, vydrž chvíľu...</div>
    <div id="result">
        <h2 id="res-title"></h2>
        <em id="res-desc"></em>
        <hr>
        <div id="res-content"></div>
    </div>
    <script>
        document.getElementById('btn-generate').addEventListener('click', async () => {
            const topic = document.getElementById('topic').value;
            const btn = document.getElementById('btn-generate');
            const loader = document.getElementById('loader');
            const resultDiv = document.getElementById('result');
            if (!topic) return alert('Zadaj tému!');

            btn.disabled = true;
            loader.style.display = 'block';
            resultDiv.style.display = 'none';

            try {
                const formData = new FormData();
                formData.append('tema', topic);

                const response = await fetch('ajax.php', {
                    method: 'POST',
                    body: formData
                });
                if (!response.ok) throw new Error('Server neodpovedá (HTTP ' + response.status + ')');
                
                const responseData = await response.json();

                let finalContent = {};

                // Nový formát: {data: {...}, type: 'json'} alebo {data: '...', type: 'text'}
                if (responseData.type === 'json' && responseData.data) {
                    finalContent = responseData.data;
                } else if (responseData.type === 'text' && responseData.data) {
                    finalContent = {
                        title: 'Odpoveď',
                        description: '',
                        content: '<p>' + responseData.data + '</p>'
                    };
                } else {
                    const content = Array.isArray(responseData) ? responseData[0] : responseData;
                    finalContent = typeof content === 'string' ? JSON.parse(content) : content;
                }

                document.getElementById('res-title').innerText = finalContent.title || 'Bez názvu';
                document.getElementById('res-desc').innerText = finalContent.description || '';
                document.getElementById('res-content').innerHTML = finalContent.content || '<p>Žiaden obsah nebol vygenerovaný.</p>';
                
                resultDiv.style.display = 'block';
            } catch (error) {
                console.error('Error details:', error);
                alert('Chyba pri generovaní: ' + error.message);
            } finally {
                btn.disabled = false;
                loader.style.display = 'none';
            }
        });
    </script>
</body>
</html>

License

MIT

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-19

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固