roman.lesnikov@gmail.com %!s(int64=2) %!d(string=hai) anos
pai
achega
d867e98228

+ 18 - 8
inc/classes/BxDolAI.php

@@ -58,10 +58,13 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
         return $GLOBALS['bxDolClasses'][__CLASS__];
     }
     
-    public static function callHelper($iHelperId, $sMessage)
+    public static function callHelper($mixedHelper, $sMessage)
     {
         $oAI = BxDolAI::getInstance();
-        $aHelper = $oAI->getHelper($iHelperId);
+        if (is_numeric($mixedHelper))
+            $aHelper = $oAI->getHelperById($mixedHelper);
+        else
+             $aHelper = $oAI->getHelperByName($mixedHelper);
         $oAIModel = $oAI->getModelObject($aHelper['model_id']);
         return $oAIModel->getResponseText($aHelper['prompt'], $sMessage);
     }
@@ -108,10 +111,15 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
         return BxDolAIProvider::getObjectInstance($iId);
     }   
 
-    public function getHelper($iId)
+    public function getHelperById($iId)
     {
         return $this->_oDb->getHelpersBy(['sample' => 'id', 'id' => $iId]);
     }
+    
+    public function getHelperByName($sName)
+    {
+        return $this->_oDb->getHelpersBy(['sample' => 'name', 'name' => $sName]);
+    }
 
     public function getAutomator($iId, $bFullInfo = false)
     {
@@ -130,24 +138,26 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
 
         switch($sType) {
             case 'profile':
-                $mixedResult = "\n Profile ID for system actions: " . $mixedParams;
+                $mixedResult = "\n ProfileId for system actions = " . $mixedParams;
                 break;
 
             case 'providers':
                 $aProviders = $this->_oDb->getProvidersBy(['sample' => 'ids', 'ids' => $mixedParams]);
                 if(!empty($aProviders) && is_array($aProviders)) {
-                    $mixedResult = "\n Avaliable proividers list:";
+                    $mixedResult = "\n Proividers list = [";
                     foreach($aProviders as $aProvider)
-                        $mixedResult .= "\n- " . $aProvider['name'] . " - " . $aProvider['type_name'];
+                        $mixedResult .= "\n {'ProviderName' => '" . $aProvider['name'] . "',  'ProviderType' => '" . $aProvider['type_name'] . "'}";
+                    $mixedResult .= "\n ]";
                 }
                 break;
 
             case 'helpers':
                 $aHelpers = $this->_oDb->getHelpersBy(['sample' => 'ids', 'ids' => $mixedParams]);
                 if(!empty($aHelpers) && is_array($aHelpers)) {
-                    $mixedResult = "\n Avaliable helpers list:";
+                    $mixedResult = "\n Helpers list = [";
                     foreach($aHelpers as $aHelper)
-                        $mixedResult .= "\n- " . $aHelper['name'] . " - " . $aHelper['description'];
+                        $mixedResult .= "\n {'" . $aHelper['name'] . "', 'HelperDescription' => '" . $aHelper['description'] . "'}";
+                    $mixedResult .= "\n ]";
                 }
                 break;
         }

+ 7 - 0
inc/classes/BxDolAIQuery.php

@@ -218,7 +218,14 @@ class BxDolAIQuery extends BxDolDb
 
                 $sWhereClause .= " AND `th`.`id`=:id";
                 break;
+            case 'name':
+            	$aMethod['name'] = 'getRow';
+            	$aMethod['params'][1] = [
+                    'name' => $aParams['name']
+                ];
 
+                $sWhereClause .= " AND `th`.`name`=:name";
+                break;
             case 'ids':
                 $sWhereClause = " AND `th`.`id` IN (" . $this->implode_escape($aParams['ids']) . ")";
                 break;

+ 3 - 3
studio/template/scripts/BxBaseStudioAgentsAutomators.php

@@ -70,7 +70,7 @@ class BxBaseStudioAgentsAutomators extends BxDolStudioAgentsAutomators
 
             $oAIModel = $oAI->getModelObject($iModel);
 
-            $sInstructions = $oAI->getAutomatorInstruction('profile', $iProfileId);
+            $sInstructions = "\nAvailable data for code creation:\n".$oAI->getAutomatorInstruction('profile', $iProfileId);
             if(!empty($aProviders) && is_array($aProviders))
                 $sInstructions .= $oAI->getAutomatorInstruction('providers', $aProviders);
             if(!empty($aHelpers) && is_array($aHelpers))
@@ -112,7 +112,7 @@ class BxBaseStudioAgentsAutomators extends BxDolStudioAgentsAutomators
             }
 
             if($bIsValid) {
-                if(($sResponse = $oAIModel->getResponse($sType, $sMessage . $sInstructions . $sMessageAdd, $oAIModel->getParams())) !== false) {
+                if(($sResponse = $oAIModel->getResponse($sType, $sMessage . $sInstructions . "\n Use data from alert accoding documentation:" . $sMessageAdd, $oAIModel->getParams())) !== false) {
                     $sMessageResponse = $sResponse;
                 }
                 else {
@@ -287,7 +287,7 @@ class BxBaseStudioAgentsAutomators extends BxDolStudioAgentsAutomators
 
             if($oForm->update($iId, $aValsToAdd) !== false) {
                 if(($oCmts = BxDolCmts::getObjectInstance($this->_sCmts, $iId)) !== null) {
-                    $sInstructions = $oAI->getAutomatorInstruction('profile', $iProfileId);
+                    $sInstructions = "\nAvailable data for code creation:\n".$oAI->getAutomatorInstruction('profile', $iProfileId);
 
                     $aProviders = $this->_oDb->getAutomatorsBy(['sample' => 'providers_by_id_pairs', 'id' => $iId]);
                     if(!empty($aProviders) && is_array($aProviders))