Skip to main content
Glama
ChatController.php4.15 kB
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class ChatController extends Controller { public function chat(Request $request) { $request->validate([ 'message' => 'required|string', ]); $userMessage = $request->input('message'); $n8nWebhookUrl = env('N8N_WEBHOOK_URL'); if (!$n8nWebhookUrl) { return response()->json([ 'success' => false, 'error' => 'n8n webhook URL 未配置', ], 500); } try { // 發送消息到 n8n webhook $response = Http::timeout(30)->post($n8nWebhookUrl, [ 'chatInput' => $userMessage, 'timestamp' => now()->toISOString(), 'source' => 'mcp_demo_chat', 'user_id' => $request->session()->getId(), 'mcp_service_url' => url('/mcp'), 'mcp_sse_endpoint' => url('/mcp/sse'), 'mcp_stdio_endpoint' => url('/mcp/stdio'), 'mcp_config' => [ 'protocol_version' => '2024-11-05', 'transport' => 'sse', 'command' => 'php artisan mcp:server', 'cwd' => base_path() ], 'context' => [ 'app_name' => config('app.name'), 'app_url' => config('app.url'), 'available_tools' => [ 'get_orders', 'get_products', 'get_customer_stats', 'get_order_analytics' ] ] ]); return $this->response->json($response->json()); if ($response->successful()) { $responseData = $response->json(); // 檢查 n8n 回應格式 if (isset($responseData['response'])) { return response()->json([ 'success' => true, 'response' => $responseData['response'], 'source' => 'n8n_webhook' ]); } elseif (isset($responseData['message'])) { return response()->json([ 'success' => true, 'response' => $responseData['message'], 'source' => 'n8n_webhook' ]); } else { // 如果 n8n 直接返回字符串 return response()->json([ 'success' => true, 'response' => is_string($responseData) ? $responseData : json_encode($responseData), 'source' => 'n8n_webhook' ]); } } else { Log::error('n8n webhook 調用失敗', [ 'status' => $response->status(), 'body' => $response->body(), 'url' => $n8nWebhookUrl ]); return response()->json([ 'success' => false, 'error' => 'AI 服務暫時不可用 (錯誤代碼: ' . $response->status() . ')', ], 500); } } catch (\Illuminate\Http\Client\ConnectionException $e) { Log::error('n8n webhook 連接超時', [ 'error' => $e->getMessage(), 'url' => $n8nWebhookUrl ]); return response()->json([ 'success' => false, 'error' => 'AI 服務連接超時,請稍後再試', ], 500); } catch (\Exception $e) { Log::error('n8n webhook 調用異常', [ 'error' => $e->getMessage(), 'url' => $n8nWebhookUrl ]); return response()->json([ 'success' => false, 'error' => 'AI 服務暫時不可用,請稍後再試', ], 500); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/uberr2000/mcp_demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server