Skip to content

Commit c6d0ff0

Browse files
Merge pull request #31602 from MicrosoftDocs/main
[AutoPublish] main to live - 04/21 13:43 PDT | 04/22 02:13 IST
2 parents c8354c3 + e982cf7 commit c6d0ff0

11 files changed

Lines changed: 464 additions & 22 deletions

copilot/employee-self-service/TOC.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ items:
8282
href: servicenow-hrsd-itsm.md
8383
- name: ServiceNow Live agent
8484
href: servicenow-live-agent.md
85+
86+
- name: Extend Employee Self-Service agent
87+
items:
88+
- name: Invite a guest
89+
href: facilities-lobby-invite-guest.md
90+
8591
- name: Usage analytics
8692
href: usage-analytics.md
8793
- name: Review user feedback
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
---
2+
title: "Extend Employee Self-Service Agent: Invite a Guest"
3+
f1.keywords: NOCSH
4+
ms.author: apoorvg
5+
author: apoorvg
6+
manager: sudhakarms
7+
ms.reviewer: heidip
8+
ms.date: 04/21/2026
9+
audience: Admin
10+
ms.topic: article
11+
ms.service: microsoft-365-copilot
12+
ms.subservice: ess-agent
13+
ms.custom: ess-agent
14+
ms.localizationpriority: medium
15+
ms.collection: m365copilot
16+
description: Learn about extending the Employee Self-Service Copilot Agent tailored to your organization. This article describes the steps to invite a guest to offices (Lobby) via Employee Self-Service. Example - "I want to invite my spouse to Building 32"
17+
appliesto:
18+
- ✅ Microsoft 365 Copilot
19+
---
20+
21+
# Extend Employee Self-Service Agent: Invite a Guest
22+
23+
The Employee Self-Service Copilot Agent allows employees to get their queries answered from admin-configured knowledge sources, HCM, and IT systems, directly within Microsoft 365 Copilot.
24+
25+
An organization may seek to enhance Employee Self-Service Copilot Agent by integrating additional capabilities. These additional capabilities enable organizations to maximize the benefits of Employee Self-Service and support work-related activities.
26+
27+
To support these needs, Employee Self-Service Copilot Agent is designed to be extensible. You can create and publish your own topics that work seamlessly alongside the built-in ones. This article explains the steps to extend Employee Self-Service by adding new topics tailored to your organization.
28+
29+
At Microsoft, we extended Employee Self-Service Copilot Agent to bring in Real Estate and Facilities related experiences. Some scenarios that this extensibility to Employee Self-Service is helping us power are:
30+
31+
- Create a Facilities Ticket (Facilities), for example, "I want to report a water leak.".
32+
- Register a Vehicle (Parking), for example, "I want to register my vehicle Tesla Model 3."
33+
- View food stations or counters by cuisine (Dining), for example, "Where can I find Chinese food?"
34+
- Invite a Guest (Lobby), for example, "I want to invite my spouse to Building 32."
35+
36+
The following section shows how a maker in Copilot Studio can extend Employee Self-Service to support these scenarios. Before diving into the maker experience, it's important to understand what real estate and facilities are and how they support employees.
37+
38+
## Real Estate & Facilities
39+
40+
Real Estate and Facilities (RE&F) play a pivotal role in shaping the overall employee experience within an organization. By integrating RE&F services into Employee Self-Service platforms, companies can streamline access to essential workplace amenities and administrative tasks, making daily operations more efficient and user-friendly for employees.
41+
42+
For instance, features like - vehicle registration, facilities tickets for maintenance requests, access to café menus, and streamlined guest invitation processes empower employees to manage their work environment proactively. These capabilities reduce administrative overhead, minimize wait times, and improve satisfaction by giving employees greater control and visibility over their workplace needs.
43+
44+
Moreover, such integrated experiences foster a sense of belonging and engagement, as employees feel supported by systems that anticipate and address their requirements. These integrated experiences not only enhance productivity, but also contribute to a positive organizational culture where employees can focus more on their core responsibilities rather than logistical hassles.
45+
46+
Ultimately, the seamless blend of real estate and facilities management with employee-centric digital solutions helps organizations attract, retain, and motivate talent by prioritizing their day-to-day comfort and efficiency.
47+
48+
Now that we covered the fundamentals, let's walk through a practical example. In the following sections, we extend the Employee Self-Service Copilot Agent to allow employees to perform various operations.
49+
50+
## Prerequisites
51+
52+
To extend the Employee Self-Service Copilot Agent with a custom *Invite a guest* topic, ensure the following prerequisites are met:
53+
54+
- Employee Self-Service agent is installed in Copilot Studio.
55+
- Access to [Copilot Samples](https://github.com/microsoft/CopilotStudioSamples/tree/main/EmployeeSelfServiceAgent/Facilities/EmployeeInviteGuest) in GitHub.
56+
- Maker access to a sandbox or preproduction environment in Copilot Studio.
57+
- Access to the Guest Management APIs that is used to fetch the list of buildings and create guest invitations.
58+
- For this example of inviting a guest to office, we assume the Guest Management system is a custom solution built on the Azure platform.
59+
60+
## Fundamentals
61+
62+
Extending Employee Self-Service for RE&F experiences requires an understanding of a few key building blocks: **topics, adaptive cards, and connectors**. Together, these building blocks define how conversational scenarios are designed and how they interact with RE&F services.
63+
64+
### Topics
65+
66+
In Copilot Studio, a topic is defined as a workflow of a conversation. Microsoft 365 Copilot topics are used to:
67+
68+
- Define trigger prompts that determine when the *Invite a guest* topic should be activated based on user’s natural language input.
69+
- Ask questions and capture necessary inputs from the user, such as building information and guest details like name, email, and purpose of visit.
70+
- Present a guest registration form where users can fill in required details.
71+
- Trigger an HTTP API call to the backend Guest Management APIs.
72+
- Interpret the backend API response and return the relevant outcome to the user in natural language.
73+
74+
### Adaptive Cards
75+
76+
Adaptive cards are platform-agnostic UI snippets authored in JSON. They help create interactive and visually appealing cards to capture user inputs while maintaining the conversational flow.
77+
78+
### Connectors
79+
80+
Connectors enable you to connect the agent with other apps, data, and devices in the cloud.
81+
82+
For this example of inviting a guest to office, we assume the Guest Management system is a custom solution built on Azure. The HTTP connector is used to connect to backend APIs for creating a guest invitation.
83+
84+
Learn more about [Available connectors](/connectors/connector-reference/).
85+
86+
Learn more about [HTTP request node](/microsoft-copilot-studio/authoring-http-node).
87+
88+
## Example: Invite a Guest
89+
90+
In the **Invite a Guest** scenario, an employee can preregister a visitor such as a business partner, vendor, interview candidate, or personal guest.
91+
92+
Through the Employee Self-Service platform, the employee can initiate a guest invitation by providing essential details like the guest’s name, contact information, visit date, time, and purpose. The system validates the request and registers the guest with visitor management system. The system also sends an invitation mail with arrival instructions to the guest, and notifies the reception team about their arrival. All these steps ensure a smooth check-in experience for the guest while maintaining workplace security and operational efficiency.
93+
94+
This process involves only one step:
95+
96+
- **Creating a topic**: Define the workflow, trigger prompts, and instructions for the guest invite scenario.
97+
- Design an Adaptive card to capture guest visit details, and to build binding inputs to state variables for API requests.
98+
- Validate API responses, handle errors as required, and provide user feedback.
99+
100+
### Create a Topic
101+
102+
- Create a topic named **Invite a guest**
103+
- In Copilot Studio, select **Add a topic > From blank**.
104+
- Once inside the topic, select **Open code editor**.
105+
- Use the code from the Copilot Samples repository [Invite a Guest topic YAML](https://github.com/microsoft/CopilotStudioSamples/blob/main/EmployeeSelfServiceAgent/Facilities/EmployeeInviteGuest/topic.yaml) and paste in the code editor.
106+
- Update the HTTP API URL in the code sample. Search for "kind: HttpRequestAction" and update the URL property as per your backend system.
107+
- Save the topic.
108+
109+
- Validate
110+
- Open the visual representation of the topic definition and validate the workflow of the topic.
111+
- Select **Topic Checker** for any static issues with the definition.
112+
- Optionally, go through the following section "Validate the Topic", to understand and validate the steps.
113+
114+
- Now, let's test the newly added topic
115+
- Using the Test button in **Copilot Studio**, open the test chat window.
116+
- Invite guest using the prompt "Invite my guest to the office". This prompt opens an Adaptive card where you can fill the required details like guest name, purpose of visit, date, and time of visit, etc.
117+
- Upon successful submission, the Employee Self-Service system displays a confirmation that the guest invite is created.
118+
119+
### Review the topic workflow
120+
121+
- The Trigger node captures the topic description, which is visible from the user interface. You can use Microsoft 365 copilot to fine-tune as per your requirements.
122+
123+
:::image type="content" source="media/facilities-lobby-invite-guest-validate-topic-trigger.png" alt-text="Diagram that shows the trigger node configuration where you can change the trigger description.":::
124+
125+
- The next few nodes enforce certain limitations - like supporting only single guest visits and supporting only new visits and not edit/cancellation of existing visits.
126+
- Enforcing these limitations is an optional step. To enforce these limitations, few variables are maintained based on the user query. These variables are then used in a group of conditional statements for enforcing the required limitations.
127+
- If these limitations aren't required, remove them by deleting the corresponding variables and condition nodes.
128+
129+
- The next node is to make an HTTP call to the backend API to fetch all buildings. These buildings are prepopulated in the guest registration form that gets rendered in the following steps. We use HttpRequestAction component for making the HTTP call. The HTTP call can be alternatively configured in several other ways described in the connectors section previously.
130+
131+
- The next node is a Customize Response node to determine the guest visit purpose and location from the user query to autopopulate in the guest invite form. This node is added for an enriched user experience; however, this node is optional and the corresponding nodes can be omitted as per requirements.
132+
133+
:::image type="content" source="media/facilities-lobby-invite-guest-validate-topic-response-instructions.png" alt-text="Diagram that shows the Customize Response nodes for determining visit purpose and location.":::
134+
135+
- The next node is the guest invite adaptive card with action buttons. Verify the existing fields. Currently the required input parameters for creating a guest visit are - guest first name, last name, email, meeting purpose, and meeting location (name of the building). Users can add or modify input fields as needed.
136+
137+
:::image type="content" source="media/facilities-lobby-invite-guest-validate-topic-adative-card.png" alt-text="Diagram that shows the adaptive card fields for the guest invitation form. Adjust the fields as required.":::
138+
139+
- The next node is to make an HTTP call to the backend create invite API with all the collected information forwarded with the request.
140+
141+
- The following steps determine if the visit creation was successful and displays a message to the user accordingly.
142+
- Upon successful submission, the Employee Self-Service system displays a confirmation of the visit creation for the user’s guest.
143+
- In case the request failed due to any reason, a failure message is sent to the user. These messages can be customized by modifying the corresponding SendActivity components.
144+
145+
:::image type="content" source="media/facilities-lobby-invite-guest-validate-topic-error-handling.png" alt-text="Diagram that shows the handling of success and failure conditions in the topic.":::
146+
147+
## FAQs
148+
149+
### I need to configure the API call as per my requirement. What should I do?
150+
151+
We use *HttpRequestAction* component for making the HTTP calls. As a start, you can use the same and modify it as per your needs. There are also several other ways to configure the HTTP call as described in the connectors section previously.
152+
153+
- Expand the HttpRequestAction node, and in the URL section select **Select variable** > **Formula** to update your backend API URL. Select **Insert** to save the URL.
154+
155+
:::image type="content" source="media/facilities-lobby-invite-guest-httprequest.png" alt-text="Diagram that shows the HttpRequestAction component configuration for updating URL.":::
156+
157+
- Select the appropriate HTTP request method from the method dropdown.
158+
159+
- Add the required headers, request body, and error handling as per your backend API definition.
160+
:::image type="content" source="media/facilities-lobby-invite-guest-httprequest-headers-body.png" alt-text="Diagram that shows the headers and body configuration in HttpRequestAction.":::
161+
162+
- Select the appropriate Response data type as per your backend contracts from the dropdown.
163+
- Save the response in a state variable. This state variable allows you to access the response in the later steps.
164+
165+
### How are error conditions handled?
166+
167+
Towards the end of the topic, you see conditional branching as shown in the following image, which is used to handle errors and send the appropriate messages to the user. These conditions can be customized, and any additional conditions can be added to the same condition group as required.
168+
169+
:::image type="content" source="media/facilities-lobby-invite-guest-conditional-branching.png" alt-text="Diagram that shows conditional branching for error handling in the topic.":::
170+
171+
### What should I do if I get an error message?
172+
173+
Depending on the error message, check the following nodes:
174+
175+
- **API configuration**: Ensure the HTTP API URL in your topic definition is correct and points to the intended backend system. Double-check for typos or outdated endpoints.
176+
- **Request method**: Verify that the HTTP request method (GET, POST, PUT) matches the expected operation for your backend API.
177+
- **Headers and body**: Confirm that all required headers (for example, authentication scope, content type) and request body parameters are correctly set as per your backend API specification.
178+
- **Response data type**: Make sure the response data type in your topic matches what your backend API returns (for example, Record, Table, String).
179+
- **State variables**: Check that responses from API calls are being saved to the correct state variables for use in subsequent steps.
180+
- **Error handling logic**: Review the conditional nodes at the end of your topic to ensure error conditions are properly handled and user-friendly messages are displayed.
181+
182+
### The guest registration form isn't showing the list of buildings. Why?
183+
184+
- Confirm that the API call to fetch buildings is correctly configured and the response is being saved to the appropriate variable.
185+
- Check for any changes in the backend API contract or endpoint.
186+
187+
### My API call returns a blank or unexpected response. What could be wrong?
188+
189+
- Validate the request headers and body parameters.
190+
- Validate the response data type and ensure it matches the backend API output.
191+
- Validate the backend API logs and check for errors or contract mismatches.
192+
193+
### Additional tips
194+
195+
- Before testing, to identify static issues in your topic definition, use the Topic Checker in Copilot Studio.
196+
- Test your topic using the built-in chat window and review the workflow visually to catch any misconfigurations early.
109 KB
Loading
100 KB
Loading
112 KB
Loading
60.1 KB
Loading
122 KB
Loading
159 KB
Loading
175 KB
Loading

0 commit comments

Comments
 (0)