php-agentic/Mcp/Prompts/ConfigureNotificationsPrompt.php
Snider ad83825f93 refactor: rename namespace Core\Agentic to Core\Mod\Agentic
Updates all classes to use the new modular namespace convention.
Adds Service/ layer with Core\Service\Agentic for service definition.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 16:12:58 +00:00

239 lines
5.1 KiB
PHP

<?php
namespace Core\Mod\Agentic\Mcp\Prompts;
use Laravel\Mcp\Response;
use Laravel\Mcp\Server\Prompt;
use Laravel\Mcp\Server\Prompts\Argument;
/**
* MCP prompt for configuring biolink notifications.
*
* Guides through setting up notification handlers for various events
* like clicks, form submissions, and payments.
*
* Part of TASK-011 Phase 12: MCP Tools Expansion for BioHost (AC53).
*/
class ConfigureNotificationsPrompt extends Prompt
{
protected string $name = 'configure_notifications';
protected string $title = 'Configure Notifications';
protected string $description = 'Set up notification handlers for biolink events (clicks, form submissions, etc.)';
/**
* @return array<int, Argument>
*/
public function arguments(): array
{
return [
new Argument(
name: 'biolink_id',
description: 'The ID of the biolink to configure notifications for',
required: true
),
new Argument(
name: 'notification_type',
description: 'Type of notification: webhook, email, slack, discord, or telegram',
required: false
),
];
}
public function handle(): Response
{
return Response::text(<<<'PROMPT'
# Configure Biolink Notifications
Set up real-time notifications when visitors interact with your biolink page.
## Available Event Types
| Event | Description |
|-------|-------------|
| `click` | Page view or link click |
| `block_click` | Specific block clicked |
| `form_submit` | Email/phone/contact form submission |
| `payment` | Payment received (if applicable) |
## Available Handler Types
### 1. Webhook (Custom Integration)
Send HTTP POST requests to your own endpoint:
```json
{
"action": "create_notification_handler",
"biolink_id": <biolink_id>,
"name": "My Webhook",
"type": "webhook",
"events": ["form_submit", "payment"],
"settings": {
"url": "https://your-server.com/webhook",
"secret": "optional-hmac-secret"
}
}
```
Webhook payload includes:
- Event type and timestamp
- Biolink and block details
- Visitor data (country, device type)
- Form data (for submissions)
- HMAC signature header if secret is set
### 2. Email Notifications
Send email alerts:
```json
{
"action": "create_notification_handler",
"biolink_id": <biolink_id>,
"name": "Email Alerts",
"type": "email",
"events": ["form_submit"],
"settings": {
"recipients": ["alerts@example.com", "team@example.com"],
"subject_prefix": "[BioLink]"
}
}
```
### 3. Slack Integration
Post to a Slack channel:
```json
{
"action": "create_notification_handler",
"biolink_id": <biolink_id>,
"name": "Slack Notifications",
"type": "slack",
"events": ["form_submit", "click"],
"settings": {
"webhook_url": "https://hooks.slack.com/services/T.../B.../xxx",
"channel": "#leads",
"username": "BioLink Bot"
}
}
```
To get a Slack webhook URL:
1. Go to https://api.slack.com/apps
2. Create or select an app
3. Enable "Incoming Webhooks"
4. Add a webhook to your workspace
### 4. Discord Integration
Post to a Discord channel:
```json
{
"action": "create_notification_handler",
"biolink_id": <biolink_id>,
"name": "Discord Notifications",
"type": "discord",
"events": ["form_submit"],
"settings": {
"webhook_url": "https://discord.com/api/webhooks/xxx/yyy",
"username": "BioLink"
}
}
```
To get a Discord webhook URL:
1. Open channel settings
2. Go to Integrations > Webhooks
3. Create a new webhook
### 5. Telegram Integration
Send messages to a Telegram chat:
```json
{
"action": "create_notification_handler",
"biolink_id": <biolink_id>,
"name": "Telegram Alerts",
"type": "telegram",
"events": ["form_submit"],
"settings": {
"bot_token": "123456:ABC-DEF...",
"chat_id": "-1001234567890"
}
}
```
To set up Telegram:
1. Message @BotFather to create a bot
2. Get the bot token
3. Add the bot to your group/channel
4. Get the chat ID (use @userinfobot or API)
## Managing Handlers
### List Existing Handlers
```json
{
"action": "list_notification_handlers",
"biolink_id": <biolink_id>
}
```
### Update a Handler
```json
{
"action": "update_notification_handler",
"handler_id": <handler_id>,
"events": ["form_submit"],
"is_enabled": true
}
```
### Test a Handler
```json
{
"action": "test_notification_handler",
"handler_id": <handler_id>
}
```
### Disable or Delete
```json
{
"action": "update_notification_handler",
"handler_id": <handler_id>,
"is_enabled": false
}
```
```json
{
"action": "delete_notification_handler",
"handler_id": <handler_id>
}
```
## Auto-Disable Behaviour
Handlers are automatically disabled after 5 consecutive failures. To re-enable:
```json
{
"action": "update_notification_handler",
"handler_id": <handler_id>,
"is_enabled": true
}
```
This resets the failure counter.
---
**Tips:**
- Use form_submit events for lead generation alerts
- Combine multiple handlers for redundancy
- Test handlers after creation to verify configuration
- Monitor trigger_count and consecutive_failures in list output
PROMPT
);
}
}