This project is optimized to work with the Demo Client.
- Type: Omni-Channel
- Channels: Web VA, SMS, IVR, Mobile VA
- Locales: en-US
- Domain(s): Finance, Banking, Retail, Travel, Personal Assistant
- Integrations: Demo Client
- Go to the Azure Portal.
- Create a "Communication Services" resource
- Create a phone number (Send and Receive SMS)
- Create an EventGrid Listener.
- Event Subscription within ACS to point to the EventGrid Listener
- Resource > Events > + Subscription > WebHook > URL to API (/api/updates)
- Create an App Service for the SMS Connector - processing Inbound and Outbound interactions
- Event Subscription within ACS to point to the SMS Connector App
- Resource > Events > + Subscription > WebHook > URL to API (/api/sms-topic-event-triggered)
See README for more.
- Copy the function into
api/
- Update the Data Access Mapping in the client
dlgaas.js
See README for more.
Provide acs_conn_str
and acs_phone_number
pointing to the AzureCommunicationServices resource and phone number acquired, from Step1.
Provide the appropriate Mix Application Client Credentials obtained from the Mix.dashboard.
Provide sms_connector_endpoint
pointing to the AppService from Step2.
- If interested in tailoring the experience, supply the USER's first and last names (optional).
- If using the weather scenarios, a key must be supplied. Obtain one from AccuWeather.
Snippet:
{
"USER": {
"firstName": "FirstName",
"lastName": "LastName"
},
"apiKeyAccuweather": "<API_KEY>"
}
- "What's the price of $MSFT"
- "I want $400 worth"
- "I'd like to purchase 1500 shares"
- Intent(s): iBuyAsset, iGetAssetPrice
- 3rd party API - Yahoo Finance - Unauthenticated
- Stock Ticker Handling, amounts and quantities
- Render HTML cards for information
- One step correction during confirmation of purchase, between dollarAmount and shareAmount
- "Pay my bill" --> "0000"
- "Pay $300 of my amex bill today"
- "I'd like to pay $150 worth tomorrow"
- Intent(s): iPayBill
- Accounts - (warning) fixed list right now
- Handling amounts, use of nuance_AMOUNT
- Handling dates, use of nuance_CALENDARX through DATE
- Illustrates use of authentication required to proceed
- Involves client side user profile store
- Sensitive information marked as such
- Show cards in UI for credit cards
- Interactivity for Web VA - amount input, date input, carousel, confirmation
- "Buy a Samsung phone"
- "I'd like to buy a 512MB phone"
- "Buy a Sorta Sage phone that's got 1TB data"
- Intent(s): iBuyPhone
- Wordsets: Purchasing a phone is dynamic and initiated through a faux store
- Illustrates data access required to populate
- ePhoneColor, ePhoneManufacturer, ePhoneModel, ePhoneCapacity all are dynamically driven and whittled down based on focus of the task
- Interactivity for Web VA - carousel, buttons, color picker, ..
- "Book a flight to Hong Kong from New York that arrives August 27th"
- "I want to fly from San Fran to Seattle tomorrow for 2 weeks"
- "Actually, from Montreal"
- Intent(s): iBookTrip
- Purchasing a ticket requires:
- origin
- destination
- city is shared between both (relationship type entity)
- class, arrival date, and some other info
- Some info can be inferred (arrival date or departure date)
- Interactivity for Web VA - cards, date input, carousel
- Allowing for use of any city prior mentioned (anaphora)
- "what's the weather like in Hong Kong?" "book a flight there"
- "What's the weather like?"
- "weather in Tokyo?"
- "Hi", "What can you do?", "What is Mix?", "Bye"
- "Email me"
- "Agent", "Help"
- iGreeting -"hello"
- iGoodbye - "bye"
- Intent(s): iGetWeather
- Client location intelligence capable
- Showcases use of Browser
- Sensitive
- Showcases use of Browser
- Back-off to city
- Offer date query parameter
- 3rd party API - AccuWeather - requires API Key for use
- Allowing for use of any city prior mentioned (anaphora)
- "wipe", "reset"
- "Text me", "Switch to SMS"
- Intent(s): iClearMemory
- Illustrates reset of context
- Intent(s): iReceiveEmail
- Illustrates session sharing
- Variables used to capture NLU information and assigned accordingly
- Capturing an email address (regex entity type)
- Interactivity for Web VA - email input
- Email mechanism requires variable as 'challenge' for web service endpoints
- Intent(s): iReceiveCall, iReceiveSMS
- Capturing a phone number (regex entity type)
- Omni-Channel Experience with SMS to continue a task
- Showcases data needed
- Showcases inbound/outbound variants
- When problems occur, escalate to a live agent
- pass nluData
- Entity eIntentOption, provides the ability for a user to say iAboutMix and drive directly to that intent at the top level
- Omni-Channel Project
- Channels: Web VA, SMS, IVR, Mobile VA
- Rich UI conventions rendered in Demo Client (Web VA)
- Data Access integrations linked with Demo Client
- Interactivity
- Web VA: Buttons, Carousels, Link Support
- IVR: DTMF
- Reporting variables
- boughtAsset
- boughtPhone
- boughtTrip
- isBookingFlight
- isBuyingAsset
- isBuyingPhone
- isPayingBill
- madePayment
- Illustrates
- One-step correction
- Intent Switching
- Auth flow
- Agent Escalation with context data
- Hyperlinks for driving next turn (intent, entity, or simulated inputs)
- Anaphora ("What's the weather in New York?" --> "book a flight there")
- Ellipsis ("What's the weather in Tokyo?" --> "what about in Hong Kong?")
- NLU Sources & use of all Entity Types
- Preserving NLU data with ability to email
- Preserving context for omni channel
- Channel transfer & data sharing
- Data Integrations for all domains
- Latency messages during data access requests
- Location (lat, lng) from Client
- Wordsets (inline)
- Messages
- HTML for Web
- Unicode for SMS
- SSML for TTS
- Use of Emojis in channel context (Web, SMS)
- Rich UI capabilities in Web VA / Demo Client (with hints)
- Bootstrap friendly markup rendering
- Cards (Finance)
- Buttons (Many)
- Carousels (Retail)
- Phone Number (Personal Assistant)
- Email (Personal Assistant)
- Date (Travel)
- Color Picker (Retail)
- Sentiment driven up front message (based on insult or praise)