the journey to conversational interfaces
TRANSCRIPT
![Page 1: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/1.jpg)
The Journey to Conversational Interfaces
Romin Irani | Xoriant | @iRomin
![Page 2: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/2.jpg)
Agenda
Chatbot Ecosystem
Our Story
Help Desk Bots
Initial Target Platform - Slack
NLP + ML + API.AI
Go Language
![Page 3: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/3.jpg)
Chatbots! Chatbots! Chatbots!
It is usually another way to interact with your Web Application, API or Mobile Application
Multiple Messaging Platforms
“Chatbots” are expected to be “The Thing” to do in 2017 ;-)
![Page 4: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/4.jpg)
Rule-based v/s AI
● /find * contains=`xyz`● /find pdf since=2d
● I’d like all documents that contain “xyz”
● Get me all PDF documents created in the last 2 days
![Page 5: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/5.jpg)
Why Slack ?
Popular Messaging Platform
Integrates with Popular Applications
APIs for Custom Integration
Good Documentation
App Store
Starting point to learn more
![Page 6: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/6.jpg)
Respond to Questions
Notifications
Customized Bot
Analyze
![Page 7: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/7.jpg)
Slack API - Go Language packages
You can do everything with standard Go packages
Alternately, here are a couple of packages to consider:
https://github.com/nlopes/slack
https://github.com/bluele/slack
Skills needed
Basic Go Syntax (Struct, Dealing with JSON)
HTTP Basics + Go Language http packages
![Page 8: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/8.jpg)
Respond
Notify
Analyze
![Page 9: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/9.jpg)
Respond/ticket list
![Page 10: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/10.jpg)
Reporting Issue - Slash Command
Slash Command → Messages that start with a slash (/)
For e.g. /ticket or /report or /search
/ticket listlist
![Page 11: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/11.jpg)
Handling a Request from Slack
http.HandleFunc("/ticket", MyTicketHandler)
func MyTicketHandler(w http.ResponseWriter, r *http.Request) {
//Extract out multiple params from Request
//Validate if the request is coming from Slack and your team
//Perform business logic
//Compose the Response Struct
json.NewEncoder(w).Encode(/* Slack Response Struct */)
}
![Page 12: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/12.jpg)
Slack Incoming POST parameters
token=oyIQ0AjzcBNgxGMcIsEumUpQteam_id=T0001team_domain=examplechannel_id=C2147483705channel_name=generaluser_id=U2147483697user_name=romincommand=/tickettext=listresponse_url=https://hooks.slack.com/commands/1234/5678
![Page 13: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/13.jpg)
Slack Message Formats - 1
{ "username": "Server Monitor" "text": "Cloud Storage Service is facing intermittent issues.\nhttp://status.cloud.google.com",}
![Page 14: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/14.jpg)
Slack Message Formats - 2{ "attachments": [ { "title": "New Ticket: Printer is not working", "title_link": "https://api.slack.com/", "text": "The Printer is not functioning….", "fields": [ { "title": "Priority", "value": "High" }, { "title": "Reported by", "value": "romin", } ], "footer": "My Help Desk system", "ts": 1395676789 } ]}
![Page 15: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/15.jpg)
Notify
![Page 16: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/16.jpg)
Sending Notifications - Incoming Webhook
A mechanism to post a message to a Channel or a specific user
New Tickets are routed as Notifications to respective Channels (Teams)
Updates to Tickets are routed to the specific Users
v := url.Values{"payload": {string(b)}}http.PostForm(WebhookURL, v)
![Page 17: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/17.jpg)
Analyze
![Page 18: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/18.jpg)
Analytics - Outgoing Webhook
Calls your Webhook based on messages sent in a Channel
Any message or specific Trigger Words
Track Command Usage , Sentiment Analysis and more
![Page 19: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/19.jpg)
Explosion of Commands…
/ticket list/ticket create <title> <details> <priority> <department>/ticket update <status> <comment>/ticket close <id>/ticket view <id>/ticket help
….
![Page 20: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/20.jpg)
Can we do better?
![Page 21: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/21.jpg)
General AI Agents
Messaging Platforms
NLP , AI as a Service Platforms
Frameworks & DeploymentPlatforms
Source: https://www.oreilly.com/ideas/infographic-the-bot-platform-ecosystem
![Page 22: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/22.jpg)
Our current architecture
Messaging Platforms
NLP
Integrations
Machine LearningDomains
Bot Endpoint + Logic
![Page 23: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/23.jpg)
Diagram inspired from : https://rasa.ai/
Which tickets are assigned to me?
User input in Natural Language
1
NLP Tool
2
intent : tickets_search,entities: status : open, user : romin, Max_count : 5,
Structured Data3
Here are your tickets:1….2…3….
Bot output in Natural Language
5
How it works?
TicketsAPI / Database
4
![Page 24: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/24.jpg)
Lessons Learnt
Go + Slack is a powerful combination to get going with your Bots.
Need to target most popular Chat platforms.
Build v/s Buying a Machine Learning Engine. Good Alternatives out there but choose carefully.
Voice Interfaces.
It is a journey.
![Page 25: The Journey to conversational interfaces](https://reader030.vdocuments.mx/reader030/viewer/2022033105/58f0d5a21a28ab596e8b458b/html5/thumbnails/25.jpg)
Thank You