# Outlook Calendar

Monitors a Microsoft Outlook calendar for upcoming meetings and fires the agent when a matching event is detected. Useful for automating pre-meeting briefs, post-meeting summaries, or meeting-triggered workflows.

- **Supported agents:** Agentic Flow, Chatbot
- **Route type:** Trigger (poll)
- **Auth:** Microsoft OAuth SSO (delegated permissions)

## Before You Start

1. In the **Azure Portal**, go to **Azure Active Directory → App Registrations → New Registration**.
2. Name the app (e.g. `Neo-CalendarChannel`). Set account types to **Single tenant**.
3. Under **Authentication**, add a **Redirect URI** (Web): `https://<your-neo-domain>/api/channels/oauth/callback`.
4. Note the **Application (client) ID** and **Directory (tenant) ID**.
5. Under **Certificates & Secrets**, create a **Client Secret**.
6. Under **API Permissions**, add these **Delegated** Microsoft Graph permissions: `Calendars.Read`, `User.Read`, `offline_access`, `openid`, `profile`, `email`.
7. Click **Grant admin consent for <tenant>**. All permissions must show Granted status.

Your agent must be published with an active version.

If meeting transcription is required, an **AWS Transcribe** connection must be configured separately.

## Configuration

**Credentials**

- **Client ID** — Application (client) ID from the Azure App Registration. Required.
- **Client Secret** — Client secret value. Required.
- **Tenant ID** — Directory (tenant) ID. Required.
- **User Email** — The calendar owner’s email address. Required.

After saving, click **Login with Microsoft** to complete the OAuth SSO flow.

**Route Settings**

- **Description** — Optional label for this channel instance.
- **Purpose** — Optional note on when the agent should use this channel.
- **Polling Interval (mins)** — How often to check for upcoming calendar events. Default: 5. Range: 1–60.
- **Calendar Name** — Which calendar to monitor. Default: `Calendar`.
- **Join Meeting Minutes Before** — How far in advance of the meeting start time to fire the agent. Default: 5. Range: 1–30.
- **Monitor Teams Meetings Only** — When ON, only Microsoft Teams meetings are processed. Default: ON.
- **Subject Contains** — Only process meetings whose subject matches this filter. Optional.
- **Organizer Email Filter** — Only process meetings organised by this email address. Optional.
- **Skip All-Day Events** — When ON, all-day events are ignored. Default: ON.
- **Minimum Meeting Duration (mins)** — Skip meetings shorter than this duration. Default: 5.
- **Webhook URL** — URL to receive meeting data or transcription output. Optional.
- **Webhook API Key** — API key for authenticating requests to the webhook URL. Optional.
- **Transcriber Provider** — Provider for meeting audio transcription. Default: `aws`.
- **Preferred Language** — Language hint for transcription. Default: `en-US`.
- **Initial Message** — Prompt prefix prepended to the meeting event payload. Optional.
