---
name: Meeting Booking (Calendly / Cal.com)
priority: 2
keywords: calendly, cal.com, meeting, booking, schedule, جدولة, موعد, مواعيد, lookup time, slots, available, متاح, link, رابط حجز, reschedule, إعادة جدولة, no-show
---

# Meeting Booking Workflows

## متى تستخدم
لما يطلب العميل: مشاركة رابط حجز، إنشاء event type جديد، فحص availability، إعادة جدولة، أو متابعة no-shows.

## الأدوات

### Calendly
Auth: Personal Access Token. Base: `https://api.calendly.com`
```bash
# قائمة event types
exec_command "curl -s -H 'Authorization: Bearer $CALENDLY_TOKEN' \
  'https://api.calendly.com/event_types?user=$CALENDLY_USER_URI'"

# قائمة الـmeetings (المجدولة + الملغية)
exec_command "curl -s -H 'Authorization: Bearer $CALENDLY_TOKEN' \
  'https://api.calendly.com/scheduled_events?user=$CALENDLY_USER_URI&min_start_time=2026-05-01T00:00:00Z&status=active'"

# إلغاء meeting
exec_command "curl -s -X POST -H 'Authorization: Bearer $CALENDLY_TOKEN' -H 'Content-Type: application/json' \
  -d '{\"reason\":\"Customer rescheduled\"}' \
  'https://api.calendly.com/scheduled_events/$EVENT_UUID/cancellation'"

# تفاصيل invitee (الأسئلة المخصصة + الردود)
exec_command "curl -s -H 'Authorization: Bearer $CALENDLY_TOKEN' \
  'https://api.calendly.com/scheduled_events/$EVENT_UUID/invitees'"
```

### Cal.com (open-source بديل)
Auth: API key. Base: `https://api.cal.com/v1`
```bash
# قائمة المواعيد
exec_command "curl -s 'https://api.cal.com/v1/bookings?apiKey=$CAL_API_KEY'"

# إنشاء event type
exec_command "curl -s -X POST -H 'Content-Type: application/json' \
  -d '{\"title\":\"30-min Discovery Call\",\"slug\":\"discovery\",\"length\":30,\"hidden\":false}' \
  'https://api.cal.com/v1/event-types?apiKey=$CAL_API_KEY'"

# slots متاحة في تاريخ
exec_command "curl -s 'https://api.cal.com/v1/availability?apiKey=$CAL_API_KEY&dateFrom=2026-05-08&dateTo=2026-05-15'"
```

### بدون أداة خارجية (لو ما عنده Calendly/Cal)
استخدم `add-calendar-event` fast-path أو AppleScript/ICS-file approach.
```bash
# اقترح وقت + ولّد ICS قابل للمشاركة
write_file /tmp/meeting.ics:
"BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
SUMMARY:Discovery Call - TaseesAI
DTSTART:20260510T140000Z
DTEND:20260510T143000Z
DESCRIPTION:30-min discovery call
LOCATION:Zoom: <link>
END:VEVENT
END:VCALENDAR"
# ابعث الملف عبر إيميل أو WhatsApp
```

## أنماط شائعة

### "ابعث لي رابط حجز موعد"
1. اقرأ event types من Calendly/Cal.com.
2. اختر الافتراضي (عادة "30-min Intro").
3. شارك URL مع invitee مباشرة.
```
"تفضّل، احجز وقتك المناسب: https://calendly.com/<user>/30min"
```

### "كم meeting عندي بكرة"
SOQL على scheduled_events بفلتر `min_start_time` و `max_start_time` لبكرة.

### no-show follow-up
بعد كل meeting لازم تتأكد إنه حصل. Calendly يرسل webhook بعد انتهاء الوقت — اربطه مع Muassis:
```bash
# لو invitee غاب، أرسل follow-up auto
"<اسم العميل>، لاحظت إن موعدنا اليوم ما كمل. هل تحب نعيد جدولته؟ <link>"
```

## أمثلة
- "ابعث رابط حجز لأحمد على واتساب" → اقرأ event type، نسّق رسالة، استدعِ `whatsapp_send` بالرابط.
- "كم meeting خلال الأسبوع" → list scheduled_events بـmin_start_time = today, max = +7d.
- "ألغِ موعدي مع TaseesAI" → ابحث، استدعِ cancellation.
- "حجز جديد جاي من Calendly، أضفه لـHubSpot" → webhook → استدعِ Calendly API لتفاصيل invitee → استدعِ HubSpot create contact + deal.

## القواعد الذهبية
- ❌ **ممنوع** إعادة جدولة meeting بدون موافقة الطرفين.
- ✅ **استخدم timezone Asia/Riyadh** افتراضياً — Calendly/Cal بيتبعون timezone المالك.
- ✅ **اربط reminder قبل 30 دقيقة** عبر `add-reminder` fast-path للأهم meetings.
- ✅ **سجّل كل meeting في CRM** — webhook → HubSpot/Salesforce/Pipedrive create activity.
