For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Log inSign up
Support
GuidesReference
GuidesReference
  • Getting Started
    • SignalWire SDKs
    • Development Environment Setup
    • Exposing Your Agent to the Internet
    • Installation
    • Quick Start: Your First Agent
  • Build AI Agents
    • Adding Skills
    • AgentBase
    • AI Parameters
    • Architecture
    • Build AI Agents
    • Built-in Skills
    • Call Flow Customization
    • Call Recording
    • Call Transfer
    • Concierge
    • Contexts and Workflows
    • Custom Skills
    • DataMap
    • FAQBot
    • Hints
    • InfoGatherer
    • MCP Gateway
    • Multi-Agent Servers
    • Native Functions
    • Parameters
    • Prompts & POM
    • Receptionist
    • Request Lifecycle
    • Results & Actions
    • Search and Knowledge
    • Security
    • Skill Configuration
    • Skills
    • State Management
    • Static vs Dynamic Agents
    • Survey
    • SWAIG (SignalWire AI Gateway)
    • SWAIG Functions
    • SWML (SignalWire Markup Language)
    • Voice & Language
  • Make and Receive Calls
    • RELAY Client
  • Manage Resources
    • Account Setup
    • Mapping Numbers
    • Phone Numbers
    • REST Client
    • Testing
    • Troubleshooting
  • Deploy
    • CGI Mode
    • Deploy
    • Docker & Kubernetes
    • Local Development
    • Production Deployment
    • Serverless Deployment
LogoLogoSignalWire Docs
Log inSign up
Support
On this page
  • Basic Usage
  • Amenity Format
  • Importing ConciergeAgent
  • Constructor Parameters
  • Built-in Functions
  • Concierge Flow
  • Complete Example
  • Best Practices
Build AI Agents

Concierge

|View as Markdown|Open in Claude|
Was this page helpful?
Edit this page
Previous

Contexts and Workflows

Next
Built with

ConciergeAgent provides venue information, answers questions about amenities and services, helps with bookings, and gives directions.

Basic Usage

Python
TypeScript
1from signalwire.prefabs import ConciergeAgent
2
3agent = ConciergeAgent(
4 venue_name="Grand Hotel",
5 services=["room service", "spa bookings", "restaurant reservations", "tours"],
6 amenities={
7 "pool": {"hours": "7 AM - 10 PM", "location": "2nd Floor"},
8 "gym": {"hours": "24 hours", "location": "3rd Floor"},
9 "spa": {"hours": "9 AM - 8 PM", "location": "4th Floor"}
10 }
11)
12
13if __name__ == "__main__":
14 agent.run()

Amenity Format

1amenities = {
2 "amenity_name": {
3 "hours": "Operating hours",
4 "location": "Where to find it",
5 "description": "Optional description",
6 # ... any other key-value pairs
7 }
8}

Importing ConciergeAgent

LanguageImport
Pythonfrom signalwire.prefabs import ConciergeAgent
TypeScriptimport { ConciergeAgent } from '@signalwire/sdk'

Constructor Parameters

1ConciergeAgent(
2 venue_name="...", # Name of venue (required)
3 services=[...], # List of services offered (required)
4 amenities={...}, # Dict of amenities with details (required)
5 hours_of_operation=None, # Dict of operating hours
6 special_instructions=None, # List of special instructions
7 welcome_message=None, # Custom welcome message
8 name="concierge", # Agent name
9 route="/concierge", # HTTP route
10 **kwargs # Additional AgentBase arguments
11)

Built-in Functions

ConciergeAgent provides these SWAIG functions automatically:

FunctionDescription
check_availabilityCheck service availability for date/time
get_directionsGet directions to an amenity or location

Concierge Flow

Diagram showing the concierge flow from greeting through information lookup, service requests, and booking assistance.
Concierge agent conversation flow.

Complete Example

1#!/usr/bin/env python3
2## resort_concierge.py - Hotel concierge agent
3from signalwire.prefabs import ConciergeAgent
4
5agent = ConciergeAgent(
6 venue_name="The Riverside Resort",
7 services=[
8 "room service",
9 "spa treatments",
10 "restaurant reservations",
11 "golf tee times",
12 "airport shuttle",
13 "event planning"
14 ],
15 amenities={
16 "swimming pool": {
17 "hours": "6 AM - 10 PM",
18 "location": "Ground Floor, East Wing",
19 "description": "Heated indoor/outdoor pool with poolside bar"
20 },
21 "fitness center": {
22 "hours": "24 hours",
23 "location": "Level 2, West Wing",
24 "description": "Full gym with personal trainers available"
25 },
26 "spa": {
27 "hours": "9 AM - 9 PM",
28 "location": "Level 3, East Wing",
29 "description": "Full service spa with massage and facials"
30 },
31 "restaurant": {
32 "hours": "Breakfast 7-10 AM, Lunch 12-3 PM, Dinner 6-10 PM",
33 "location": "Lobby Level",
34 "description": "Fine dining with panoramic river views"
35 }
36 },
37 hours_of_operation={
38 "front desk": "24 hours",
39 "concierge": "7 AM - 11 PM",
40 "valet": "6 AM - 12 AM"
41 },
42 special_instructions=[
43 "Always offer to make reservations when guests ask about restaurants or spa.",
44 "Mention the daily happy hour at the pool bar (4-6 PM)."
45 ],
46 welcome_message="Welcome to The Riverside Resort! How may I assist you today?"
47)
48
49if __name__ == "__main__":
50 agent.add_language("English", "en-US", "rime.spore")
51 agent.run()

Best Practices

Amenities

  • Include hours for all amenities
  • Provide clear location descriptions
  • Add any special requirements or dress codes
  • Keep information up to date

Services

  • List all bookable services
  • Connect to real booking system for availability
  • Include service descriptions and pricing if possible

Special Instructions

  • Use for promotions and special offers
  • Include upselling opportunities
  • Add seasonal information