Просмотр исходного кода

#5406 AI Agents revamp: form input trigger

Aleksandr Trofimov 3 месяцев назад
Родитель
Сommit
7dcda69495

+ 1 - 1
inc/classes/BxDolAI.php

@@ -392,7 +392,7 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
 
         // set additional params
         $aParams = [];
-        if ('message' == $sType) {
+        if ('message' == $sType || 'form-input' == $sType) {
             $aParams = ['chat_history_subindex' => $mixedParams['sender_profile_id']];
         }
 

+ 10 - 12
studio/template/agents_agents_form_input_select.html

@@ -5,19 +5,17 @@
         </bx_repeat:form_inputs>
     </select>
     </div>
-    <script>
-        function formatItem(state) {
-            return $(`
-            <div class="bx-form-input-wrap">
-                <div>
-                    <div class="bx-form-input-data">${state.text || state.id}</div>
-                </div>
-            </div>
-            `);
-        }
-        
+    <script>        
         $('#bx-agents-agents-form-input').select2({
-            templateResult: formatItem,
+            templateResult: (state) => {
+                return $(`
+                    <div class="bx-form-input-wrap">
+                    <div>
+                        <div class="bx-form-input-data">${state.text || state.id}</div>
+                    </div>
+                    </div>
+                `);
+            },
             templateSelection: d => d.text,
             tags: true, // allow custom inputs
             createTag: function (params) {            

+ 9 - 11
studio/template/agents_agents_form_object_select.html

@@ -6,18 +6,16 @@
 </select>
 </div>
 <script>
-    function formatItem(state) {
-        return $(`
-        <div class="bx-form-object-wrap">
-            <div>
-                <div class="bx-form-object-text">${state.text || state.id}</div>
-            </div>
-        </div>
-        `);
-    }
-    
     $('#bx-agents-agents-form-object').select2({
-        templateResult: formatItem,
+        templateResult: (state) => {
+            return $(`
+                <div class="bx-form-object-wrap">
+                    <div>
+                        <div class="bx-form-object-text">${state.text || state.id}</div>
+                    </div>
+                </div>
+            `);
+        },
         templateSelection: d => d.text,
         tags: true, // allow custom inputs
         createTag: function (params) {            

+ 17 - 2
template/scripts/BxBaseServices.php

@@ -1755,7 +1755,8 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
 
     public function serviceCallAgentForFormInput($iAgentId)
     {
-        // TODO: check auth and permissions
+        if (!bx_get_logged_profile_id())
+            return echoJson(['code' => 403, 'msg' => _t('_sys_agents_unauthorized')]);
 
         $sJson = file_get_contents('php://input');
         $aData = json_decode($sJson, true);
@@ -1767,7 +1768,21 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
         $sInputName = $aData['input_name'] ?? null;
         $aValues = $aData['values'] ?? [];
 
-        return echoJson(['code' => 200, 'msg' => 'Great! ' . $sPrompt . random_int(1000, 9999) . ($aValues[$sInputName] ?? '')]);
+        $aAgent = BxDolAiQuery::getAgentObject($iAgentId);
+        if (!$aAgent || !$aAgent['active'])
+            return echoJson(['code' => 404, 'msg' => _t('_sys_agents_agent_not_found')]);
+        
+        $aParams = [
+            'sender_profile_id' => bx_get_logged_profile_id(),
+            'user_prompt' => $sPrompt,
+            'form_field_name' => $sInputName,
+            'form_values' => $aValues,
+        ];
+
+        $oAi = BxDolAI::getInstance();
+        $mixed = $oAi->callAgent('form-input', $aAgent, $aParams);
+
+        return echoJson(['code' => 200, 'msg' => $mixed]);
     }
 
 }