Ejemplo n.º 1
0
 public function generateAnswer($userMessage, $userName = '', $dateTime = 0)
 {
     $request = new TchatMessage($userMessage, $userName, $dateTime);
     if (!$this->positrons->isBotTriggered($request)) {
         return null;
     }
     $request = $this->positrons->analyseRequest($request);
     $memory = $this->positrons->loadMemory($request);
     $answer = $this->positrons->generateSymbolicAnswer($request, $memory);
     $answer = $this->positrons->provideMeaning($request, $memory, $answer);
     $answer = $this->positrons->beautifyAnswer($request, $memory, $answer);
     if (null == $answer || '' == $answer->getMessage() && '' == $answer->getName()) {
         $answer = new TchatMessage('Ssqdijoezf ? Jkfd.', 'QTzbn');
     }
     return $answer->toArray();
 }
Ejemplo n.º 2
0
 public function isBotTriggered(TchatMessage $request, $currentAnswer = true)
 {
     $content = $request->getMessage();
     $triggered = NULL != $content;
     $identity = $this->knowledges->identity;
     // Triggered by specific rules
     if (isset($identity->trigger) && !empty($identity->trigger)) {
         // Called by his name
         if (!empty($identity->trigger->called)) {
             $triggered &= preg_match('!(?:^|\\s|[_-])(' . implode('|', $identity->trigger->called) . ')(?:$|\\s|[\'_-])!i', $content);
         }
         // Specific sentance
         if (!empty($identity->trigger->sentance)) {
             $triggered &= preg_match('!(' . implode('|', $identity->trigger->sentance) . ')!i', $content);
         }
     }
     return $triggered;
 }
Ejemplo n.º 3
0
 public function analyseRequest(TchatMessage $request, AnalysedRequest $currentAnalysedRequest = null)
 {
     if (empty($this->selectedPositrons)) {
         return new AnalysedRequest($request->getMessage(), $request->getName(), $request->getDate(), $request);
     }
     foreach ($this->selectedPositrons as $positron) {
         $currentAnalysedRequest = $positron->analyseRequest($request, $currentAnalysedRequest);
     }
     if (null == $currentAnalysedRequest) {
         $currentAnalysedRequest = new AnalysedRequest($request->getMessage(), $request->getName(), $request->getDate(), $request);
     }
     return $currentAnalysedRequest;
 }