feat: SmartAssistant v2.2.0 — EspoCRM sends its own credentials to AI Gateway

- EspoCRM sends url + apiKey in every request to the gateway
- New Integration field: espocrmApiKey
- Gateway no longer needs ESPOCRM_URL/ESPOCRM_API_KEY env vars

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 06:46:13 +00:00
parent 026c32a3f7
commit 2fe807b7f9
5 changed files with 25 additions and 1 deletions
@@ -3,6 +3,7 @@
"fields": {
"webhookUrl": "Webhook URL",
"apiKey": "API Key",
"espocrmApiKey": "EspoCRM API Key",
"maxMessagesPerHour": "Max Messages Per Hour",
"inactivityWarningDays": "Inactivity Warning Days",
"inactivityCriticalDays": "Inactivity Critical Days",
@@ -3,6 +3,7 @@
"fields": {
"webhookUrl": "כתובת Webhook",
"apiKey": "מפתח API",
"espocrmApiKey": "מפתח API של EspoCRM",
"maxMessagesPerHour": "מקסימום הודעות לשעה",
"inactivityWarningDays": "ימים לאזהרת חוסר פעילות",
"inactivityCriticalDays": "ימים לאזהרה קריטית",
@@ -8,6 +8,10 @@
"type": "varchar",
"maxLength": 255
},
"espocrmApiKey": {
"type": "varchar",
"maxLength": 255
},
"maxMessagesPerHour": {
"type": "int",
"default": 30
@@ -374,12 +374,18 @@ class SmartAssistantService
throw new Error('SmartAssistant webhook URL is not configured. Go to Admin > Integrations > Smart Assistant.');
}
$siteUrl = $this->config->get('siteUrl') ?? '';
$payload = json_encode([
'message' => $message,
'context' => $context,
'conversationId' => $conversationId,
'conversationHistory' => $history,
'mode' => $mode,
'espocrm' => [
'url' => rtrim($siteUrl, '/'),
'apiKey' => $this->getEspocrmApiKey(),
],
]);
$headers = ['Content-Type: application/json', 'Accept: application/json'];
@@ -459,6 +465,18 @@ class SmartAssistantService
return null;
}
private function getEspocrmApiKey(): ?string
{
$integration = $this->entityManager->getEntityById('Integration', 'SmartAssistant');
if ($integration && $integration->get('enabled')) {
$data = $integration->get('data') ?? (object) [];
if (!empty($data->espocrmApiKey)) {
return $data->espocrmApiKey;
}
}
return null;
}
private function getThresholds(): array
{
$integration = $this->entityManager->getEntityById('Integration', 'SmartAssistant');
+1 -1
View File
@@ -3,7 +3,7 @@
"module": "SmartAssistant",
"description": "Unified AI Assistant for Legal CRM — floating chat with case memory, office alerts, and AI Gateway integration",
"author": "klear",
"version": "2.1.3",
"version": "2.2.0",
"acceptableVersions": [
">=8.0.0"
],