File "ConversationManager-20250408165858.php"
Full Path: /home/fundopuh/trader.fxex.org/vendor/botman/botman/src/Commands/ConversationManager-20250408165858.php
File size: 3.1 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace BotMan\BotMan\Commands;
use BotMan\BotMan\Interfaces\DriverInterface;
use BotMan\BotMan\Messages\Attachments\Audio;
use BotMan\BotMan\Messages\Attachments\Contact;
use BotMan\BotMan\Messages\Attachments\File;
use BotMan\BotMan\Messages\Attachments\Image;
use BotMan\BotMan\Messages\Attachments\Location;
use BotMan\BotMan\Messages\Attachments\Video;
use BotMan\BotMan\Messages\Incoming\Answer;
use BotMan\BotMan\Messages\Incoming\IncomingMessage;
use BotMan\BotMan\Messages\Matcher;
use BotMan\BotMan\Messages\Matching\MatchingMessage;
use BotMan\BotMan\Middleware\MiddlewareManager;
use Illuminate\Support\Collection;
class ConversationManager
{
protected $matcher;
public function __construct(?Matcher $matcher = null)
{
$this->matcher = $matcher ?? new Matcher();
}
/**
* Messages to listen to.
* @var Command[]
*/
protected $listenTo = [];
public function listenTo(Command $command)
{
$this->listenTo[] = $command;
}
/**
* Add additional data (image,video,audio,location,files) data to
* callable parameters.
*
* @param IncomingMessage $message
* @param array $parameters
* @return array
*/
public function addDataParameters(IncomingMessage $message, array $parameters)
{
$messageText = $message->getText();
if ($messageText === Image::PATTERN) {
$parameters[] = $message->getImages();
} elseif ($messageText === Video::PATTERN) {
$parameters[] = $message->getVideos();
} elseif ($messageText === Audio::PATTERN) {
$parameters[] = $message->getAudio();
} elseif ($messageText === Location::PATTERN) {
$parameters[] = $message->getLocation();
} elseif ($messageText === Contact::PATTERN) {
$parameters[] = $message->getContact();
} elseif ($messageText === File::PATTERN) {
$parameters[] = $message->getFiles();
}
return $parameters;
}
/**
* @param IncomingMessage[] $messages
* @param MiddlewareManager $middleware
* @param Answer $answer
* @param DriverInterface $driver
* @param bool $withReceivedMiddleware
* @return array|MatchingMessage[]
*/
public function getMatchingMessages($messages, MiddlewareManager $middleware, Answer $answer, DriverInterface $driver, $withReceivedMiddleware = true): array
{
$messages = Collection::make($messages)->reject(function (IncomingMessage $message) {
return $message->isFromBot();
});
$matchingMessages = [];
foreach ($messages as $message) {
if ($withReceivedMiddleware) {
$message = $middleware->applyMiddleware('received', $message);
}
foreach ($this->listenTo as $command) {
if ($this->matcher->isMessageMatching($message, $answer, $command, $driver, $middleware->matching())) {
$matchingMessages[] = new MatchingMessage($command, $message, $this->matcher->getMatches());
}
}
}
return $matchingMessages;
}
}