Connect a calendar
Configure Microsoft 365, Google or Progenda and select the calendars available to the bot.
BeAI separates Microsoft 365, Google and Progenda calendars so that each connection keeps its own rules.
Add a connection
- Enable the skill for the relevant provider.
- Choose Add connection.
- Authorise BeAI with the provider or enter the requested information.
- Select the calendars the bot can read or modify.
- Add specific instructions if different calendars have different purposes.
Limit available calendars
The connected account may have access to more calendars than the bot. Add only the calendars it needs. Use Add another calendar to extend the selection without recreating the connection.
Renew a connection
BeAI attempts to renew compatible tokens automatically. If the status turns red, use the reconnect button: selected calendars and their instructions are preserved.
Test the complete journey
Ask the bot to:
- find an available time;
- suggest a slot;
- confirm the information;
- create the appointment;
- repeat the date and time in the correct time zone.
Then verify the event directly in the relevant calendar.
In DEV only, each event search by the bot intentionally adds 3 seconds of waiting to test the activity sound during tool execution. This delay does not apply in production or when creating, updating or deleting appointments. No bot setting is required.
Move an existing appointment
To move, postpone or reschedule an appointment, the bot follows a different path from a new booking:
- it uses the exact identifier supplied by trusted workflow context or searches the original appointment period;
- it identifies the exact event;
- it checks the requested target slot;
- it updates the existing event without creating a second one.
An event identifier and a calendar identifier are distinct values. Events returned by BeAI include both so they cannot be confused. For Microsoft 365, BeAI also resolves the event’s actual parent calendar before the update and enforces the permissions configured for that calendar.
When an outbound call receives a calendar_event_id in its trusted context, BeAI reinjects that exact value when the event is updated. This protects opaque Microsoft 365 identifiers from being altered during the call. The calendar identifier is also repaired when exactly one update-enabled calendar matches the connection; when the choice is ambiguous, BeAI does not select a calendar on the bot’s behalf.
If several events match or the original appointment cannot be found, the bot asks for clarification instead of creating a duplicate. For best results, include the event identifier in trusted workflow context or, when it is not available, the original date, time, contact name and appointment title.
Customize a booking workflow
In the bot instructions and selected calendar prompt, specify prices, the time zone, required customer details and the summary to confirm before writing. A quote is not a booking: the bot must wait for a successful calendar tool result before confirming. Disable connections from previous scenarios to avoid contradictory instructions. The same prompts are accessible through the bot API in extra_infos and calendar_connections[].selected_calendars[].prompt. Bot editing rights and calendar permissions are still required.
For a resource with multiple spaces, state the simultaneous capacity and require a check of the entire stay, then another check before writing. Successive events do not necessarily occupy spaces at the same time. A capacity stated in a prompt does not lock out concurrent bookings. The generic busy result indicates a blocking event; it does not calculate multi-space capacity. If calendar access fails, availability and booking must not be presented as confirmed.
Calendar actions and responses
Every calendar listing, event search, creation, update or deletion appears in the conversation actions, with its time and outcome. A failed operation never confirms a booking. The Calendar filter, exports and conversation API share the same history and access permissions. Internal tools such as time lookup and hangup do not create calendar actions.
During a call, BeAI gives the model short references scoped to that call and a single copy of each useful event. BeAI restores Microsoft 365, Google or Progenda identifiers before executing operations. Times, non-blocking events and availability information are preserved; this reduction does not impose an artificial event limit. Unknown references and references for another calendar are rejected. Audit records and the API retain provider identifiers.
This reduces model context, but does not guarantee a fixed cost per call: reported usage may include context processed again across responses and tool steps.
Local times and time zones
For “today”, “tomorrow” or “the day after tomorrow”, the time tool provides the exact date and weekday calculated in the bot time zone. The bot must use the weekday for the booked date in its recap; if no verified weekday is available, it states only the date and times.
Spoken times use the bot time zone, including daylight saving time. For Europe/Brussels, 9 am is 09:00:00+02:00 in summer and 09:00:00+01:00 in winter. The Z suffix means UTC and must not be appended to a local time. BeAI sends Outlook the local time and time zone separately. Dates without an offset use the configured zone, not the server zone.
If a tool supplies an offset incompatible with that zone, the request is rejected before any provider read or write. The bot is instructed to check and reformat the times before retrying; it must not confirm a rejected booking. An explicitly requested UTC time must first be converted to local time.