Chat
2. PHP Chat Classes & Targets

Agents, Workflows & Chat Tools

Agents, Workflows & Chat Tools

Tokomono\Chat\Services\ChatExecutionService supports three types of targets in Chat::target():

  1. Laravel AI Agent Class (Laravel\Ai\Contracts\Agent):
    public function target(): string
    {
        return \App\Ai\Agents\SupportAgent::class;
    }
    
  2. Tokomono AI Suite Agent (Tokomono\AiSuite\Models\Agent): Reference by sync_hash or agent:{sync_hash}:
    public function target(): string
    {
        return 'agent:a1b2c3d4';
    }
    
  3. Tokomono AI Suite Workflow (Tokomono\AiSuite\Contracts\WorkflowInterface): Reference by Workflow class name or workflow:{sync_hash}:
    public function target(): string
    {
        return \App\Ai\Workflows\CustomerOnboardingWorkflow::class;
    }
    

Sending Locations & Images from the Server

To force the client chat UI to render a Location Map Modal (ChatLocationMessage.vue) or Image Lightbox Modal (ChatImageMessage.vue), attach the built-in tools to your Agent or return a ChatPayloadDto from a Workflow module:

Using AI Tools in an Agent

use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\HasTools;
use Laravel\Ai\Promptable;
use Tokomono\Chat\Tools\SendImageToChatTool;
use Tokomono\Chat\Tools\SendLocationToChatTool;

class ConciergeAgent implements Agent, HasTools
{
    use Promptable;

    public function instructions(): string
    {
        return 'You are a concierge. Use tools to show locations on a map or display images.';
    }

    public function tools(): iterable
    {
        return [
            new SendLocationToChatTool,
            new SendImageToChatTool,
        ];
    }
}

Returning Typed Payloads from a Workflow Module

use Tokomono\Chat\DTOs\ChatPayloadDto;

// Return a map location card with modal preview:
return ChatPayloadDto::location(52.3676, 4.9041, 'Amsterdam Office')->toArray();

// Return an image card with lightbox modal preview:
return ChatPayloadDto::image('https://example.com/floorplan.png', 'Floorplan')->toArray();