Cloud OnAir: Building a Serverless Slack Chatbot with Google Cloud Functions
Welcome. To cloud on air live, webinars, from Google cloud we're. Hosting webinars every, Tuesday, my. Name is Bret McGowen and I'm joined by timoni Amira from slack today. We will be talking about building serverless, chat, BOTS for, slack on Google, cloud you. Can ask questions at any time on the webinar platform and we have experts standing by to, answer your questions let's. Get started. All. Right cool. So. Hi, again. My name is Tim O'Meara, and I'm a developer advocate at slack so, let's talk about bots all. Right, so. What, our pods, so. I googled it just like you do and I found this in it with Wikipedia. So. Why, do we keep EDSA, it's a definition on their site so but it's a software application that, runs automated. Automated tasks scripts, over the Internet and, typically. BOTS from tasks that are both simple, and structurally. Repeatable. In a, much higher rate than would be possible for human alone, ok, but, I, kind of rephrase, it for, like a developer, and user perspective here, supports. Also yeah. But but also use experience, that can expose products. And services, to use as their conversational. Engagement, and rich interactions. All. Right, so. Okay. So BOTS can be there's a one-way direction to. The users like, notifications. Maybe. This notification like, you know the bots try to remind, you something, you. Know like by, the end of the day every day something like office. Space bar what, could be a conversational. You. Can talk to bots and BOTS can, talk to you maybe. You can ask some BOTS to do some tests, for you. So. Today I'm gonna Bret would show you how to you, know how you can create or more like we're giving you the ideas what, kind of bots you can create using. The slack API, sand a Google cloud functions, so, let, me talk yeah let me talk a little bit about like, Slap platform, here. So. Wicca web api its. Web api met like methods, by alike HTTP. And we. Get something like you know you can get user info, like maybe like full name of each user, in a channel it, could be just a channel, IDs, name of just channel or, sending, messages, and you can do a lot of things with using slack api's and we. Also have, something called RTM, that's, a real-time API over, WebSocket, but, today I'm, pretty, much stick with their web api and. We, also have events. For. Example like. Event, it's fires when some, user sent messages, to the, public channel or maybe, like new user join and channel what. Could be when you bought it's uninstalled. By some users you, get if it's received. All. Right so, and I'm going through some bar interactions, some common, interactions. Here. So. Yeah if you know for video it's like you know you've been using it like you probably have used some slash, commands, could. Be in a built-in commands, like you, know slash join. The joint channel slash leave could, be slash your mind or maybe something, like sliced give, me you, know that's a third party apps that you can get somebody animations. Like a cat pictures, I mean can't animations, and stuff that's. Cute right yeah. That's. Delightful actually. And, when. You want to have a slash command from, your bot a little more like for your bot. What. You can do so it's more like first um. When. A user type of slash command, and send, that to the slack a slack. Since this on payload, to, you URL, so. That's like external, you will URL, that you configure, your you, know on your portal like it develop a bottle so. Let's say in this example here, I highlighted, here it's command slash weather so, this is about like whether slash commands right and, a. User send some query like zip code here so. You get kind of information, you, know like command, and query, text along with other information at the payload. And. When you get response your butter has to reply, back to the user right so, in that case you, can send the slack back to like HTTP, 200, okay response, along with that you know either plain text, or JSON, response like this.
So. In that case yes, replying. Back to this weather, results. There partly cloudy today in tomorrow so. Mainly. You are a building in some slash command, you. Should name, it or three because, sometimes. You know your slash command, name might have been used by other apps and you, definitely need to avoid something's, being used viola. So. Something generic command like slash fine my, well maybe it's good but maybe some others been using, actually. It's, funny story it happened to me it is like you know our in China yeah, internal, workspace heads if. You duplicate, the commands like slash. Flash. Fine so, um, yeah. I think we use it for like. Employee. Yeah. Like an employee list and the finding like conference, room and stuff we use a slash fine, come on but, we also have, installed, some other apps that use that you, know the / fine as well and a overwritten. Previous. As well so it's not good so don't do it and, it's, a great thing it's a full matter result so, like the one I showed you earlier so you know it's rather than just using plain. Text, it's always a nice to have some nicely. Formatted you know messages. For the users you, could always think about the users, you know it's a bar you deal with spots but, you know you use as a humans and. Even. If you don't reply, anything back to them you know this like client, or, make sure to respond with HTTP 200, so the slug doesn't know that everything's great. So. This is a one of the use case it's a good one it's a CRM, example. See. So. When you type the slash let's. Watch this. Yeah. Slide Salesforce in company name you, get information about, the company so, this is really quick and easy you know it's a great example you, just type in some command and you get some quick result that's pretty. Great. And. All about interaction is and interaction. Can be notifications. Like, the one I told, you earlier. So. This can be sent like maybe. Every day oh just. A reminder certain, times of day it could be if there's a calendar could, be sent to in 15 minutes before the, event happens. Okay. So this, so, yes you can use this Web API and, check, the post message, method.
To. Send out a message it. So. Yes it's a notification the, better you can just send just like you know regular sending messages you, can send a message to in a public Channel it could be ephemeral messages. Means it's on public Channel, but only the user can see it what, can be do. It, so the best practice when. You want to use notifications yes, just same you know format, the text nicely, so you user can read it easily you know maybe it's simple enough might you might want to use emoji, but, most importantly, don't. Spam, yes. I've seen that around here are some apps kind of using it is spamming the users around but don't do this this is not great. Alright. So another interactions. Can be a conversations. So. You might have heard about like conversational. Interface. You. Know that's about interaction. So basically yes it's a conversation. So. BOTS can you know basically, BOTS can like listen to what you sing and you react. With certain keywords or, maybe just a boat's name like ad BOTS. Name you know you. Can just do whatever so. User can do you know user can just achieve, what they are looking for could. Be just create it like to-do, list or maybe just, you know fun conversation. That's. All up to you. So. When you're. Building the type of interactions. You, probably, want to use well you do actually use, events. Event, API, so. To do this you, gotta go to the slide configuration. Page like your developer, portal page and enable. This event subscriptions. So. The parts, giving page will listen to the conversation. So. Part can dispatch, the event do, that, you, know a payload, it's change to the external URL, it's, got the request URL the. Same thing this more similar thing that you have used for the slash command. Basically, you. Know slack platform send your. Server a message, like payload. So. In that case yes and over saving an HTTP, POST and containing, some data and you, probably need to look for this text, what kind of you know message, they, sent by a user so. Maybe you want to look for certain, words like hello if. Somebody, say hello maybe your BOTS want to reply some nice you, know friendly, messages could hey what's up you know and, you can also use the same method like, chat the past message, this, is again, it's a different interactions. But basically, about it's sending a user message the same thing. And. When are you creating, a conversational. The bots oh yeah. I definitely suggest. You, should have some nice onboarding. You. Know it's like a QuickStart, guide for the users because, many. Times users, don't know how to use, this bot like what kind of trigger words the pods and it. Should definitely have some supports, keyword like you know help, so. When I use a you know just typed in at bought. Help, then the bot can you know tell you what to do what, keyword you should use or, you know just all the kind of instructions. It'll. Be nice and, you, can take advantage of, using like, rich interactions. Like buttons, and other things are gonna talk about it and the. Later on this talk actually Brett is gonna talk about more about a conversational, but it. Will be more interesting I promise yeah. And. The. Rich interactions. So, slack offers rich interactions. Like buttons, and, like drop-down menus, and all kind of stuff you. Know this is really for more like users you know the better user, experience, in. That case you, know instead abused I have to type in something like yes I approve so this is about, the bots like asking, you some approval some time and, in stable just type in say hey Bart I approve, this and that well, maybe it's easier when, you provide like, two. Choices just buttons, once they approve and, as I say just reject. Thank. You having some, nice you know experience. Like yeah just update this message. That you approve this offer that'll. Be quite nice and when.
You Know what so, when are you using like, buttons like that I. Totally. Suggest you should use verbs, for. The buttons in this, case it's a perp and reject, instead. Of it yes no you. Know because well it's obviously it's easier for the user to understand what's going on something. Like you know you might have questions. Or, like, some tasks like saying are, you sure you want to delete this file and, instead, of saying yes no if, you had a buttons like delay. And cancel, that's, more intuitive, to the user so you might want to you know keep. In mind. So. This is another example and, the, drop down menu so. Bar can give the users of multiple choices. And. This. Is one of the use cases, it's. Project, management, software so. That it really uses those buttons, really like efficient, way it's, nice, you. Don't have to think too much it's just the press the button to do something that's cool. And. We have dialogues. Too this, is one of those new, api's, we, just. Had it recently, actually, like what last year but, we have, updated. Recently like, few weeks ago so. Basically what it does it just pops, up the forms so you users. Can just fill out the form and submit and. That can. Be triggered by a, buttons, or. Like slash commands like anything you want and, the. Recent updates, we added, like few weeks ago was like. Pre-populated. Drop down like. You know the dial, Amina dialogue the drop down menu, contains the, name name of the users, in the channel a list. Of channels it's all pretty pretty. Populated. Yeah. And you can have some external, Jason's. And stuff too so yeah, I should definitely check that out too. So. That's a summary of the, common. Pot interactions. So, we get a slash command. And notifications. About. Conversations. And rich, interactions. But. We do have some less common. Interactions. As well. So. Get in military actions, look. Again if you, are heavy it's like users, you probably, already know what that is so. When you hover a message. You. Get some emojis. So, you can react the message with moji, like maybe. Like sum up could. Be happy, emoji could, be some custom, emoji, to say hell no you. Know you, know what I is hopefully, so. Uh actually. No you know what it's funny so internally, it's like we call the reaction, so, it's reaction. Emoji. And combined it's free actually anyways. So. Every using this is a reaction, to create this boss I wrote this app. Called reaction. Ater so. What it does is a taking. Emoji. Reactions, from a users and if. The emoji, is a flags like a country, flag let's, say and Japanese, flag and translate. A message into Japanese. So. This is how it works. So. This part use events, and in. This case events, that fires when a user in, a reactor, with emoji, so, it's called a reaction, and let's go edit event. So. When that event it's triggered. You. Get to figure it out you know if the reaction, I mean the if the emoji, is a flag or not and if that's a country flag well.
Unfortunately Country. Name in language, don't always match so, you might want to write some script that just match enough let's, say if it's, Japan flight Japan. To, Japanese, it's a language it. Could be. Mexico. To, Spanish, its language and things like that so once, you figure out extract. The message, using. A method to go to the conversation, that replies and. Again. In an extract a string and dump, that in a Google Translation API, and. Once. You know you're successfully. And get a string back just. A no reply, I mean he, used sin, that translated. String back to the message thread so. That's how it works and. I. Do actually, have the demo but, I am going to show it I yeah, yeah, I'm gonna show it there later at the end of this webinar so, stay tuned. Okay. So, that's, it from. Me and now Brett will give or two shell brain, to the bot alright cool. Alright, thanks, to mommy so, we're gonna talk about how, to where, you actually run your code so. We had a lot of good conversation, about how, to build conversational. BOTS what they can do creating. Rich interactions, but how does it work from a code perspective and. Infrastructure. Perspective, so. From a high level here's, how the architecture works, you've, got your select client which could be your desktop, client, or your mobile client, and it's, gonna talk to the slack server, so it's just talking back and forth with a slack server now. The slack server is actually, going to make HTTP. Calls to some kind of business logic whenever, events, call what events happened so a message, is received in, emojis respond, used as a reaction so some event will. Happen and it will cause an HTTP, call from the slack server to run in some kind of business logic and then, the business logic will call out to some api's maybe, save some data to a database just depending on what your use case is so. That's how it looks from a high level, but. Before we get into the actual Google cloud tools used let's just talk briefly, what, is the server list so, normally if you're creating a some, kind of web hook or some kind of callback that you want the slack app to talk to you, would probably create a VM or a few vm's install, a web server and deploy. Your code to respond, to the, events that are incoming from slack but. In the server list world you don't create those VMs you don't even think about servers, or scaling at all it scales automatically, for you and you don't even have to think about it and it's, paper per use which is nice when you think about it from a bot perspective, sometimes you may have really high bot traffic say middle in the middle of a workday and sometimes you have really low traffic say, at night maybe it's zero, traffic and if, there's zero traffic then you're not paying anything at all to run your code, so. The server list compute to what we have in Google, it's called Google cloud functions, again. You don't deploy it with to a VM or a machine of some kind you just deploy your code and, we scale it transparently. For you in the cloud it's. Event-driven, so it's triggered when it HTTP. Call comes in from slack server in this case and it has logging, and monitoring built, in so.
That's Service compute and I'll also talk briefly about server list databases, we, have three primary databases as part of Google and Google Cloud we've got cloud datastore, which is a no sequel database, firestore. Which is our next generation, no, sequel server list database and firebase, real time database which. Is no sequel kind of a JSON store, database, and all, of these have the great server list property, of scaling. Up and scaling down. Automatically. For you you don't have to worry about handling. Replication. Or data sharding, it's, all handled as part of the server list technology, tool a, cool. Use case I like to talk about is Pokemon Go you may remember a very, very popular game that was launched and they used cloud datastore, as their database so. On the graph here the orange line is gonna represent what, they thought traffic. Would look like in transactions, per second at launch but, it's a game company they thought maybe this will go viral maybe those gets super popular so, we are gonna plan enough, resources, for five, times, what. We think the, original traffic. Is gonna be right, so this is the red line they said worst case scenario, this. Is the, traffic will have to handle, well. As you may know Pokemon go it's very very popular at launch they, had much more traffic than they were expecting actually, much, much. More, 50. Times what they thought they were gonna launch with a huge. Amount of traffic but. Because they were using a service tool on Google cloud they. Didn't have to take into consideration the. Scaling, of the underlying database, infrastructure, Google cloud provided, that for them pretty, cool, all. Right so let's go back and look at the reaction but that told me talked, about earlier and how does it work from an architecture, perspective. So. Again we've got slack calling, via HTTP, to our cloud function which. Is running a node.js app, and it's got some JSON that a reaction, added, event happen we're, gonna take a look at the message and then run it through the Google translation, API, alright, let's see it in action, so. Here I have a demo. And. I'm in The Learning Channel, so I'm gonna type some message let's. Go. Dancing. In the library, I'm. Not sure that's a sentence I've ever said before in my entire life but here we go so. Obviously, you can respond. To the user you can react to these messages with different emojis so I'm, going to let's, say we respond. With react with the Mexico flag and. It'll detect that I've responded with a with a flag that corresponds, to a language in, this case Spanish, you. Know do some translation so. You can see we've got some replies here and let me do another reaction, in this case I'll do the Japanese flag and. We should see the thread expand, so. Here it is in Spanish vamos a bailar in la biblioteca, I remember. Enough high school Spanish to realize that's probably right does, that look right in Japanese so Shogun give, me my sure yeah, sounds right alright we'll go after this webinar how about. So. That's the the reaction, bot to do the translation based on reactions, to messages so we've got this BOTS that's, just listening to every action to, a message and if it sees something that corresponds, to a country code it'll, pick it up in the do Trent do the translation. Alright. So back to the slides and the next, thing go demo is a, knowledge graph so if you don't know the knowledge graph is a tool from Google that, contains what. Google sort of knows about things, about entities, about, places, about people, and. It's all accessible through an API so you can get things like what's. The latitude, and longitude of the Eiffel Tower or, where. Where certain celebrity is born things like that so, we're going to wire this up to, a slash, command called /kg, so, I'm, from Texas so I'll say /kg. Texas and, that's going to call a slack is gonna take, that event pass, to our cloud function which, is gonna call the Google knowledge graph API. So. One thing I want to point out this is true of the translation, API as well as the Google knowledge graph API that, your code that runs in cloud functions, is automatically.
Authenticated, To all the other Google Cloud api's which, means you don't have to worry about API keys setting. Object IDs services, accounts it all runs under an account that can access your api's so it makes writing your code really, easy and nice and, we'll get back something like Texas. The, second largest state in the United States and, of course the Texas flag, so. We'll take a demo of this and see it in action in our slack channel. Alright. So I'm gonna say /kg. I also like raccoons, so, we'll. See what does the Google knowledge graph API have to say about. Raccoons whoops let's try that again. And. You'll see query. Raccoons the raccoon sometimes. The. Common raccoon North American raccoon colloquially. Known as trash, panda I don't know how I feel about that and. Then of course that adoring, adorable. Photo and, we can chain these so I can actually react to this and we'll see what query. Raccoons, is in, another language let's say French and it, should, post. A reply here, and. We can see it will come up in a, second so one reply and. I. Don't, speak much French but that looks roughly like query, raccoons. Alright, so back to the slides so, one, last thing we're going to talk about is. Language. And its complexity, and particularly, when you talk about, conversational. BOTS so, think about something as simple as playing a song that. Might seem straightforward enough I'll make, a slash command called play. Music and give. It the name of a song but. From these examples on the screen you consider a lot of ways to say that I can, say play, a song, by an artist play. Artists, song, I can give it just the song title I can maybe give it a genre and. If you were to write explicit. Rules to handle all of these options. They could get really messy really quickly so, do I want to open a song do I want to play a song. Programmatically. That can get complicated, we. Have a tool in Google cloud called dialogue flow and dialogue, flow helps. You take unstructured. Text, just, conversational. Text and parse, it and turn it into explicit.
Intentions. So. It does that by mapping, to intense so these are sort of actions, that your application, can perform, so in this case play music could be an intent, and it, also will extract, entities, it. Has some intelligence around known entity, types things, like dates geographic. Locations, people's. Names and. You can also customize it, with custom, types so here you can see in yellow we've defined a song type which, maps to the song types on the left that. Way when. Our application actually gets called gets, gets, handed over from dialog, flow it's already, taking care of parsing, these so, their application, has nice typed, parameters. To run, its code against so. Once we've figured out what intentions, to run and what kind of intent entity is they have we. Have two options we can just do a text, response so, just some blanket statement if I say hello just write in dialogue flow I can just type a list of messages hey, howdy what's up I can also respond, back with some of the entities that have been extracted, from the. Original query and then. Also I can do what's called a fulfillment, so this is a web hook that basically calls to something over HTTP, like, say Google Cloud functions, where, we can write our custom, business logic so this is for example some nodejs code that, takes in a weather, command calls a weather API and then returns it back but this could do anything you want to can look it to a database it, could do some more language processing. Whatever. Your makes sense for your application and your business logic. So. Let's actually see a demo, of dialogue flow I have. The UI here and you can see here are some intents, so, this one is a weather example, I will, open it up and we can take a look at, some of the options we have. So. First we've got a list of training phrases, and again, you might think it's pretty straightforward to ask what the weather is but, look at the few different ways that, you can ask it whether, fat forecast for city and date, weather, forecast, without, a city just with date what. Is the weather like and on and on so, you can actually add these custom phrases like what's up with the sky today. However. You think that. Your user might ask and you, can see it actually automatically. Tries the best guess to, what is in this, particular, question, so here things sky is a name which it's not so, I'll Julie bad but. It does know that. That, today is a date so it's automatically, mapping it and. We can scroll down and, see. That it is we, have these variables that can get passed into our custom code so it's extracted a date and. Also you'll notice there's an option for required. So. If you have to actually have some parameter, you, can say I'm required and you, can have a follow-up, action, that, prompts the user to, make sure that they give you some piece of data so. Let's look at this in the dialogue flow. Interface. So I can say what's, the weather. And. You. Can see actually responds, back for what city would you like the weather and, I'll say Austin. So. Already is it feels very conversational. Because, I asked it a question and then, it wrote back to me with, it with a prompt and that was all set up through the UI I actually didn't. Have to do any business, logic to set that up the only logic in this case is the actual call to the weather API that. I wrote and you can see response back conditions. In the city Austin, United States of America, are sunny with a projected high of 27. Celsius or 81, Fahrenheit. Or if. I asked it just directly, what's. The weather in Austin. Tomorrow. It. Has enough data in that one query that parses it out that it can just return a response right away, and. If I scroll down you, can see this, is what it parsed out from the date and the city we, can take a look at the JSON so this is the JSON that goes to our trigger.
And Our n comes back and it. Has not only my original. Query in there but also the, responses, that come back from my object. Now. There's also this idea of context. And so context, is. Beyond. One. Query, asking, for a required field so you can see we started up with we started off with an example where, you needed more information so, it asks to me directly and there, might be cases where it can execute the man it has enough information but, then you want to ask a follow-up question so. Let's try this I will say. What's. What. Is the weather in Austin. And it, should come back with similar, results and you. Can see it just for purposes of debugging we actually put the date here so today is the 24th so, because I didn't specify a date it assumed today but. I can ask a follow-up question what. About tomorrow. And. Because. It already knew I was talking about Austin, because. Of this context, I didn't, it didn't have to ask me what city and it. Was able to give me the date. The forecast, for tomorrow which is the 25th and that. Is because it matched to this other intent, called weather context. You. Get out of here. Which. Has certain phrases like what about tomorrow, again it knows a date and it's. Able to pick up from, the prior query. The. City that I specified previously, so. There are a whole bunch of, powerful, tools. With, dialogue flow they let you do this parsing this. Is kind of just a taste just to give you a sense of what. You might want to do when working with natural. Language and conversational. Interfaces. So. If you do want to do that instead. Of maybe, having a web hook or a wet HTTP, call from slack right into cloud functions, you can put dialog flow in the middle so, the command that comes out of slack will, hand it over to dialogue flow dialogue, flow can help you parse out the, conversational. Aspect what, are the nouns what are the entities, or the intense. That the user is trying to accomplish so, then when your function, gets invoked you've got it in nicely parsed, into typed, variables, so you can do whatever you want with that data you can for example save, it to cloud datastore you can maybe do some machine learning on it and. So forth so. Speaking of machine learning do, you really need machine learning dialogue, flow uses machine learning to help get around some of the fuzziness, around queries, but. You don't always need, ml so what about these cases notifications. Slack, commands and conversations, for. Notifications, probably, not you probably have just some set of rules X. Minutes before an, event send. A calendar notification. Slash. Commands, maybe so in this case I'm querying. The knowledge graph for raccoon and that's. Pretty straightforward I'm just gonna take the value. That the user put in raccoon, and hence in straight to the knowledge graph so, you don't necessarily need, machine, learning or a the AI there but, if you had a command that was knowledge, graph slash knowledge graphs raccoons. In Miami, well things start to get a little fuzzy am I asking about, raccoons. Am i asking about Miami, am i asking about raccoons in Miami what does that mean and that's where something like machine learning and dialogue, flow can help you parse out those sentences, so that you can be more confident, in what the user is asking and, alongside. That if you're doing conversation, you almost certainly need AI it's really, hard to, write hard coded programmatic, rules around, parsing, conversations, because, people, say weird things in all kinds of weird ways and dialogue, flow can help with that. So. We have a bunch of other tools around using. Machine learning to help you build BOTS and to build powerful applications, on Google cloud dialogue. Flowed we looked at there's, also an API called natural, language API and this takes, your freeform text purses. It similar, to dialogue, flow but, it's not looking explicitly. For entities and intense. It, parses out into all kinds of ways you can do sentiment, analysis, this is positive, this is negative you. Can do things like what. Nouns exist, in this in, this text what, adjectives, are being used to describe them you, can get a graph. Of what words depend, on what words and what order so you can do some really powerful language, parsing, and processing, with it and, then we have other api's for looking at video for. Looking at images for, doing translation, handling, audio files and. Then if you have to write your own custom machine, learning and say something like tensorflow to, do image, pasta fication or whatever make prediction, whatever makes sense for your application we have a tool called cloud ml, engine and this, is a tool to do serverless, tensorflow.
Serving. So, you write your tensorflow code you train it on some, model and. Cloud ml engine much, like cloud functions will scale up and scale down automatically. Whether, you're using depending, on how much you're using it so a lot of cool powerful, tools and you. Can put it all together so you can have your slack application, and not, that we would ever use anything besides slack but, dialogue flow integrates with other tools like facebook messenger google assistant, at google home you, could feed into dialogue flow do, cloud functions, to write to a data something like firestore, and, then you can actually talk back to the dialogue flow tool, if you need to do additional processing. Outside, of the initial, handoff. From your, application to. Dialogue flow and then. Again, all the other 2ml tools that we have on google cloud so, you can see there's a whole suite, of tools that can help you build powerful chats for. Chat box for your slack application. All. Right that's. A wrap so we've been taking questions during this webinar and, capturing, them we'll, be back in less, than one minute to answer them so stay tuned. You. Welcome. Back we've, got a few questions here, around slack slack bots and Google cloud that we'd love to answer for you so, the first question where. Can I ask questions or learn about new features and API updates you. Want to take this sure. Ok, so where, can I have questions, a lot about new features and API updates so, we do have, a change log actually, a recent, change changes. Or recent you know like updates and such you know it's kind of hard to find on our API page but if you go to API. -, lotta come, slash change, log you. Should be able to see some latest, updates, to its API it's and some new stuff and, also, we do have a Twitter it's, a slack. API. Yeah. Alright, next, question do, I have to use dialogue flow to build BOTS with, a slack chat bot for example can't I simply call Google Cloud functions and you definitely can and there are no gjs, SDKs, for slack that, provide a nice integration, and if you're doing something simple like the knowledge graph demo. That we did earlier where it's just taking some known set of commands and executing against it you may not need to use dialogue flow but, once you get into natural language and conversation, that's, when things can get a little bit hairy and a tool like dialogue flow can, help. The. Next question I have a killer chat bot idea thinking about how to monetize what. Are the revenue models for slack champ revenue, models, okay so hmm. But itself, well we, don't really have any plan for monetization. For bot itself, so we have AB directory, you can host your app so people can install. In their workspaces. But it's not like you know like, App. Store kind of things that you know people can pay upfront there but, maybe if you have pre-existing. Services. Or like, apps that works you, know maybe like you know what you, have some business already and that works, on slack as well then you can probably charge you know monetize only your services, itself, could be a web app could be a mobile app right and also. It's, not about monetization, whatever, but if, you have, some startup or you you, know you creating, some slack.
First Experience. Like thought you. Know company startups we actually do have something called slack fund, and AH. I. Don't have any information right, now front. But you, should be able to find out some way and it's like gum sorry. Yeah. Yeah. Cool, so, maybe we develop our raccoon, and our you at startup. Okay now we can apply - panda panda. Yeah, alright next question what's the difference between slacks, RTM and web api is okay. So. We actually do have like a Web API. Web. API is like events, and RTM, so RTM is like a real-time, in a messaging API and, it's. Actually over a WebSocket and the web api is using HTTP, you, know so you have to be just really careful. Or wise which, one it should. Be for you and. Let's. See like when you need our TM, well most likely you, can create pretty much everything with the web api over, HTTP, and events, but, when you want to have some like a serious, real-time enos for. Whatever reason just real-time, status well. Well, it's not something you recommend or anything but if you're creating some sort of slack client. Well, maybe you don't have to because we have a good one but that's, probably, Archie I mean someone should be using, yeah. Actually you know what so a shame, from. Slack he's been helping, us for doing a live Q&A today and he has written a blog post about like, which API, is for you and let. Me see I think this is on medium, medium. Calm slash slack. -, developers. - blog, and it's. A long URL but you should be able to find out this post, it's pretty well written you should donate three days yeah. All. Right should we go with the last, one here all, right and then the final question is sometimes, I get duplicate, responses, from my bot why, in. Fact we actually saw, that earlier in the demo yeah. I assumed, it was because I was in there making some changes I, think it's my fault yeah I made a mistake why. Did that happen. Probably. Because I did a badge of writing but thing is sometimes, like I think I think I mentioned earlier you have to just always, return. Like HDB 200, okay and sometimes, you forget I might, have forgot I have to take a look at oh my god but yeah. So that might be why and sometimes. You might have some duplicated. Instances. In server or something with the same API keys so there are actually multiple reasons, yeah. Okay. Make sense well, those are all the questions we have thank, you so much for tuning in to Google cloud on air and be sure to come back next Tuesday to learn more about the exciting things happening with Google cloud.