Quickstart #2: Slots & Resolvers
Learning Objectives
In this Quickstart guide, youβll build on the core concepts covered in Quickstart #1, and weβll build a more complex Task Agent that will enable a user to find and update a feature request. As part of the building process youβll learn how to:
- Build a Data Type to represent a feature request object.
- Create a Resolver Strategy that enables an AI Agent to find feature requests when it needs one
- Set up a Plugin that can use the Data Type & Resolver Strategy to power the process of finding the right feature request that a user wants to update.
Prerequisites
- Access to the βAgent Studioβ App.
- Completed Quickstart #1: Basic Task Agent.
What Youβll Build
The Plugin youβre about to build solves a simple, but real-world problem: enable users to find and update a feature request.
Before starting to build, we always recommend that you first map out the desired end user experience and the overall building blocks of the Conversational Process.
Here is an example of the end-user experience we hope to enable:

To get to this experience, you can set up a Data Type to represent a βfeature requestβ object, and your core Conversational Process should consist of one Activity (powered by an HTTP Action) and two Slots required in order to run the Activity:

Youβll build an end-to-end working Plugin via these phases:
- Set up 2 (HTTP)Actions: one to fetch available feature requests, and another to update a feature request.
- Set up a βfeature requestβData Type, and attach a defaultResolver Strategy to power a feature request object (using the βfetchβ Action you created in the previous phase).
- Build the Conversational Process, containing the 1 Activity (using your other βupdateβ Action) and the 2 Slots, as illustrated above.
- Add the Conversational Process to your AI Agent by launching a Plugin.
Letβs get started!
Phase 0: Generate a Unique Session ID & Set Up Your Connector
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
You may be able to skip this phase if youβve completed another Agent Studio Quickstart guide.
You can skip Phase 0 and move onto Phase 1A if:
- You have already created a
firstname_lastname_moveworks_purpleconnector, AND - You already have your unique βSession IDβ on hand.
This section will walk you through how to set up your own connector to the Moveworks Purple API (which powers the Actions used in the Quickstart guides), so no need to repeat this step if youβve done it before.
In this guide, youβll build a Plugin that will actually fetch from and take action on a store of feature requests thatβs set up just for you. In preparation for this, follow these steps
- Go to the Moveworks Purple API Tool.
- Click βCreate New Session IDβ. You should see sample feature requests populate below.
- Copy your Session ID to your own notes. Youβll to have this on hand in the following phase when we set up your Actions.
Now, you just need to set up a (reusable) connector that will allow you to seamlessly hit the necessary Actions that your Plugin will use.
-
Navigate to the App Picker in the top right corner of Agent Studio.
-
Click on βHTTP Connectorsβ, which will take you to another browser tab.
-
Click βCreateβ in the top right corner.
-
Fill out the following information for your Connector (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information).
-
Click βSaveβ on the bottom right corner.
π Youβre now fully ready to start building. On to Phase 1 to set up your Actions!
Before you proceed, make sure youβve copied your Session ID somewhere you can access soon.
Phase 1A: Set Up Your βFetch Feature Requestsβ Action
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
Letβs first set up an HTTP Action that will fetch available feature requests. This Action doesnβt require any dynamic inputs, and will just query an external system for a list of feature requests.
-
Navigate to the App Picker in the top right corner. Click on βAgent Studioβ.

-
Navigate to a new HTTP Action.

-
Set the following title and description for your Action (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information).

-
Enter the details of your API:
-
Click on the βImportβ icon to the right of the βTESTβ button.

-
Find the Session ID that you created & copied from Phase 0 β youβll use it in the next step.
-
Paste (donβt click βImportβ yet) the following almost-ready cURL command:
cURL -
Replace
YOUR_SESSION_ID(at the very end) in the pasted command with your actual Session ID. -
Click βImportβ (your Action should now be auto-populated with details).
-
-
Add your Connector:
-
Navigate to the βConnectorβ tab.
-
Select βInherit from existing connectorβ.
-
Select the Connector you created in Phase 0 (e.g.
firstname_lastname_moveworks_purple).
-
-
Test your Action:
-
Click on the βTESTβ icon (to the right of the endpoint URL definition).
-
Inspect the Console to verify that you receive a successful response:

-
-
Hit βPublishβ.
π Nice! Youβve just set up 1 Action to fetch feature requests β 1 more Action to go.
In the next section, weβll build the final Action that this Plugin requires: an Action to update the status of the feature request object in the external database.
Phase 1B: Set Up Your βUpdate Feature Requestβ Action
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
Now, weβll build an Action that can apply a status update to a single feature request. This Action will require two dynamic inputs (feature_request_id and new_status), and should update the feature request record in your sessionβs database.
-
Navigate to a new HTTP Action.
-
Click βCreateβ.

-
Set the following title and description for your Action (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information).
-
Enter the details of your API:
-
Click on the βImportβ icon to the right of the βTESTβ button.

-
Find the same Session ID that you created & copied from Phase 0 β youβll use it in the next step.
-
Paste (donβt click βImportβ yet) the following almost-ready cURL command:
cURL -
Replace
YOUR_SESSION_ID(at the very end) in the pasted command with your actual Session ID. -
Click βImportβ (your Action should now be auto-populated with details).
-
-
Add your Connector:
-
Navigate to the βConnectorβ tab.
-
Select βInherit from existing connectorβ.
-
Select the Connector you created in Phase 0 (e.g.
firstname_lastname_moveworks_purple)
-
-
Define 2 formal input arguments to represent the βfeature request idβ and βnew statusβ inputs that this Action requires:
-
Click on the βInput Argsβ button near the top right corner.

-
Click βCreate Newβ in the βInput Argumentsβ pop up.
-
Fill out the following details for your
feature_request_idargument: -
Hit βSaveβ.
-
Click βCreate Newβ again in the βInput Argumentsβ pop up.
-
Fill out the following details for your
new_statusargument: -
Hit βSaveβ and hit the βXβ icon to close this βInput Argumentsβ pop up.
-
-
Test your Action:
-
Click on the βTESTβ icon (to the right of the endpoint URL definition).
-
Inspect the Console to verify that you receive a successful response:

-
-
Click βPublishβ. Review details, and click βPublishβ once again.
π All done with Actions!
Youβre ready to move on β time to create your first Data Type to represent feature request objects.
Phase 2: Create a βFeature Requestβ Data Type & Resolver Strategy
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
To power the process of updating a feature request, creating a formal Data Type to represent a βfeature requestβ object can help us encapsulate the properties of a feature request. Furthermore, one of the critical properties of this Data Type is that thereβs a particular way to fetch values for the object: thatβs what the Resolver Strategy youβre also about to build will take care of!
Weβll build the βfeature requestβ Data Type with its Resolver Strategy in this phase:
-
Navigate to a new Data Type.

-
Set the following title and description for your Data Type (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information). Note that the title will autofix itself to the appropriate formal type name (in
u_prefixed format). -
Provide the schema for an object of this type:
-
Click βImport JSONβ near the top right corner of the editor.

-
Paste the following JSON sample object into the popup (this will allow you to auto-generate the schema):
JSON -
Click βGenerateβ, and verify that the auto-populated schema looks correct (matches the structure of the sample object).
-
-
Configure your Resolver Strategy. This strategy will contain one Dynamic Resolver Method, which is essentially a resolver that fetches candidate options from a dynamic source (in this case, from the βfetch feature requestsβ HTTP Action you configured in Phase 1A).
-
Navigate to the βResolver Strategyβ tab.

-
Fill out the following details for your Resolver Strategy Method:
-
-
-
Click βPublishβ. Review details, and click βPublishβ once again.
π And just like thatβ¦ youβve created a fully-fledged Data Type!
Awesome work. Time to finally put this Data Type and the rest of these Actions to work in a Conversational Process.
Phase 3: Build Your Conversational Process
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
This Conversational Process, like the one in Quickstart #1, will also appear to be a simple single-Activity process. Its added complexity will be in the form of two Slots, where one of these Slots will be powered by the βfeature requestβ Data Type you just created in Phase 2.
Hereβs a reminder of the birdβs eye view for our Process (2 Slots, 1 Action Activity):

To build this Conversational Process:
-
Navigate to a new Conversational Process (navigate to the library and click βCreateβ).

-
Set the following title and description for your Conversational Process (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information).
-
Add TWO new Slots for the Process to interact with. One will represent the
feature_requestto update, and the other will be thetarget_statusto set on the feature request. πLearn more about Slots.-
Click on the βSlotsβ button near the top right corner of the editor.

-
Click βCreate Newβ in the βSlotsβ pop up.
-
Fill out the following details for your first
feature_requestSlot: -
Hit βSaveβ (scroll to the bottom of the popup).
-
Click βCreate Newβ again in the βSlotsβ pop up to build your second Slot.
-
Fill out the following details for your second
target_statusSlot: -
Before saving this slot, youβll add an Inline Resolver Strategy to this
target_statusSlot. We want to power this Slot with a **Static Resolver**(aka a resolver which is backed by static multiple choice options).-
Scroll to the very bottom of this Slot creation popup and click βAdd Inline Resolver Strategyβ.
-
Click β+ Add Methodβ.
-
Fill out the following initial details for your Method.
-
Add the following Static Options for your Static Resolver Method. (Note: the βRaw Valueβ column contains the actual values that your βupdate feature requestβ HTTP Action expects in order to successfully update the status on the feature request).
-
Click the βXβ in the top right corner of the βStrategy Definitionβ pop up.
-
-
Hit βSaveβ (scroll to the bottom of the popup) and hit the βXβ icon to close this βSlotsβ pop up.
-
-
Build an Action Activity that will post the status update to the feature request. π Learn more about Activities.
-
Click on the β+ Add a block to your processβ button in the main section of the editor.
-
Click on βAction Activityβ.

-
Fill out the following details for your Action Activity, which mostly involves connecting your Slot to the input(s) of the HTTP Action (and mapping the result of the Action back to the Conversational Process):
-
-
Click βValidateβ (Located in the top right corner. Click on the caret icon next to the Publish button). If everything went well so far, the Console (bottom of the editor) will say βValidation successfulβ.
-
π‘Pro-tip: You can also use the following hotkeys to validate without pressing the button:
-
-
Click βPublishβ, review details, and Click βPublishβ once again.
π Awesome! Youβve just built the main part of this Plugin: the Conversational Process.
Weβre ready for the last step: now youβll launch a Plugin β this packages the Conversational Process into a tool that your AI Agent can use directly.
Phase 4: Launch a Plugin
βοΈ Import building notes if you are using the Moveworks Developer Labs environment
- If you are working in a Moveworks lab environment, name anything you save (Plugin, Action, Data Type, etc.) with
<fullname>_<descriptive_name>
- For example:
lucasrollo_Submit_PTO_Action- When launching your Plugin, make sure to only launch to yourself! You can do this by going to Your Plugin > Launch Configuration > Allow Selected Users > the email on your credential card
In our final section, youβll learn how to add your Conversational Process to a Plugin, and control the Triggering scenarios of your Plugin, and specify which end users are allowed to use your Plugin.
-
Navigate to a new Plugin (navigate to the library and click βCreateβ).

-
Set the following title and description for your Plugin (be sure to replace βfirstnameβ and βlastnameβ with your corresponding information).
-
Define a Conversational Trigger. π Learn more about Natural Language Triggers.
-
Click on βDefine a triggerβ.
-
In the panel that appears on the right, either:
-
Approve (click βTriggerβ) 5 of the auto-generated suggested positive examples, or
-
Add the following recommended utterances:
-
-
-
Choose your Conversational Process (the one you built in Phase 2).
- Click on βSet a processβ.
- In the panel that appears on the right, search for and select the Conversational Process that you built in Phase 2 (should be named
firstname_lastname_update_feature_request_process)
-
Define your Launch Configuration.
-
Navigate to the βLaunch Configurationβ tab.

-
In the Input field under βAllow selected usersβ, enter your email (or multiple emails using commas to separate the email addresses).

-
-
Click βPublishβ to launch your Plugin.
π And just like that β youβve finished building your Plugin, and now itβs ready to use!
Use one of your triggering examples (e.g. βupdate feature requestβ) to access the Plugin in conversation. If all goes well, youβll be greeted with a list of feature requests to choose from.
Try refreshing your sample feature requests in your Moveworks Purple API session to see the updates take effect in real time!
Reflecting On This Plugin
This Plugin involved a good number of core concepts in Agent Studio, with some special focus on the concept of Resolver Strategies. Youβve created a plugin that:
- Fetches available feature requests from a dynamic external source via an HTTP Action.
- Interactively gathers details from users to choose which feature request to update or status to update to.
- Ensures accurate and API-compatible values are passed to your Actions.
- Executes for the right users at the right moments via Triggering and Launch configurations youβve set up.
Way to stick through it, and now your Plugin is ready to enable users to seamlessly keep their feature requests up to date!