New to Telerik UI for ASP.NET MVC? Start a free 30-day trial
Integrating Telerik UI Scheduler with an AI Service
Updated on Dec 12, 2025
Environment
| Product | Telerik UI for ASP.NET MVC Scheduler |
| Progress Telerik UI for ASP.NET MVC version | Created with the 2025.4.1111 version |
Description
How can I integrate the Telerik UI Scheduler with an external AI service, such as Azure OpenAI, so that scheduling instructions written in natural language are converted into Scheduler events?
Solution
To integrate the Scheduler with an AI backend:
- Add a text box where the user enters natural-language scheduling instructions.
- Send the instructions to an ASP.NET Core endpoint (
/SmartScheduler/GenerateSchedule). - Use an AI service to generate a JSON configuration describing:
- the main date
- the list of events with start/end times
- Recreate the Scheduler instance on the client using the returned JSON.
View
- This section defines the Scheduler UI along with the input area where users can type natural-language scheduling instructions.
- It also includes the client-side script that sends the instructions to the server and recreates the Scheduler based on the AI-generated configuration.
- The example demonstrates how AI-driven event creation integrates seamlessly into the existing Kendo Scheduler setup.
csharp
<div style="margin-bottom: 10px; font-size: 14px; color: #bbb;">
Try one of these examples:
<ul id="schedulerExamples" style="margin-top: 5px; list-style: none; padding-left: 0;">
<li style="color:#00ffe5;">• Add three meetings on December 10, 2025: design review at 10:00, sprint planning at 13:00, and QA sync at 16:00.</li>
<li style="color:#00ffe5;">• Create a team event on December 15, 2025 from 09:00 to 17:00 titled Development Day.</li>
<li style="color:#00ffe5;">• Schedule a recurring daily stand-up from December 1 to December 7, 2025 at 09:30.</li>
</ul>
</div>
@(Html.Kendo().TextArea()
.Name("schedulerInstructions")
.Placeholder("Enter your scheduling instructions here...")
.Rows(8)
.Rounded(Rounded.Medium)
.MaxLength(300)
.HtmlAttributes(new {
style="width:60%",
required=true,
data_required_msg="Please enter a description.",
data_max_msg="Maximum length is 300 characters."
})
)
<br /><br />
@(Html.Kendo().Button()
.Name("generateSchedule")
.ThemeColor(ThemeColor.Success)
.Content("Generate Schedule")
)
<hr style="margin:20px 0; border-color:#333;" />
<div id="schedulerContainer">
@(Html.Kendo().Scheduler<Telerik.Examples.Mvc.Models.TaskViewModel>()
.Name("scheduler")
.StartTime(6,30,0)
.Height(600)
.WorkWeekStart(1)
.WorkWeekEnd(7)
.Views(v => {
v.DayView();
v.WorkWeekView();
v.WeekView();
v.MonthView(m => m.Selected(true));
v.AgendaView();
v.TimelineView();
})
.Timezone("Etc/UTC")
.DataSource(d => d
.Model(m => {
m.Id(f => f.TaskID);
m.Field(f => f.Title).DefaultValue("No title");
m.RecurrenceId(f => f.RecurrenceID);
})
.Read(r => r.Action("Read", "SchedulerServerFiltering"))
.Create("Create", "SchedulerServerFiltering")
.Update("Update", "SchedulerServerFiltering")
.Destroy("Destroy", "SchedulerServerFiltering")
)
)
</div>
<script>
$("#schedulerExamples li").css("cursor","pointer").on("click", function () {
var t = $(this).text().trim().replace(/^