39 lines
1.5 KiB
PHP
39 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Core\Flows;
|
|
|
|
/**
|
|
* TestFlow
|
|
* A basic interactive flow for testing the multi-stage system.
|
|
*/
|
|
class TestFlow extends BaseFlow
|
|
{
|
|
public function handleStep(string $step, array $messageData, array &$context): FlowResult
|
|
{
|
|
$text = isset($messageData['body']) ? trim($messageData['body']) : '';
|
|
|
|
switch ($step) {
|
|
case 'start':
|
|
// Initiate step
|
|
return new FlowResult("أهلاً بك في اختبار المسار التفاعلي! ما هو اسمك الكريم؟", "ask_name");
|
|
|
|
case 'ask_name':
|
|
if (empty($text)) {
|
|
return new FlowResult("يرجى إدخال اسمك للاستمرار:", "ask_name");
|
|
}
|
|
$context['name'] = $text;
|
|
return new FlowResult("تشرفنا بك يا {$text}! من فضلك قم بتقييم خدمتنا من 1 إلى 5:", "ask_feedback");
|
|
|
|
case 'ask_feedback':
|
|
if (!preg_match('/^[1-5]$/', $text)) {
|
|
return new FlowResult("الرجاء إدخال رقم من 1 إلى 5 فقط للتقييم:", "ask_feedback");
|
|
}
|
|
$context['rating'] = (int)$text;
|
|
return new FlowResult("شكراً لك يا {$context['name']}! لقد تم تسجيل تقييمك ({$text}/5) بنجاح. يومك سعيد!", "finished", true);
|
|
|
|
default:
|
|
return new FlowResult("خطأ في تحديد خطوة المسار.", "finished", true);
|
|
}
|
|
}
|
|
}
|