Flutter
rafiq_chat شاشة محادثة تشغّل مسارات مؤسستك. مبنية من عناصر Flutter أصلية، لا WebView أبدًا،
وتعرض كل ما يرسله المسار: النص، والخيارات (بطاقاتٍ حين يكون لها صورة أو سعر)، وتأكيد نعم أو لا،
والنماذج. تبثّ الأدوار الجديدة، وتستأنف جلسة المستخدم بعد إعادة التشغيل، وتعرض التحويل حين يتولى
موظف من فريقك المحادثة.
التثبيت
لم تُنشر بعد
الحزمة غير منشورة على pub.dev بعد: تصلك مع حسابك، بالاسم أدناه.
dependencies:
rafiq_chat: ^0.1.0
الاستعمال
AppChat.configure(AppChatOptions(
chatKey: 'ck_…', // التطبيق ← مفاتيح المحادثة (عام)
apiUrl: 'https://<your chat host>',
userToken: await myServer.chatToken(), // اختياري: المستخدم المسجّل، أدناه
refreshUserToken: myServer.chatToken, // يُستدعى حين ينتهي ذلك الرمز
));
// زرّك الخاص:
FilledButton(
onPressed: () => AppChat.open(context, flowKey: 'pizza', title: 'Order'),
child: const Text('Order'),
);
// أو داخل شاشتك:
const AppChatView(flowKey: 'pizza');
ما تفعله
- كل خطوة بعناصر أصلية. الضغط على خيار يرسل رقمه، فيقرؤه المسار دون النموذج. ونعم ولا ترسلان
كلمة يقرؤها المسار باللغتين. ويفحص النموذج كل قيمة كما يفحصها المسار قبل إرسالها. ويمكن كتابة
الرقم بالأرقام العربية الهندية (
٢) أو الفارسية، فيصل إلى الخادم رقمًا. والكتابة الحرة تعمل دائمًا: يطابق المسار الكلمات مع الخيارات، ومع نعم أو لا، ومع الخانات. - يتعطّل كل عنصر تحكم عند الضغط عليه. وحتى يصل الرد، لا يرسل الضغط الثاني شيئًا.
- البث. تستمع المحادثة للأدوار الجديدة عبر Server-Sent Events.
- رمز الجلسة في ترويسة فقط، لا في العنوان أبدًا.
- تستأنف من آخر دور لديها، وتلتزم بـ
retry:من الخادم، وتعيد الاتصال حين ينتهي وقت البث. - إن رُفض البث أو انقطع مرارًا، تعود إلى الاستعلام الدوري.
- الدور الذي يصل في الرد وفي البث معًا يظهر مرة واحدة.
- الاستئناف. تُحفظ الجلسة في
SharedPreferences، واحدة لكل مسار. وإعادة فتح المحادثة تعرض الجلسة كاملة وما تنتظره. والجلسة المنتهية تُنسى، فيبدأ الفتح التالي جلسة جديدة. - التحويل. حين يحوّل المسار المستخدم إلى فريقك، تقول المحادثة إن موظفًا من الفريق سيرد هنا. ويستطيع المستخدم مواصلة الكتابة، وتصل ردود الفريق في الخيط نفسه موسومة بأنها من الفريق.
- العربية. بالعربية تعمل المحادثة من اليمين إلى اليسار وتعرض أرقامها بالأرقام العربية الهندية، ومنها الأسعار والنطاقات وما يقوله المسار.
المستخدم المسجّل
توقّع خوادمك رمز JWT بخوارزمية HS256 بسرّ توقيع رموز مستخدمي روبوت المحادثة في مؤسستك
(flows_user_token_secret، ويُضبط في الإعدادات ← المفاتيح):
audمعرّف مؤسستك؛subمعرّفك الخاص للمستخدم؛- ويعيش ساعة على الأكثر.
ودون رمز يستطيع المسار أن يحادث المستخدم ويدعه يختار، لكنه لا ينفّذ أي خطوة تغيّر شيئًا له.
- حين تجيب الخدمة بأن الرمز انتهى، تستدعي المحادثة
refreshUserTokenمرة واحدة وترسل الرسالة نفسها بالرمز الجديد. - والرمز المرفوض كليًا لا يُعاد أبدًا، فتطلب المحادثة من المستخدم تسجيل الدخول من جديد.