1361 lines
52 KiB
Markdown
Executable file
1361 lines
52 KiB
Markdown
Executable file
# سناریوی استفاده از هوش مصنوعی از طریق کانال تلگرام
|
||
|
||
## 📋 خلاصه اجرایی
|
||
|
||
این سند یک سناریو جامع برای یکپارچهسازی سیستم چت هوش مصنوعی با تلگرام ارائه میدهد. این یکپارچهسازی امکان استفاده از دستیار AI را از طریق تلگرام برای کاربران فراهم میکند و کاربردهای متنوعی در سطوح مختلف سیستم دارد.
|
||
|
||
---
|
||
|
||
## 🎯 اهداف و مزایا
|
||
|
||
### اهداف اصلی:
|
||
1. **دسترسی آسان**: امکان استفاده از AI بدون نیاز به باز کردن اپلیکیشن
|
||
2. **پاسخ سریع**: دسترسی فوری به اطلاعات کسبوکار از طریق تلگرام
|
||
3. **پشتیبانی هوشمند**: استفاده از AI برای پاسخ به تیکتهای پشتیبانی
|
||
4. **کاربری بهتر**: تجربه کاربری یکپارچه در تمام کانالهای ارتباطی
|
||
|
||
### مزایا:
|
||
- ✅ دسترسی 24/7 به دستیار AI
|
||
- ✅ استفاده از تلگرام به عنوان رابط کاربری
|
||
- ✅ یکپارچهسازی با سیستم موجود
|
||
- ✅ پشتیبانی از چندین کسبوکار
|
||
- ✅ امنیت و احراز هویت
|
||
|
||
---
|
||
|
||
## 🏗️ معماری پیشنهادی
|
||
|
||
### 1. جریان کلی ارتباط
|
||
|
||
```
|
||
کاربر تلگرام → Telegram Bot → Webhook → AI Service → Function Registry → Database
|
||
↓
|
||
Telegram Provider → پاسخ به کاربر
|
||
```
|
||
|
||
### 2. کامپوننتهای اصلی
|
||
|
||
#### 2.1. Telegram Webhook Handler
|
||
- **مسیر**: `/api/v1/integrations/telegram/webhook/{secret}`
|
||
- **وظیفه**: دریافت پیامهای تلگرام و هدایت به AI Service
|
||
- **امنیت**: بررسی secret token و احراز هویت کاربر
|
||
|
||
#### 2.2. Telegram AI Chat Service
|
||
- **وظیفه**: مدیریت جلسات چت AI از طریق تلگرام
|
||
- **ویژگیها**:
|
||
- ایجاد/مدیریت جلسات چت
|
||
- تبدیل پیامهای تلگرام به فرمت AI
|
||
- تبدیل پاسخهای AI به پیامهای تلگرام
|
||
- مدیریت context و تاریخچه
|
||
|
||
#### 2.3. Session Management
|
||
- **جلسات تلگرام**: هر کاربر میتواند چندین جلسه چت داشته باشد
|
||
- **ارتباط با جلسات وب**: جلسات تلگرام میتوانند با جلسات وب یکپارچه شوند
|
||
- **مدیریت Context**: حفظ تاریخچه گفتوگو برای هر جلسه
|
||
|
||
---
|
||
|
||
## 📱 سناریوهای استفاده
|
||
|
||
### سناریو 1: منوی اصلی و شروع کار
|
||
|
||
#### 1.1. شروع کار با ربات
|
||
```
|
||
کاربر: /start [token]
|
||
ربات: "✅ اتصال تلگرام شما با موفقیت برقرار شد.
|
||
|
||
👋 خوش آمدید! من دستیار هوش مصنوعی شما هستم.
|
||
|
||
[دکمه: منوی اصلی]
|
||
```
|
||
|
||
#### 1.2. منوی اصلی (بر اساس دسترسی کاربر)
|
||
|
||
**برای کاربر عادی:**
|
||
```
|
||
ربات: "منوی اصلی:
|
||
|
||
[دکمه: 💬 گفتوگو با AI]
|
||
[دکمه: 📊 گزارشهای سریع]
|
||
[دکمه: 🔍 جستجو]
|
||
[دکمه: 📋 جلسات من]
|
||
[دکمه: ⚙️ تنظیمات]
|
||
```
|
||
|
||
**برای اپراتور پشتیبانی:**
|
||
```
|
||
ربات: "منوی اصلی:
|
||
|
||
[دکمه: 💬 گفتوگو با AI]
|
||
[دکمه: 🎫 تیکتهای پشتیبانی] ← فقط برای اپراتورها
|
||
[دکمه: 📊 گزارشهای سریع]
|
||
[دکمه: 🔍 جستجو]
|
||
[دکمه: 📋 جلسات من]
|
||
[دکمه: ⚙️ تنظیمات]
|
||
```
|
||
|
||
**برای مدیر سیستم (SuperAdmin):**
|
||
```
|
||
ربات: "منوی اصلی:
|
||
|
||
[دکمه: 💬 گفتوگو با AI]
|
||
[دکمه: 🎫 تیکتهای پشتیبانی]
|
||
[دکمه: 👥 مدیریت سیستم] ← فقط برای SuperAdmin
|
||
[دکمه: 📊 گزارشهای سریع]
|
||
[دکمه: 🔍 جستجو]
|
||
[دکمه: 📋 جلسات من]
|
||
[دکمه: ⚙️ تنظیمات]
|
||
```
|
||
|
||
### سناریو 2: گفتوگو با AI
|
||
|
||
#### 2.1. شروع گفتوگوی جدید
|
||
```
|
||
کاربر: [فشار دادن دکمه: 💬 گفتوگو با AI]
|
||
ربات: "لطفاً کسبوکار خود را انتخاب کنید:"
|
||
|
||
[دکمه: 🏢 کسبوکار 1]
|
||
[دکمه: 🏢 کسبوکار 2]
|
||
[دکمه: ➕ ایجاد گفتوگوی جدید]
|
||
[دکمه: ⬅️ بازگشت]
|
||
```
|
||
|
||
#### 2.2. انتخاب کسبوکار
|
||
```
|
||
کاربر: [فشار دادن دکمه: 🏢 کسبوکار 1]
|
||
ربات: "✅ گفتوگو با کسبوکار [نام] شروع شد.
|
||
|
||
چه کمکی میتونم بکنم؟
|
||
|
||
[دکمه: 📊 گزارش مالی]
|
||
[دکمه: 🔍 جستجوی محصول]
|
||
[دکمه: 📦 لیست فاکتورها]
|
||
[دکمه: 💬 سوال بپرس]
|
||
[دکمه: ⬅️ بازگشت]
|
||
```
|
||
|
||
#### 2.3. پرسش از AI
|
||
```
|
||
کاربر: [فشار دادن دکمه: 💬 سوال بپرس]
|
||
ربات: "لطفاً سوال خود را بنویسید:"
|
||
|
||
کاربر: "چند فاکتور فروش در این ماه داشتم؟"
|
||
ربات: [در حال پردازش...]
|
||
|
||
[AI با استفاده از function search_invoices پاسخ میدهد]
|
||
|
||
"در این ماه شما [عدد] فاکتور فروش داشتهاید.
|
||
مجموع مبلغ: [مبلغ]
|
||
|
||
[دکمه: 📋 جزئیات بیشتر]
|
||
[دکمه: 💬 سوال دیگر]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 2.4. جلسات قبلی
|
||
```
|
||
کاربر: [فشار دادن دکمه: 📋 جلسات من]
|
||
ربات: "جلسات فعال شما:
|
||
|
||
1️⃣ گفتوگوی مالی - 2 ساعت پیش
|
||
2️⃣ سوالات محصولات - 1 روز پیش
|
||
3️⃣ گزارش فروش - 3 روز پیش
|
||
|
||
[دکمه: 1️⃣] [دکمه: 2️⃣] [دکمه: 3️⃣]
|
||
[دکمه: ➕ گفتوگوی جدید]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
### سناریو 3: تیکتهای پشتیبانی (فقط برای اپراتورها)
|
||
|
||
#### 3.1. منوی تیکتها
|
||
```
|
||
اپراتور: [فشار دادن دکمه: 🎫 تیکتهای پشتیبانی]
|
||
ربات: "تیکتهای باز:
|
||
|
||
🔴 #123 - مشکل در ورود - اولویت: بالا
|
||
🟡 #124 - سوال درباره فاکتور - اولویت: متوسط
|
||
🟢 #125 - درخواست گزارش - اولویت: پایین
|
||
|
||
[دکمه: 🔴 #123] [دکمه: 🟡 #124] [دکمه: 🟢 #125]
|
||
[دکمه: 🔄 بهروزرسانی]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 3.2. مشاهده تیکت
|
||
```
|
||
اپراتور: [فشار دادن دکمه: 🔴 #123]
|
||
ربات: "تیکت #123:
|
||
|
||
👤 کاربر: [نام کاربر]
|
||
📌 موضوع: مشکل در ورود
|
||
⚠️ اولویت: بالا
|
||
📅 تاریخ: [تاریخ]
|
||
|
||
📝 توضیحات:
|
||
[متن تیکت]
|
||
|
||
[دکمه: 🤖 پیشنهاد پاسخ AI]
|
||
[دکمه: ✉️ پاسخ خودکار AI]
|
||
[دکمه: ✍️ پاسخ دستی]
|
||
[دکمه: 📋 تاریخچه]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 3.3. پیشنهاد پاسخ AI
|
||
```
|
||
اپراتور: [فشار دادن دکمه: 🤖 پیشنهاد پاسخ AI]
|
||
ربات: "⏳ در حال دریافت پیشنهاد پاسخ AI...
|
||
|
||
✅ پیشنهاد پاسخ:
|
||
[پاسخ پیشنهادی AI]
|
||
|
||
[دکمه: ✅ استفاده از این پاسخ]
|
||
[دکمه: ✏️ ویرایش پاسخ]
|
||
[دکمه: 🔄 پیشنهاد جدید]
|
||
[دکمه: ❌ رد]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 3.4. پاسخ خودکار
|
||
```
|
||
اپراتور: [فشار دادن دکمه: ✉️ پاسخ خودکار AI]
|
||
ربات: "⚠️ آیا مطمئن هستید که میخواهید پاسخ خودکار ارسال شود؟
|
||
|
||
[دکمه: ✅ بله، ارسال کن]
|
||
[دکمه: ❌ خیر، بازگشت]"
|
||
```
|
||
|
||
### سناریو 4: گزارشهای سریع
|
||
|
||
#### 4.1. منوی گزارشها
|
||
```
|
||
کاربر: [فشار دادن دکمه: 📊 گزارشهای سریع]
|
||
ربات: "گزارشهای در دسترس:
|
||
|
||
[دکمه: 📅 امروز]
|
||
[دکمه: 📆 این هفته]
|
||
[دکمه: 📆 این ماه]
|
||
[دکمه: 📆 این سال]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 4.2. گزارش امروز
|
||
```
|
||
کاربر: [فشار دادن دکمه: 📅 امروز]
|
||
ربات: "📊 گزارش امروز:
|
||
|
||
💰 فروش: [مبلغ]
|
||
🛒 خرید: [مبلغ]
|
||
📦 موجودی: [تعداد محصول]
|
||
👥 مشتریان: [تعداد]
|
||
|
||
[دکمه: 📋 جزئیات بیشتر]
|
||
[دکمه: 📤 ارسال گزارش]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
### سناریو 5: جستجو
|
||
|
||
#### 5.1. منوی جستجو
|
||
```
|
||
کاربر: [فشار دادن دکمه: 🔍 جستجو]
|
||
ربات: "جستجو در:
|
||
|
||
[دکمه: 📦 محصولات]
|
||
[دکمه: 📄 فاکتورها]
|
||
[دکمه: 👤 مشتریان]
|
||
[دکمه: 📋 اسناد]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 5.2. جستجوی محصول
|
||
```
|
||
کاربر: [فشار دادن دکمه: 📦 محصولات]
|
||
ربات: "لطفاً نام یا کد محصول را وارد کنید:"
|
||
|
||
کاربر: "کالای X"
|
||
ربات: "🔍 نتایج جستجو:
|
||
|
||
1️⃣ [نام محصول] - کد: [کد] - موجودی: [تعداد]
|
||
2️⃣ [نام محصول] - کد: [کد] - موجودی: [تعداد]
|
||
|
||
[دکمه: 1️⃣] [دکمه: 2️⃣]
|
||
[دکمه: 🔄 جستجوی جدید]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
### سناریو 6: مدیریت سیستم (فقط برای SuperAdmin)
|
||
|
||
#### 6.1. منوی مدیریت
|
||
```
|
||
SuperAdmin: [فشار دادن دکمه: 👥 مدیریت سیستم]
|
||
ربات: "مدیریت سیستم:
|
||
|
||
[دکمه: 📊 آمار سیستم]
|
||
[دکمه: 👥 مدیریت کاربران]
|
||
[دکمه: 🏢 مدیریت کسبوکارها]
|
||
[دکمه: ⚙️ تنظیمات سیستم]
|
||
[دکمه: 📈 گزارش استفاده AI]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
#### 6.2. آمار سیستم
|
||
```
|
||
SuperAdmin: [فشار دادن دکمه: 📊 آمار سیستم]
|
||
ربات: "📊 آمار سیستم:
|
||
|
||
👥 کاربران فعال: [عدد]
|
||
🎫 تیکتهای باز: [عدد]
|
||
🤖 استفاده AI: [تعداد توکن]
|
||
💰 درآمد: [مبلغ]
|
||
|
||
[دکمه: 📈 گزارش تفصیلی]
|
||
[دکمه: ⬅️ بازگشت]"
|
||
```
|
||
|
||
### سناریو 7: اعلانها و هشدارها
|
||
|
||
#### 7.1. هشدار موجودی کم
|
||
```
|
||
سیستم: [هشدار: موجودی کم]
|
||
ربات: "⚠️ هشدار: موجودی محصول [نام] به زیر حد مجاز رسید.
|
||
|
||
📦 موجودی فعلی: [تعداد]
|
||
⚠️ حد مجاز: [تعداد]
|
||
|
||
[دکمه: 📦 مشاهده محصول]
|
||
[دکمه: 🛒 سفارش]
|
||
[دکمه: ❌ بستن]"
|
||
```
|
||
|
||
#### 7.2. تیکت جدید برای اپراتور
|
||
```
|
||
سیستم: [تیکت جدید]
|
||
ربات: "🔔 تیکت جدید دریافت شد:
|
||
|
||
#123 - [موضوع]
|
||
👤 کاربر: [نام]
|
||
⚠️ اولویت: [اولویت]
|
||
|
||
[دکمه: 👁️ مشاهده تیکت]
|
||
[دکمه: 🤖 پاسخ خودکار]
|
||
[دکمه: ❌ بستن]"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔐 امنیت و احراز هویت
|
||
|
||
### 1. احراز هویت کاربر
|
||
- **لینک اکانت**: کاربر باید ابتدا اکانت خود را به تلگرام لینک کند
|
||
- **بررسی chat_id**: هر پیام و callback query با `chat_id` کاربر مرتبط میشود
|
||
- **اعتبارسنجی**: بررسی اینکه کاربر در سیستم وجود دارد و فعال است
|
||
- **اعتبارسنجی callback**: هر callback query قبل از پردازش اعتبارسنجی میشود
|
||
|
||
### 2. دسترسیها و نمایش دکمهها
|
||
|
||
#### 2.1. بررسی دسترسی قبل از نمایش دکمهها
|
||
```python
|
||
# منوی اصلی - فقط دکمههای مجاز نمایش داده میشوند
|
||
if user_context.can_access_support_operator():
|
||
# نمایش دکمه تیکتها
|
||
pass
|
||
|
||
if user_context.is_superadmin():
|
||
# نمایش دکمه مدیریت سیستم
|
||
pass
|
||
```
|
||
|
||
#### 2.2. بررسی دسترسی در Callback Query
|
||
```python
|
||
# قبل از پردازش callback query
|
||
if callback_data.startswith("ticket:") and not user_context.can_access_support_operator():
|
||
# رد درخواست
|
||
return error_response("دسترسی ندارید")
|
||
|
||
if callback_data.startswith("admin:") and not user_context.is_superadmin():
|
||
# رد درخواست
|
||
return error_response("دسترسی ندارید")
|
||
```
|
||
|
||
#### 2.3. نقشهای کاربری و دکمههای مجاز
|
||
|
||
**کاربر عادی:**
|
||
- ✅ گفتوگو با AI
|
||
- ✅ گزارشهای سریع
|
||
- ✅ جستجو
|
||
- ✅ جلسات
|
||
- ❌ تیکتهای پشتیبانی
|
||
- ❌ مدیریت سیستم
|
||
|
||
**اپراتور پشتیبانی:**
|
||
- ✅ گفتوگو با AI
|
||
- ✅ تیکتهای پشتیبانی
|
||
- ✅ گزارشهای سریع
|
||
- ✅ جستجو
|
||
- ✅ جلسات
|
||
- ❌ مدیریت سیستم
|
||
|
||
**SuperAdmin:**
|
||
- ✅ گفتوگو با AI
|
||
- ✅ تیکتهای پشتیبانی
|
||
- ✅ مدیریت سیستم
|
||
- ✅ گزارشهای سریع
|
||
- ✅ جستجو
|
||
- ✅ جلسات
|
||
|
||
### 3. Business Context
|
||
- **بررسی دسترسی کسبوکار**: قبل از نمایش دکمههای کسبوکار، بررسی میشود که کاربر به آن دسترسی دارد
|
||
- **فیلتر کسبوکارها**: فقط کسبوکارهایی که کاربر دسترسی دارد نمایش داده میشوند
|
||
- **اعتبارسنجی در callback**: در callback query انتخاب کسبوکار، دوباره دسترسی بررسی میشود
|
||
|
||
### 4. محدودیتها
|
||
- **Rate limiting**: محدودیت تعداد درخواست در هر بازه زمانی
|
||
- **Token quota**: بررسی سهمیه استفاده از AI
|
||
- **Session timeout**: جلسات غیرفعال بعد از مدتی بسته میشوند
|
||
- **Callback timeout**: callback query ها بعد از مدت زمان مشخص منقضی میشوند
|
||
- **Input validation**: اعتبارسنجی تمام ورودیها قبل از پردازش
|
||
|
||
### 5. امنیت Callback Data
|
||
- **عدم ذخیره اطلاعات حساس**: callback_data فقط شامل شناسهها است
|
||
- **رمزگذاری (اختیاری)**: برای اطلاعات حساس میتوان از رمزگذاری استفاده کرد
|
||
- **اعتبارسنجی format**: بررسی فرمت callback_data قبل از پردازش
|
||
- **محدودیت طول**: callback_data نباید از 64 بایت بیشتر باشد (محدودیت تلگرام)
|
||
|
||
---
|
||
|
||
## 📝 دستورات و دکمههای تلگرام
|
||
|
||
### دستورات متنی (فقط برای شروع)
|
||
- `/start [token]` - شروع کار با ربات و لینک اکانت
|
||
- `/help` - راهنمای استفاده
|
||
- `/menu` - نمایش منوی اصلی
|
||
- `/unlink` - قطع اتصال تلگرام
|
||
|
||
### ساختار دکمهها (Inline Keyboards)
|
||
|
||
#### 1. منوی اصلی (Main Menu)
|
||
دکمهها بر اساس نقش کاربر نمایش داده میشوند:
|
||
|
||
**برای کاربر عادی:**
|
||
```
|
||
[💬 گفتوگو با AI] [📊 گزارشهای سریع]
|
||
[🔍 جستجو] [📋 جلسات من]
|
||
[⚙️ تنظیمات]
|
||
```
|
||
|
||
**برای اپراتور پشتیبانی:**
|
||
```
|
||
[💬 گفتوگو با AI] [🎫 تیکتهای پشتیبانی]
|
||
[📊 گزارشهای سریع] [🔍 جستجو]
|
||
[📋 جلسات من] [⚙️ تنظیمات]
|
||
```
|
||
|
||
**برای SuperAdmin:**
|
||
```
|
||
[💬 گفتوگو با AI] [🎫 تیکتهای پشتیبانی]
|
||
[👥 مدیریت سیستم] [📊 گزارشهای سریع]
|
||
[🔍 جستجو] [📋 جلسات من]
|
||
[⚙️ تنظیمات]
|
||
```
|
||
|
||
#### 2. منوی گفتوگو با AI
|
||
```
|
||
[🏢 کسبوکار 1] [🏢 کسبوکار 2]
|
||
[➕ گفتوگوی جدید] [⬅️ بازگشت]
|
||
```
|
||
|
||
#### 3. منوی تیکتها (فقط برای اپراتورها)
|
||
```
|
||
[🔴 #123] [🟡 #124] [🟢 #125]
|
||
[🔄 بهروزرسانی] [⬅️ بازگشت]
|
||
```
|
||
|
||
#### 4. منوی مدیریت سیستم (فقط برای SuperAdmin)
|
||
```
|
||
[📊 آمار سیستم] [👥 مدیریت کاربران]
|
||
[🏢 مدیریت کسبوکارها] [⚙️ تنظیمات سیستم]
|
||
[📈 گزارش استفاده AI] [⬅️ بازگشت]
|
||
```
|
||
|
||
### Callback Query Format
|
||
|
||
دکمهها از callback_data استفاده میکنند:
|
||
|
||
```
|
||
menu:main → منوی اصلی
|
||
menu:chat → منوی گفتوگو
|
||
menu:reports → منوی گزارشها
|
||
menu:search → منوی جستجو
|
||
menu:sessions → منوی جلسات
|
||
menu:tickets → منوی تیکتها (اپراتور)
|
||
menu:admin → منوی مدیریت (SuperAdmin)
|
||
|
||
chat:business:{id} → انتخاب کسبوکار
|
||
chat:new → گفتوگوی جدید
|
||
chat:session:{id} → انتخاب جلسه
|
||
|
||
ticket:{id} → مشاهده تیکت
|
||
ticket:{id}:suggest_reply → پیشنهاد پاسخ AI
|
||
ticket:{id}:auto_reply → پاسخ خودکار AI
|
||
ticket:{id}:reply → پاسخ دستی
|
||
|
||
report:{period} → گزارش دوره
|
||
search:{type} → جستجو در نوع
|
||
|
||
admin:stats → آمار سیستم
|
||
admin:users → مدیریت کاربران
|
||
admin:businesses → مدیریت کسبوکارها
|
||
|
||
back:{menu} → بازگشت به منو
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 جریانهای کاری
|
||
|
||
### جریان 1: گفتوگوی ساده با AI
|
||
|
||
```
|
||
1. کاربر: [فشار دادن دکمه: 💬 گفتوگو با AI]
|
||
2. سیستم:
|
||
- بررسی لینک بودن اکانت
|
||
- دریافت لیست کسبوکارهای کاربر
|
||
- ارسال منوی انتخاب کسبوکار با دکمهها
|
||
3. کاربر: [فشار دادن دکمه: 🏢 کسبوکار 1]
|
||
4. سیستم:
|
||
- ایجاد/انتخاب جلسه چت
|
||
- ارسال پیام خوشآمدگویی با دکمههای عملیات
|
||
5. کاربر: [فشار دادن دکمه: 💬 سوال بپرس]
|
||
6. کاربر: "چند فاکتور فروش داشتم؟"
|
||
7. سیستم:
|
||
- تبدیل پیام به فرمت AI
|
||
- ارسال به AI Service
|
||
- AI: استفاده از function search_invoices
|
||
- دریافت نتایج از دیتابیس
|
||
- تولید پاسخ توسط AI
|
||
8. سیستم: ارسال پاسخ با دکمههای عملیات
|
||
9. کاربر: دریافت پاسخ و دکمههای تعاملی
|
||
```
|
||
|
||
### جریان 2: پاسخ به تیکت پشتیبانی
|
||
|
||
```
|
||
1. سیستم: دریافت تیکت جدید
|
||
2. سیستم:
|
||
- پیدا کردن اپراتورهای آنلاین
|
||
- بررسی دسترسی اپراتور (can_access_support_operator)
|
||
- ارسال اعلان با دکمههای عملیات
|
||
3. اپراتور: [فشار دادن دکمه: 🎫 تیکتهای پشتیبانی]
|
||
4. سیستم:
|
||
- بررسی دسترسی (فقط اپراتورها)
|
||
- دریافت لیست تیکتهای باز
|
||
- ارسال منوی تیکتها با دکمهها
|
||
5. اپراتور: [فشار دادن دکمه: 🔴 #123]
|
||
6. سیستم:
|
||
- دریافت جزئیات تیکت
|
||
- ارسال جزئیات با دکمههای عملیات
|
||
7. اپراتور: [فشار دادن دکمه: 🤖 پیشنهاد پاسخ AI]
|
||
8. سیستم:
|
||
- دریافت تیکت و تاریخچه
|
||
- ساخت context برای AI
|
||
- ارسال به AI Service
|
||
- دریافت پیشنهاد پاسخ
|
||
9. سیستم: ارسال پیشنهاد با دکمههای [✅ استفاده] [✏️ ویرایش] [❌ رد]
|
||
10. اپراتور: [فشار دادن دکمه: ✅ استفاده از این پاسخ]
|
||
11. سیستم:
|
||
- ذخیره پاسخ در تیکت
|
||
- ارسال ناتیفیکیشن به کاربر
|
||
- بهروزرسانی وضعیت تیکت
|
||
```
|
||
|
||
### جریان 3: مدیریت جلسات
|
||
|
||
```
|
||
1. کاربر: [فشار دادن دکمه: 📋 جلسات من]
|
||
2. سیستم:
|
||
- دریافت جلسات از دیتابیس
|
||
- ساخت دکمهها برای هر جلسه
|
||
- ارسال لیست جلسات با دکمهها
|
||
3. کاربر: [فشار دادن دکمه: 1️⃣] (جلسه اول)
|
||
4. سیستم:
|
||
- بارگذاری تاریخچه جلسه
|
||
- ارسال آخرین پیامها
|
||
- ارسال دکمههای عملیات
|
||
5. کاربر: ادامه گفتوگو
|
||
```
|
||
|
||
### جریان 4: دسترسی به منوی مدیریت (SuperAdmin)
|
||
|
||
```
|
||
1. SuperAdmin: [فشار دادن دکمه: 👥 مدیریت سیستم]
|
||
2. سیستم:
|
||
- بررسی is_superadmin()
|
||
- اگر دسترسی دارد: ارسال منوی مدیریت
|
||
- اگر دسترسی ندارد: پیام خطا
|
||
3. SuperAdmin: [فشار دادن دکمه: 📊 آمار سیستم]
|
||
4. سیستم:
|
||
- دریافت آمار از دیتابیس
|
||
- ارسال آمار با دکمههای عملیات
|
||
```
|
||
|
||
### جریان 5: کاربر عادی بدون دسترسی اپراتور
|
||
|
||
```
|
||
1. کاربر عادی: [فشار دادن دکمه: منوی اصلی]
|
||
2. سیستم:
|
||
- بررسی can_access_support_operator() → False
|
||
- بررسی is_superadmin() → False
|
||
- ارسال منوی اصلی بدون دکمههای اپراتور و مدیریت
|
||
3. کاربر: فقط دکمههای عمومی را میبیند
|
||
- 💬 گفتوگو با AI
|
||
- 📊 گزارشهای سریع
|
||
- 🔍 جستجو
|
||
- 📋 جلسات من
|
||
- ⚙️ تنظیمات
|
||
```
|
||
|
||
---
|
||
|
||
## 🎨 ساختار دکمهها و مدیریت دسترسیها
|
||
|
||
### 1. ساختار کلی دکمهها
|
||
|
||
هر منو از یک آرایه دو بعدی دکمهها تشکیل شده است:
|
||
|
||
```python
|
||
keyboard = {
|
||
"inline_keyboard": [
|
||
[{"text": "دکمه 1", "callback_data": "action:param"}],
|
||
[{"text": "دکمه 2", "callback_data": "action:param2"}],
|
||
[
|
||
{"text": "دکمه 3", "callback_data": "action:param3"},
|
||
{"text": "دکمه 4", "callback_data": "action:param4"}
|
||
]
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. ساختار Callback Data
|
||
|
||
فرمت کلی: `{action}:{subaction}:{params}`
|
||
|
||
مثالها:
|
||
- `menu:main` - منوی اصلی
|
||
- `chat:business:123` - انتخاب کسبوکار با ID 123
|
||
- `ticket:456:suggest_reply` - پیشنهاد پاسخ برای تیکت 456
|
||
- `admin:stats` - آمار سیستم
|
||
- `back:main` - بازگشت به منوی اصلی
|
||
|
||
### 3. مدیریت دسترسیها در ساخت دکمهها
|
||
|
||
```python
|
||
def build_main_menu(user_context: AuthContext) -> List[List[Dict]]:
|
||
"""ساخت منوی اصلی بر اساس دسترسی کاربر"""
|
||
buttons = []
|
||
|
||
# دکمههای عمومی (همه کاربران)
|
||
buttons.append([{
|
||
"text": "💬 گفتوگو با AI",
|
||
"callback_data": "menu:chat"
|
||
}])
|
||
|
||
# دکمه تیکتها (فقط اپراتورها)
|
||
if user_context.can_access_support_operator():
|
||
buttons.append([{
|
||
"text": "🎫 تیکتهای پشتیبانی",
|
||
"callback_data": "menu:tickets"
|
||
}])
|
||
|
||
# دکمه مدیریت (فقط SuperAdmin)
|
||
if user_context.is_superadmin():
|
||
buttons.append([{
|
||
"text": "👥 مدیریت سیستم",
|
||
"callback_data": "menu:admin"
|
||
}])
|
||
|
||
# دکمههای عمومی دیگر
|
||
buttons.append([
|
||
{"text": "📊 گزارشهای سریع", "callback_data": "menu:reports"},
|
||
{"text": "🔍 جستجو", "callback_data": "menu:search"}
|
||
])
|
||
buttons.append([{
|
||
"text": "📋 جلسات من",
|
||
"callback_data": "menu:sessions"
|
||
}])
|
||
buttons.append([{
|
||
"text": "⚙️ تنظیمات",
|
||
"callback_data": "menu:settings"
|
||
}])
|
||
|
||
return buttons
|
||
```
|
||
|
||
### 4. بررسی دسترسی در Callback Handler
|
||
|
||
```python
|
||
async def handle_callback(callback_data: str, user_context: AuthContext):
|
||
"""پردازش callback با بررسی دسترسی"""
|
||
parts = callback_data.split(":")
|
||
|
||
# بررسی دسترسی برای تیکتها
|
||
if parts[0] == "ticket":
|
||
if not user_context.can_access_support_operator():
|
||
return await send_error("شما دسترسی به این بخش ندارید")
|
||
|
||
# بررسی دسترسی برای مدیریت
|
||
if parts[0] == "admin":
|
||
if not user_context.is_superadmin():
|
||
return await send_error("شما دسترسی به این بخش ندارید")
|
||
|
||
# بررسی دسترسی برای کسبوکار
|
||
if parts[0] == "chat" and parts[1] == "business":
|
||
business_id = int(parts[2])
|
||
if not user_context.has_business_access(business_id):
|
||
return await send_error("شما به این کسبوکار دسترسی ندارید")
|
||
|
||
# پردازش callback
|
||
await process_callback(callback_data, user_context)
|
||
```
|
||
|
||
### 5. بهروزرسانی دکمهها
|
||
|
||
برای بهروزرسانی دکمههای یک پیام:
|
||
|
||
```python
|
||
await telegram_provider.edit_message_reply_markup(
|
||
chat_id=chat_id,
|
||
message_id=message_id,
|
||
reply_markup={"inline_keyboard": new_buttons}
|
||
)
|
||
```
|
||
|
||
### 6. محدودیتهای تلگرام
|
||
|
||
- **حداکثر طول callback_data**: 64 بایت
|
||
- **حداکثر تعداد دکمه در ردیف**: 3 دکمه (توصیه میشود)
|
||
- **حداکثر تعداد ردیف**: 10 ردیف
|
||
- **حداکثر تعداد دکمه**: 100 دکمه در کل
|
||
|
||
---
|
||
|
||
## 🗄️ ساختار دیتابیس
|
||
|
||
### جدول جدید: `telegram_ai_sessions`
|
||
```sql
|
||
CREATE TABLE telegram_ai_sessions (
|
||
id SERIAL PRIMARY KEY,
|
||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||
chat_id BIGINT NOT NULL,
|
||
session_id INTEGER REFERENCES ai_chat_sessions(id),
|
||
business_id INTEGER REFERENCES businesses(id),
|
||
is_active BOOLEAN DEFAULT TRUE,
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
updated_at TIMESTAMP DEFAULT NOW(),
|
||
UNIQUE(user_id, chat_id, session_id)
|
||
);
|
||
```
|
||
|
||
### استفاده از جداول موجود:
|
||
- `ai_chat_sessions` - جلسات چت AI
|
||
- `ai_chat_messages` - پیامهای چت
|
||
- `users` - اطلاعات کاربران (telegram_chat_id)
|
||
|
||
---
|
||
|
||
## 🛠️ پیادهسازی فنی
|
||
|
||
### 1. Endpoint جدید
|
||
|
||
#### 1.1. دریافت پیام و Callback Query از تلگرام
|
||
```python
|
||
@router.post("/integrations/telegram/webhook/{secret}")
|
||
async def telegram_ai_webhook(
|
||
secret: str,
|
||
payload: Dict[str, Any] = Body(...),
|
||
db: Session = Depends(get_db),
|
||
):
|
||
# بررسی secret
|
||
# احراز هویت کاربر از chat_id
|
||
|
||
# بررسی نوع پیام
|
||
if "message" in payload:
|
||
# پردازش پیام متنی
|
||
await handle_message(payload["message"], db)
|
||
elif "callback_query" in payload:
|
||
# پردازش callback query (فشار دادن دکمه)
|
||
await handle_callback_query(payload["callback_query"], db)
|
||
|
||
return {"ok": True}
|
||
```
|
||
|
||
### 2. Service جدید: TelegramAIChatService
|
||
|
||
```python
|
||
class TelegramAIChatService:
|
||
def __init__(self, db: Session, user_id: int, chat_id: int):
|
||
self.db = db
|
||
self.user_id = user_id
|
||
self.chat_id = chat_id
|
||
self.ai_service = AIService(db, user_context)
|
||
self.telegram_provider = TelegramProvider(...)
|
||
|
||
async def send_main_menu(self, user_context: AuthContext):
|
||
"""ارسال منوی اصلی بر اساس دسترسی کاربر"""
|
||
buttons = []
|
||
|
||
# دکمههای عمومی
|
||
buttons.append([{"text": "💬 گفتوگو با AI", "callback_data": "menu:chat"}])
|
||
buttons.append([{"text": "📊 گزارشهای سریع", "callback_data": "menu:reports"}])
|
||
buttons.append([{"text": "🔍 جستجو", "callback_data": "menu:search"}])
|
||
buttons.append([{"text": "📋 جلسات من", "callback_data": "menu:sessions"}])
|
||
|
||
# دکمههای اپراتور (فقط اگر دسترسی دارد)
|
||
if user_context.can_access_support_operator():
|
||
buttons.insert(1, [{"text": "🎫 تیکتهای پشتیبانی", "callback_data": "menu:tickets"}])
|
||
|
||
# دکمههای SuperAdmin (فقط اگر superadmin است)
|
||
if user_context.is_superadmin():
|
||
buttons.insert(1, [{"text": "👥 مدیریت سیستم", "callback_data": "menu:admin"}])
|
||
|
||
buttons.append([{"text": "⚙️ تنظیمات", "callback_data": "menu:settings"}])
|
||
|
||
keyboard = {"inline_keyboard": buttons}
|
||
await self.telegram_provider.send_message(
|
||
chat_id=self.chat_id,
|
||
text="منوی اصلی:",
|
||
reply_markup=keyboard
|
||
)
|
||
|
||
async def send_chat_menu(self, businesses: List[Business]):
|
||
"""ارسال منوی انتخاب کسبوکار"""
|
||
buttons = []
|
||
|
||
# دکمههای کسبوکارها (حداکثر 2 در هر ردیف)
|
||
for i in range(0, len(businesses), 2):
|
||
row = []
|
||
for j in range(2):
|
||
if i + j < len(businesses):
|
||
business = businesses[i + j]
|
||
row.append({
|
||
"text": f"🏢 {business.name}",
|
||
"callback_data": f"chat:business:{business.id}"
|
||
})
|
||
buttons.append(row)
|
||
|
||
buttons.append([{"text": "➕ گفتوگوی جدید", "callback_data": "chat:new"}])
|
||
buttons.append([{"text": "⬅️ بازگشت", "callback_data": "back:main"}])
|
||
|
||
keyboard = {"inline_keyboard": buttons}
|
||
await self.telegram_provider.send_message(
|
||
chat_id=self.chat_id,
|
||
text="لطفاً کسبوکار خود را انتخاب کنید:",
|
||
reply_markup=keyboard
|
||
)
|
||
|
||
async def send_tickets_menu(self, tickets: List[Ticket], user_context: AuthContext):
|
||
"""ارسال منوی تیکتها (فقط برای اپراتورها)"""
|
||
if not user_context.can_access_support_operator():
|
||
return # دسترسی ندارد
|
||
|
||
buttons = []
|
||
|
||
# دکمههای تیکتها (3 در هر ردیف)
|
||
for i in range(0, len(tickets), 3):
|
||
row = []
|
||
for j in range(3):
|
||
if i + j < len(tickets):
|
||
ticket = tickets[i + j]
|
||
priority_emoji = self._get_priority_emoji(ticket.priority)
|
||
row.append({
|
||
"text": f"{priority_emoji} #{ticket.id}",
|
||
"callback_data": f"ticket:{ticket.id}"
|
||
})
|
||
buttons.append(row)
|
||
|
||
buttons.append([{"text": "🔄 بهروزرسانی", "callback_data": "menu:tickets"}])
|
||
buttons.append([{"text": "⬅️ بازگشت", "callback_data": "back:main"}])
|
||
|
||
keyboard = {"inline_keyboard": buttons}
|
||
await self.telegram_provider.send_message(
|
||
chat_id=self.chat_id,
|
||
text="تیکتهای باز:",
|
||
reply_markup=keyboard
|
||
)
|
||
|
||
async def send_ticket_details(self, ticket: Ticket, user_context: AuthContext):
|
||
"""ارسال جزئیات تیکت با دکمههای عملیات"""
|
||
if not user_context.can_access_support_operator():
|
||
return
|
||
|
||
buttons = [
|
||
[{"text": "🤖 پیشنهاد پاسخ AI", "callback_data": f"ticket:{ticket.id}:suggest_reply"}],
|
||
[{"text": "✉️ پاسخ خودکار AI", "callback_data": f"ticket:{ticket.id}:auto_reply"}],
|
||
[{"text": "✍️ پاسخ دستی", "callback_data": f"ticket:{ticket.id}:reply"}],
|
||
[{"text": "📋 تاریخچه", "callback_data": f"ticket:{ticket.id}:history"}],
|
||
[{"text": "⬅️ بازگشت", "callback_data": "back:tickets"}]
|
||
]
|
||
|
||
keyboard = {"inline_keyboard": buttons}
|
||
text = f"""تیکت #{ticket.id}:
|
||
|
||
👤 کاربر: {ticket.user.name}
|
||
📌 موضوع: {ticket.title}
|
||
⚠️ اولویت: {ticket.priority}
|
||
📅 تاریخ: {ticket.created_at}
|
||
|
||
📝 توضیحات:
|
||
{ticket.description}"""
|
||
|
||
await self.telegram_provider.send_message(
|
||
chat_id=self.chat_id,
|
||
text=text,
|
||
reply_markup=keyboard
|
||
)
|
||
|
||
async def send_admin_menu(self, user_context: AuthContext):
|
||
"""ارسال منوی مدیریت (فقط برای SuperAdmin)"""
|
||
if not user_context.is_superadmin():
|
||
return
|
||
|
||
buttons = [
|
||
[{"text": "📊 آمار سیستم", "callback_data": "admin:stats"}],
|
||
[{"text": "👥 مدیریت کاربران", "callback_data": "admin:users"}],
|
||
[{"text": "🏢 مدیریت کسبوکارها", "callback_data": "admin:businesses"}],
|
||
[{"text": "⚙️ تنظیمات سیستم", "callback_data": "admin:settings"}],
|
||
[{"text": "📈 گزارش استفاده AI", "callback_data": "admin:ai_usage"}],
|
||
[{"text": "⬅️ بازگشت", "callback_data": "back:main"}]
|
||
]
|
||
|
||
keyboard = {"inline_keyboard": buttons}
|
||
await self.telegram_provider.send_message(
|
||
chat_id=self.chat_id,
|
||
text="مدیریت سیستم:",
|
||
reply_markup=keyboard
|
||
)
|
||
|
||
async def process_message(self, text: str, session_id: int) -> str:
|
||
"""پردازش پیام متنی و ارسال به AI"""
|
||
# ارسال به AI Service
|
||
response = await self.ai_service.chat_completion(...)
|
||
return response["message"]["content"]
|
||
|
||
async def process_callback_query(self, callback_data: str, user_context: AuthContext):
|
||
"""پردازش callback query از دکمهها"""
|
||
parts = callback_data.split(":")
|
||
|
||
if parts[0] == "menu":
|
||
await self._handle_menu(parts[1], user_context)
|
||
elif parts[0] == "chat":
|
||
await self._handle_chat(parts[1:], user_context)
|
||
elif parts[0] == "ticket":
|
||
await self._handle_ticket(parts[1:], user_context)
|
||
elif parts[0] == "admin":
|
||
await self._handle_admin(parts[1], user_context)
|
||
elif parts[0] == "back":
|
||
await self._handle_back(parts[1], user_context)
|
||
|
||
def _get_priority_emoji(self, priority: str) -> str:
|
||
"""تبدیل اولویت به emoji"""
|
||
priority_map = {
|
||
"high": "🔴",
|
||
"medium": "🟡",
|
||
"low": "🟢"
|
||
}
|
||
return priority_map.get(priority, "⚪")
|
||
```
|
||
|
||
### 3. Callback Query Handler
|
||
|
||
```python
|
||
async def handle_callback_query(callback_query: Dict[str, Any], db: Session):
|
||
"""پردازش callback query از دکمهها"""
|
||
chat_id = callback_query["message"]["chat"]["id"]
|
||
callback_data = callback_query["data"]
|
||
query_id = callback_query["id"]
|
||
|
||
# پیدا کردن کاربر از chat_id
|
||
user = get_user_by_telegram_chat_id(db, chat_id)
|
||
if not user:
|
||
return
|
||
|
||
# ایجاد AuthContext
|
||
ctx = AuthContext(db=db, user=user)
|
||
|
||
# ایجاد service
|
||
service = TelegramAIChatService(db, user.id, chat_id)
|
||
|
||
# پردازش callback
|
||
await service.process_callback_query(callback_data, ctx)
|
||
|
||
# پاسخ به callback query (برای حذف loading)
|
||
await answer_callback_query(query_id)
|
||
```
|
||
|
||
### 4. Permission Checker
|
||
|
||
```python
|
||
class TelegramPermissionChecker:
|
||
"""بررسی دسترسیها برای نمایش دکمهها"""
|
||
|
||
@staticmethod
|
||
def can_show_tickets_menu(user_context: AuthContext) -> bool:
|
||
"""بررسی دسترسی به منوی تیکتها"""
|
||
return user_context.can_access_support_operator()
|
||
|
||
@staticmethod
|
||
def can_show_admin_menu(user_context: AuthContext) -> bool:
|
||
"""بررسی دسترسی به منوی مدیریت"""
|
||
return user_context.is_superadmin()
|
||
|
||
@staticmethod
|
||
def can_show_business_menu(user_context: AuthContext, business_id: int) -> bool:
|
||
"""بررسی دسترسی به کسبوکار"""
|
||
# بررسی اینکه کاربر به این کسبوکار دسترسی دارد
|
||
return user_context.has_business_access(business_id)
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 محدودیتها و ملاحظات
|
||
|
||
### محدودیتهای تلگرام:
|
||
1. **طول پیام**: حداکثر 4096 کاراکتر
|
||
2. **نرخ ارسال**: محدودیت در ارسال پیامهای متوالی
|
||
3. **فرمت**: پشتیبانی از Markdown و HTML
|
||
|
||
### ملاحظات فنی:
|
||
1. **Timeout**: مدیریت timeout برای درخواستهای AI
|
||
2. **Error handling**: مدیریت خطاها و ارسال پیام مناسب
|
||
3. **Rate limiting**: جلوگیری از سوء استفاده
|
||
4. **Context management**: مدیریت context برای جلسات طولانی
|
||
|
||
### امنیت:
|
||
1. **Secret token**: بررسی secret در webhook
|
||
2. **User verification**: تایید هویت کاربر
|
||
3. **Permission check**: بررسی دسترسیها قبل از اجرای دستورات
|
||
4. **Input validation**: اعتبارسنجی ورودیها
|
||
|
||
---
|
||
|
||
## 🚀 مراحل پیادهسازی
|
||
|
||
### فاز 1: زیرساخت پایه
|
||
- [ ] ایجاد جدول `telegram_ai_sessions`
|
||
- [ ] پیادهسازی `TelegramAIChatService`
|
||
- [ ] ایجاد endpoint برای webhook
|
||
- [ ] پیادهسازی command parser
|
||
|
||
### فاز 2: دکمهها و منوها
|
||
- [ ] پیادهسازی Inline Keyboard
|
||
- [ ] منوی اصلی با دکمههای role-based
|
||
- [ ] منوی گفتوگو با AI
|
||
- [ ] منوی جلسات
|
||
- [ ] مدیریت Callback Query
|
||
|
||
### فاز 3: یکپارچهسازی AI
|
||
- [ ] اتصال به AI Service
|
||
- [ ] مدیریت context و تاریخچه
|
||
- [ ] پشتیبانی از function calling
|
||
- [ ] مدیریت streaming (تبدیل به پیامهای متوالی)
|
||
|
||
### فاز 4: پشتیبانی
|
||
- [ ] منوی تیکتها (فقط برای اپراتورها)
|
||
- [ ] دکمه پیشنهاد پاسخ AI
|
||
- [ ] دکمه پاسخ خودکار AI
|
||
- [ ] اعلان تیکتهای جدید با دکمهها
|
||
- [ ] بررسی دسترسی قبل از نمایش دکمهها
|
||
|
||
### فاز 5: ویژگیهای پیشرفته
|
||
- [ ] منوی گزارشها با دکمهها
|
||
- [ ] منوی جستجو با دکمهها
|
||
- [ ] هشدارها و اعلانها با دکمههای عملیات
|
||
- [ ] منوی مدیریت سیستم (فقط برای SuperAdmin)
|
||
- [ ] بررسی دسترسی برای هر دکمه
|
||
|
||
---
|
||
|
||
## 📈 معیارهای موفقیت
|
||
|
||
1. **سرعت پاسخ**: پاسخها در کمتر از 5 ثانیه
|
||
2. **دقت**: دقت پاسخهای AI بالای 90%
|
||
3. **رضایت کاربر**: رضایت کاربران از تجربه استفاده
|
||
4. **استفاده**: افزایش استفاده از AI از طریق تلگرام
|
||
|
||
---
|
||
|
||
## 🔮 آیندهنگری
|
||
|
||
این بخش شامل ویژگیها و بهبودهای پیشنهادی برای نسخههای آینده سیستم است.
|
||
|
||
### 1. ویژگیهای تعاملی پیشرفته
|
||
|
||
#### 1.1. Voice Messages (پیامهای صوتی)
|
||
- **تبدیل گفتار به متن**: استفاده از Speech-to-Text API
|
||
- **تبدیل متن به گفتار**: پاسخهای AI به صورت صوتی
|
||
- **پشتیبانی از زبان فارسی**: تشخیص و تولید گفتار فارسی
|
||
- **سناریو استفاده**:
|
||
```
|
||
کاربر: [ارسال پیام صوتی]
|
||
سیستم: تبدیل به متن → ارسال به AI → دریافت پاسخ → تبدیل به صوتی → ارسال
|
||
```
|
||
|
||
#### 1.2. Rich Media (رسانههای غنی)
|
||
- **ارسال تصاویر**: تحلیل تصاویر فاکتورها، اسناد، محصولات
|
||
- **ارسال فایلها**: تحلیل فایلهای Excel، PDF، تصاویر
|
||
- **استخراج اطلاعات**: استخراج اطلاعات از تصاویر با OCR
|
||
- **سناریو استفاده**:
|
||
```
|
||
کاربر: [ارسال تصویر فاکتور]
|
||
سیستم: تحلیل تصویر → استخراج اطلاعات → ذخیره در سیستم → پاسخ به کاربر
|
||
```
|
||
|
||
#### 1.3. Inline Mode (جستجوی سریع)
|
||
- **جستجو از هر چت**: استفاده از `@botname query` در هر چت تلگرام
|
||
- **نتایج فوری**: نمایش نتایج بدون باز کردن ربات
|
||
- **جستجو در**: محصولات، فاکتورها، مشتریان
|
||
- **سناریو استفاده**:
|
||
```
|
||
کاربر در چت دیگر: @hesabix_bot محصول X
|
||
ربات: نمایش نتایج جستجو به صورت inline
|
||
```
|
||
|
||
### 2. بهبودهای رابط کاربری
|
||
|
||
#### 2.1. دکمههای پویا (Dynamic Buttons)
|
||
- **تغییر بر اساس Context**: دکمهها بر اساس وضعیت فعلی تغییر میکنند
|
||
- **دکمههای هوشمند**: پیشنهاد عملیات بعدی بر اساس تاریخچه
|
||
- **مثال**:
|
||
```
|
||
بعد از مشاهده فاکتور:
|
||
[✅ تایید] [✏️ ویرایش] [📤 ارسال] [🗑️ حذف]
|
||
|
||
بعد از تایید:
|
||
[📤 ارسال] [📋 چاپ] [⬅️ بازگشت]
|
||
```
|
||
|
||
#### 2.2. صفحهبندی (Pagination)
|
||
- **لیستهای طولانی**: برای تیکتها، فاکتورها، محصولات
|
||
- **دکمههای ناوبری**: [◀️ قبلی] [▶️ بعدی] [🔝 ابتدا] [🔚 انتها]
|
||
- **نمایش اطلاعات**: "صفحه 2 از 10"
|
||
- **مثال**:
|
||
```
|
||
تیکتها:
|
||
[🔴 #123] [🟡 #124] [🟢 #125]
|
||
[◀️ قبلی] [صفحه 1/5] [▶️ بعدی]
|
||
```
|
||
|
||
#### 2.3. دکمههای فیلتر
|
||
- **فیلتر سریع**: فیلتر بر اساس تاریخ، نوع، وضعیت
|
||
- **چند فیلتر همزمان**: ترکیب چند فیلتر
|
||
- **ذخیره فیلترها**: ذخیره فیلترهای پرکاربرد
|
||
- **مثال**:
|
||
```
|
||
فیلتر تیکتها:
|
||
[📅 امروز] [📅 این هفته] [📅 این ماه]
|
||
[🔴 بالا] [🟡 متوسط] [🟢 پایین]
|
||
[✅ باز] [❌ بسته] [⏳ در انتظار]
|
||
```
|
||
|
||
#### 2.4. دکمههای پیشنهادی (Suggested Actions)
|
||
- **پیشنهاد بر اساس تاریخچه**: پیشنهاد عملیات بعدی
|
||
- **یادگیری از رفتار کاربر**: بهبود پیشنهادها با زمان
|
||
- **مثال**:
|
||
```
|
||
بعد از مشاهده محصول:
|
||
[📦 موجودی] [💰 قیمت] [📊 فروش] [👤 مشتریان]
|
||
```
|
||
|
||
### 3. چندزبانهسازی (Multi-language)
|
||
|
||
#### 3.1. پشتیبانی از زبانها
|
||
- **زبانهای اولیه**: فارسی، انگلیسی
|
||
- **زبانهای آینده**: عربی، ترکی
|
||
- **انتخاب زبان**: دکمه انتخاب زبان در تنظیمات
|
||
|
||
#### 3.2. ترجمه خودکار
|
||
- **ترجمه پاسخهای AI**: ترجمه به زبان انتخابی کاربر
|
||
- **ترجمه منوها**: تمام منوها و دکمهها
|
||
- **ذخیره ترجیحات**: ذخیره زبان انتخابی کاربر
|
||
|
||
### 4. تحلیل و گزارشگیری (Analytics)
|
||
|
||
#### 4.1. تحلیل استفاده
|
||
- **آمار استفاده**: تعداد پیامها، جلسات، استفاده از AI
|
||
- **تحلیل رفتار**: الگوهای استفاده کاربران
|
||
- **گزارشهای تفصیلی**: گزارشهای هفتگی و ماهانه
|
||
|
||
#### 4.2. بهبود عملکرد
|
||
- **بهینهسازی پاسخها**: بهبود بر اساس بازخورد کاربران
|
||
- **کاهش زمان پاسخ**: بهینهسازی برای پاسخ سریعتر
|
||
- **کاهش هزینه**: بهینهسازی استفاده از توکنها
|
||
|
||
#### 4.3. داشبورد مدیریتی
|
||
- **داشبورد SuperAdmin**: آمار کلی سیستم
|
||
- **نمودارها**: نمایش گرافیکی آمار
|
||
- **هشدارها**: هشدار برای مشکلات احتمالی
|
||
|
||
### 5. ویژگیهای امنیتی پیشرفته
|
||
|
||
#### 5.1. احراز هویت دو مرحلهای
|
||
- **2FA**: احراز هویت دو مرحلهای برای دسترسیهای حساس
|
||
- **کد امنیتی**: ارسال کد امنیتی برای عملیات مهم
|
||
- **تایید عملیات**: تایید عملیات حساس (حذف، تغییر تنظیمات)
|
||
|
||
#### 5.2. لاگگیری پیشرفته
|
||
- **لاگ تمام عملیات**: ثبت تمام عملیات کاربران
|
||
- **ردیابی تغییرات**: ردیابی تغییرات در دادهها
|
||
- **گزارشهای امنیتی**: گزارش فعالیتهای مشکوک
|
||
|
||
#### 5.3. محدودیتهای پیشرفته
|
||
- **Rate limiting هوشمند**: محدودیت بر اساس رفتار کاربر
|
||
- **IP Whitelist**: لیست سفید IP برای دسترسیهای حساس
|
||
- **زمانبندی دسترسی**: محدودیت دسترسی در ساعات خاص
|
||
|
||
### 6. یکپارچهسازی با سیستمهای دیگر
|
||
|
||
#### 6.1. یکپارچهسازی با WhatsApp
|
||
- **پشتیبانی از WhatsApp**: استفاده از WhatsApp Business API
|
||
- **همگامسازی**: همگامسازی پیامها بین تلگرام و واتساپ
|
||
- **انتخاب کانال**: انتخاب کانال ارتباطی توسط کاربر
|
||
|
||
#### 6.2. یکپارچهسازی با Email
|
||
- **ارسال ایمیل از تلگرام**: ارسال ایمیل از طریق ربات
|
||
- **دریافت ایمیل**: دریافت و پاسخ به ایمیلها
|
||
- **همگامسازی**: همگامسازی با سیستم ایمیل موجود
|
||
|
||
#### 6.3. یکپارچهسازی با SMS
|
||
- **ارسال SMS**: ارسال SMS از طریق ربات
|
||
- **دریافت SMS**: دریافت و پردازش SMS
|
||
- **اعلانها**: ارسال اعلانها از طریق SMS
|
||
|
||
### 7. هوش مصنوعی پیشرفته
|
||
|
||
#### 7.1. یادگیری از رفتار کاربر
|
||
- **شخصیسازی**: شخصیسازی پاسخها بر اساس رفتار کاربر
|
||
- **پیشنهادهای هوشمند**: پیشنهاد عملیات بر اساس تاریخچه
|
||
- **بهبود مداوم**: بهبود مداوم بر اساس بازخورد
|
||
|
||
#### 7.2. پردازش زبان طبیعی پیشرفته
|
||
- **درک بهتر**: درک بهتر سوالات پیچیده
|
||
- **پاسخهای دقیقتر**: پاسخهای دقیقتر و مرتبطتر
|
||
- **پشتیبانی از لهجهها**: پشتیبانی از لهجههای مختلف فارسی
|
||
|
||
#### 7.3. پیشبینی و پیشنهاد
|
||
- **پیشبینی نیازها**: پیشبینی نیازهای کاربر
|
||
- **پیشنهاد عملیات**: پیشنهاد عملیات مفید
|
||
- **هشدارهای هوشمند**: هشدار برای مشکلات احتمالی
|
||
|
||
### 8. ویژگیهای تعاملی
|
||
|
||
#### 8.1. نظرسنجی و رایگیری
|
||
- **نظرسنجی**: ایجاد نظرسنجی برای کاربران
|
||
- **رایگیری**: رایگیری در مورد تصمیمات
|
||
- **جمعآوری بازخورد**: جمعآوری بازخورد از کاربران
|
||
|
||
#### 8.2. بازیها و چالشها
|
||
- **گیمیفیکیشن**: اضافه کردن عناصر بازی
|
||
- **چالشها**: چالشهای آموزشی برای کاربران
|
||
- **جوایز**: سیستم پاداش برای استفاده
|
||
|
||
#### 8.3. رباتهای کمکی
|
||
- **رباتهای تخصصی**: رباتهای تخصصی برای بخشهای مختلف
|
||
- **دستیارهای مجازی**: دستیارهای مجازی برای کارهای خاص
|
||
- **اتوماسیون**: اتوماسیون کارهای تکراری
|
||
|
||
### 9. بهبودهای عملکرد
|
||
|
||
#### 9.1. بهینهسازی سرعت
|
||
- **کشسازی**: کشسازی پاسخهای متداول
|
||
- **پردازش موازی**: پردازش موازی درخواستها
|
||
- **بهینهسازی کوئریها**: بهینهسازی کوئریهای دیتابیس
|
||
|
||
#### 9.2. مقیاسپذیری
|
||
- **پشتیبانی از کاربران بیشتر**: پشتیبانی از تعداد بیشتر کاربران
|
||
- **توزیع بار**: توزیع بار بین سرورها
|
||
- **کلاسترینگ**: کلاسترینگ برای دسترسی بالا
|
||
|
||
#### 9.3. قابلیت اطمینان
|
||
- **Backup خودکار**: پشتیبانگیری خودکار
|
||
- **Recovery**: بازیابی سریع در صورت خطا
|
||
- **Monitoring**: مانیتورینگ مداوم سیستم
|
||
|
||
### 10. ویژگیهای تجاری
|
||
|
||
#### 10.1. پرداخت از طریق تلگرام
|
||
- **پرداخت درونبرنامهای**: پرداخت از طریق Telegram Payments
|
||
- **اشتراکها**: مدیریت اشتراکها از طریق ربات
|
||
- **صورتحساب**: ارسال صورتحساب از طریق ربات
|
||
|
||
#### 10.2. بازاریابی و تبلیغات
|
||
- **ارسال کمپین**: ارسال کمپینهای بازاریابی
|
||
- **تبلیغات هدفمند**: تبلیغات بر اساس علایق کاربر
|
||
- **تحلیل کمپین**: تحلیل عملکرد کمپینها
|
||
|
||
#### 10.3. وفاداری مشتری
|
||
- **برنامه وفاداری**: برنامه وفاداری برای مشتریان
|
||
- **امتیازدهی**: سیستم امتیازدهی
|
||
- **جوایز**: جوایز برای مشتریان وفادار
|
||
|
||
### 11. دسترسیپذیری (Accessibility)
|
||
|
||
#### 11.1. پشتیبانی از نابینایان
|
||
- **Screen Reader**: پشتیبانی از Screen Reader
|
||
- **دستورات صوتی**: دستورات صوتی برای نابینایان
|
||
- **توضیحات صوتی**: توضیحات صوتی برای دکمهها
|
||
|
||
#### 11.2. پشتیبانی از ناشنوایان
|
||
- **متن کامل**: تمام اطلاعات به صورت متن
|
||
- **زیرنویس**: زیرنویس برای محتوای صوتی
|
||
- **نشانههای بصری**: نشانههای بصری برای اعلانها
|
||
|
||
### 12. مستندات و آموزش
|
||
|
||
#### 12.1. راهنمای تعاملی
|
||
- **آموزش گام به گام**: آموزش گام به گام استفاده از ربات
|
||
- **ویدیوهای آموزشی**: ویدیوهای آموزشی در ربات
|
||
- **FAQ تعاملی**: FAQ تعاملی با AI
|
||
|
||
#### 12.2. پشتیبانی زنده
|
||
- **چت زنده**: چت زنده با پشتیبانی
|
||
- **ویدیو کال**: ویدیو کال برای پشتیبانی
|
||
- **اشتراک صفحه**: اشتراک صفحه برای کمک
|
||
|
||
---
|
||
|
||
### اولویتبندی پیادهسازی
|
||
|
||
#### فاز 1 (کوتاهمدت - 3-6 ماه):
|
||
1. ✅ دکمههای صفحهبندی
|
||
2. ✅ دکمههای فیلتر
|
||
3. ✅ دکمههای پویا
|
||
4. ✅ تحلیل استفاده پایه
|
||
|
||
#### فاز 2 (میانمدت - 6-12 ماه):
|
||
1. ✅ Voice Messages
|
||
2. ✅ Rich Media (تصاویر)
|
||
3. ✅ چندزبانهسازی (فارسی/انگلیسی)
|
||
4. ✅ Inline Mode
|
||
|
||
#### فاز 3 (بلندمدت - 12+ ماه):
|
||
1. ✅ یکپارچهسازی با WhatsApp
|
||
2. ✅ هوش مصنوعی پیشرفته
|
||
3. ✅ ویژگیهای تجاری
|
||
4. ✅ دسترسیپذیری کامل
|
||
|
||
---
|
||
|
||
## 📚 منابع و مراجع
|
||
|
||
- [Telegram Bot API Documentation](https://core.telegram.org/bots/api)
|
||
- [AI Chat Service Documentation](./AI_CHAT_ISSUES.md)
|
||
- [Function Calling Analysis](./AI_FUNCTION_CALLING_ANALYSIS.md)
|
||
- [Streaming Implementation](./STREAMING_IMPLEMENTATION_SCENARIO.md)
|
||
|
||
---
|
||
|
||
**تاریخ ایجاد**: 2025-01-XX
|
||
**نسخه**: 1.0
|
||
**نویسنده**: AI Assistant
|
||
|