April 6, 2020
Building a Chatbot with Dialogflow and Google Cloud Platform

Building a Chatbot with Dialogflow and Google Cloud Platform


JONATHAN CHAM: –the camera. All right, welcome to GCP
Online Meetup Number 32 I’m Jonathan Cham. I’m your host today. Today, we have a very special
guest, Priyanka Vergadia. How are you? PRIYANKA VERGADIA:
I’m good, thank you. JONATHAN CHAM: And
one thing I just found out, you’ve only
been here for, what? PRIYANKA VERGADIA: Three months. JONATHAN CHAM: Wow, and now
you’re the expert at chatbots? That deserves a fist
bump right here. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM: That’s good. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM: That’s
really impressive. So yeah, Priyanka’s
been around, you know, for only a
couple of months, but she’s been telling
us all about chatbots, and how chatbots have been
improving and automating a lot of the activities
for her customers, so tell us a little more. PRIYANKA VERGADIA: Yeah, sure,
so I am Customer Engineer here at Google. So just a little
introduction about myself, I do have some background
in IVRs and technologies like Interactive Voice Response. And that’s why
chatbots do sit in my– have a special
place in my heart. JONATHAN CHAM: There you go. PRIYANKA VERGADIA: So as
soon as I joined Google, I realized that we acquired this
company called API.AI, which we have renamed to Dialogflow now. And I got my hands around it. And my customers were
talking about how we can improve their experience,
so I just got hands down working on some
customer-use cases. And I realized,
this could be very helpful to do as a live session
for some of our online folks as well. So that’s where– that’s
why we are doing this today. Please, do send us questions
so we can answer them as they come in. JONATHAN CHAM: Yup, so we’ll
be answering your questions. And just one thing
that Priyanka mentioned is about the user experience. I’ve actually worked with a lot
of customers who say, I mean, they want to, you know, attend
to customer needs very quickly. I think we’re living in a
digital age where we expect answers right away,
like, hey, what’s my shipping confirmation,
what’s my flight status. They want it right now. And chatbots will
be able to give you that, kind of, immediate,
and the sense of urgency that customers desire and want. PRIYANKA VERGADIA:
And also to extend to that point, a
lot of my customers, like, how does everybody
and every customer can relate to them, because
everyone has a help desk. And everyone gets
those calls around how to– how do I
reset my password or how do I submit a ticket? And they don’t want
to talk to anybody. So from the user
perspective, they don’t want to talk to anybody. And from the
company’s perspective, they don’t want to
waste money on handling those types of monotonous calls,
so I think, for those reasons as well, chatbot is very good. JONATHAN CHAM:
Yeah, if someone had talked to me about resetting
passwords every time– PRIYANKA VERGADIA: Exactly– JONATHAN CHAM: –they would– PRIYANKA VERGADIA: Right? JONATHAN CHAM: –hate me. Yeah, well that’s a good
segue into what you’re doing, which is a ticketing system. PRIYANKA VERGADIA: Yep. All right, so let’s
just dive right in. I don’t have a lot of slides. All I have is to show
you a demo and then how that demo actually
works behind the scenes, so that’s all that
is on the agenda. And then you’re obviously always
welcome to pose questions. We’ll handle them as they come
in and also towards the end. So without further ado,
let’s get into the demo. JONATHAN CHAM: I like it. PRIYANKA VERGADIA: So
this is that helpdesk demo that I was talking about. You could actually integrate
it with your web chat interface or your mobile
web site interface, put it in there. You could also put it in Google
Home as an app– as an action. And then you can also
use the same chatbot that you built in Dialogflow
and put it into your assistant as well. So it’s like one time
effort, but you can broadly distribute it into all
the different channels. You could use
Facebook as well for– if you interface with your
customers over Facebook. JONATHAN CHAM: So just for
some of the viewers, so that they don’t
feel intimidated, I mean, you don’t actually have
to do any machine learning. I mean, you’re not doing
any mathematical algorithms and things like that to do this. PRIYANKA VERGADIA: I’m glad
you asked that question. No, you’re not. And I’m going to show
you in Dialogflow, it automatically learns,
so all you’re doing is basically providing it a
couple of different utterances of what a user can say. And then the machine– the software will
basically learn on its own over time as to what
requests it gets. And then it modifies
itself over time. JONATHAN CHAM: Go it. PRIYANKA VERGADIA: There is
also a training component to it, so you can train it with
the request and response that you could get. JONATHAN CHAM: Great,
I guess we’ll walk through that in a little bit. PRIYANKA VERGADIA: Yep. All right, so let’s
try to test this thing. I would like to submit a ticket. And then it should
respond back saying, all right, give me your name
so I can put your ticket in. And then I can say,
all right, my name is– I’m just making up some name. And then it will say,
OK, thank you John– so it’s smart enough to
understand that this was John– and then now describe
the ticket for me. And then I can say, all right,
my phone screen is broken. [INAUDIBLE] And then it
should respond back saying, I have logged your ticket in. This is the ticket number. And someone will
contact you in 24 hours. And that’s all you pretty
much need in most cases. Like, a person on the phone
would also just call in and submit a ticket for you. And they won’t be personally
handling the ticket, right? Somebody else in the queue
will be handling the ticket, so the chatbot just
did that in, like, five seconds for the customer. Now you take that. Now you can see what
happens behind the scenes. So I have a data store
behind the scenes, which is a database, NoSQL database. And it’s basically sending
that data into the database and saving it. So my phone screen is broken. This is John. This was the ticket number. JONATHAN CHAM: What is it
using to send it to data store? PRIYANKA VERGADIA: So
it uses Cloud Functions to send it to data store. And in Cloud Functions– and I have it up here– it’s really not a big
code that you write. JONATHAN CHAM: Right,
it’s very simple. PRIYANKA VERGADIA:
All you’re doing is just interfacing
with data store and calling the API
for the data store. So right here, I’m parsing
out that email, phone number. We are not caching the
email in this case, because the user
didn’t give it to us. If they did, we would
cache that as well. Well, you would take that,
put it in the data store, and then respond back
saying I successfully logged your ticket
with the ticket, so it’s a very simple
function that you’re writing. And the reason I’m
using Cloud Function here is also because
you don’t have to set up servers or install
them and do all that jazz. All you’re doing is you
just need a function that can talk to an API, so
that– the Cloud Functions is best for doing that. So all right, we did
that in the chat. You could do the same with
Google Home or Actions. Let me just give
you a little glimpse of how you would do
that with Google Home. I’m using the
simulator, which you would use to test out, like, in
say, talk to help desk support. SPEAKER 1: Let’s get the test
version of Help Desk Support. Hi. How can I help you? PRIYANKA VERGADIA: Help
me reset my password. SPEAKER 1: No problem. Give me your username
and I will send the link to reset your password. PRIYANKA VERGADIA:
All right, so that was what I wanted to show you. Like, you could
do the same thing that you were doing
from the interface, from chat, also
within Google Home. Now, how was all this built? So let’s get into
Dialogflow a little bit to understand how this was all
built, because I’m sure you want to know that as well. So I’m going to talk
about intents and entities in a little bit more detail. I have a slide in there,
but it’s basically– in short, intent is basically
whatever the user can say, and then what do you do after
user says that, so like, what action do you take
and what response do you provide the user? That’s an intent. So I’m going to open
one of the intents here so that you can see. You saw that we
submitted a ticket. So that’s the intent,
where a user can say, I want to submit a
ticket, I have a problem, I have an issue. They can see all sorts of
things to submit a ticket, so now you’re capturing
them in a bucket that these are all the
things that a user can say. And then you’re taking
an action on it. So in this case, I don’t have
an entity, because all I want is to capture those things
that the user is saying, the problem, the incident,
the ticket, and then just give them a static response,
which is, OK, sure, I can help you with that. Give me your name. So there’s no action
that I need to take other than just giving them
a static response, so that’s why this one’s
a little bit simple. When we go into this one,
which is the description– so remember when I asked for
the description from the user, like, what is your– what is
the problem that you’re facing? They said, my phone
screen is broken, my laptop’s frozen, or
something like that. I am parsing out what
type of a problem it is. And that is just by nothing
but defining an entity. And that entity, in this case,
is an incident type, which I am parsing out and putting
in my data store, and saying, OK, these are all the tickets
that came for phone problems. And so now I can say, this is my
entity, which is incident type. And now it’s my variable
that I can take an action on. And then I’m not
responding anything here, but am asking it to go to
a web hook, which is where Cloud Function is written. So when I go into my
fulfillment, which is where my web book
is defined, this is the URL for
the Cloud Function that we saw right here. If I close that, you
can see that that’s the link to the Cloud Function. And that’s what you define
in your fulfillment. You could actually also
write the same Cloud Function within the editor. And we just released
this two weeks ago, so that’s a really cool feature. Now you don’t even have
to go out of Dialogflow to write a Cloud
Function, you can just do it right here in the editor. JONATHAN CHAM: Yeah,
that’s really nice. PRIYANKA VERGADIA: So yeah,
that’s how this was all built. Do you have any more questions? JONATHAN CHAM: Yeah, I mean, I
think one thing to keep in mind is that you put in a lot of
different intents, right? But you don’t actually have to
put every single combination or permutation of
questions that the user is going to ask, right? PRIYANKA VERGADIA: Yes. JONATHAN CHAM: I mean, that’s
the whole point of training, so can you talk a little
bit about the whole training process? I don’t know, you’ve
collected maybe some questions that you get. And at some point maybe, the
chatbot didn’t understand. And at that point you need to
throw that in there and say, hey, this is this. You know, the intent
is the same, which is what you’re trying
to do, but they asked it in a different way. PRIYANKA VERGADIA:
Yeah, exactly, so I’m really glad you ask that. This is the part–
feature within Dialogflow that’s in beta right
now, which is training. So the first thing you would
do for any machine learning models, is you would try
to give it as much training data as possible. So that’s what we trying to
do with all the requests, utterances that we
put in the intent, but there will be
things that you may not be able to catch in there,
but those are the things that you can catch in here. On this screen, I have the
training portion of the bot here, where if I
click on one of these, I can see that help
me reset my password was correctly matched to
an intent password reset. I could have found something
that did not match my intent. So we could say something, and
I can’t think of an example, but this could probably– imagine that this was
attached to a different or a wrong intent. Then we could change
that right here and say, OK, now attach
it to contact us, because that’s where
it should fall. And then say that
I approve that. And then approve it. And then once you do that,
now every time a user says something related to
reset or something related to help me reset, it
would automatically fall into that contact us. So that’s how you would
continue to– like, somebody who’s
managing this chatbot would continue to go in and try
to see if things are falling off, and then continue to
maintain it and manage it by improving the training. JONATHAN CHAM: So the chatbot
captures all the history. And then can you show how
you actually do training? Is it, you have all
this training data. And then you push
the train button? PRIYANKA VERGADIA:
Yeah, let me do this. So let’s see, so I have– say I say this one. And I change that. And I change it to– I’m going to keep it
the same, and just stay approved, and then say approve. And then once it does that, now
see, the training has started. It’s starting to train. And you can see the
gear icon moving here. JONATHAN CHAM: Got it. PRIYANKA VERGADIA: And
then once it’s done, it’s going to say
the model is trained. And now it’s going to start. And you can test it
right here as well. You can test the
same phrase here. And it will start
to take it again. JONATHAN CHAM: Very
nice, very nice. And then he talked a little
bit about the different integrations that we have? I feel like Dialogflow,
one of the benefits is there’s a lot the
different integrations. PRIYANKA VERGADIA:
Yeah, so there is. So the point that I made earlier
about I have the demo version, and then I also have the
assistant that’s enabled. So you’re basically
building it once, but you can now deploy it
by just toggling this switch and say I want to deploy this
on Facebook Messenger as well. And all you do is that. And then you verify your
token for access to Facebook. And off you go. And it’s enabled for
Facebook as well. And then similarly, for Slack,
Twilio, if you use Skype, we have some really
cool integrations done with Skype as well. I think one of our customers
has used this for, like, controlling their refrigerators. JONATHAN CHAM: Oh wow. PRIYANKA VERGADIA: Yeah,
it’s a very cool use case. And so yeah, you can– these are all the options that
you can connect it to, and just write the code once,
so that’s a cool part. JONATHAN CHAM:
Right, so, yeah, that seems like it’s part of
the fulfillment process. You know, you covered intent,
and maybe at a high level, intent is what are you
trying to do, right? Like, what’s the goal? Maybe you want reset a password. Maybe you want to
order something. Maybe you want to
contact support. Talk a little bit
about that entities. Like, how do entities
fall into the intent? Are they entities or
just things that you want Dialogflow to capture
from the sentence, right? PRIYANKA VERGADIA:
Right, so entities are things– so let me
actually give you a simpler example so it makes
a little more sense. So in this particular example,
I have a weather forecasting application, so this is
much easier to understand. You say, weather forecast
in San Francisco tomorrow. So the user is interested
in San Francisco city, and tomorrow is the time frame,
so those are my two entities. Entity is anything that you
want to take an action on. So I want to take an
action on the city, so I can take the city
and plug it into my API, and get a response for it. And then same for tomorrow. I could get a request for today. And then I would take
that, parse it into a date, and then give it to my API. And that would respond
back, so anything you want to take an action on. The one thing I would also
touch here that you didn’t ask, Jonathan, is context. A context is very
important as well. So this is actually the
biggest differentiator for Dialogflow in general. So in this case, I can
say– a user can say, weather forecast in
San Francisco tomorrow. And then it would respond
back with that weather. And then following up, I can
say, oh, how about today? And then it would
know that I’m still talking about San Francisco. So you can set that context. And the way you
do that is, again, going back into Dialogflow. And then I can show you one of
the intents that has context. So when I’m doing
description, remember, it is– it remembers the
name, email, and phone number from my previous intent. And all you do is just
connect them together and it would
remember the context. So that was, in short,
how you would do it. JONATHAN CHAM:
That’s really good, so it seems like you
can make some very complex conversations. It’s not just question,
answer, question, answer. It’s more like question, answer,
follow-up question, answer, follow-up, even more follow-ups. PRIYANKA VERGADIA: Yeah JONATHAN CHAM: And that’s
where context comes in. PRIYANKA VERGADIA:
Exactly, and that’s where the whole natural language
processing within the engine and the machine learning also
comes into picture as well, so and is learning over time. JONATHAN CHAM: Yeah, no,
that’s really interesting. So let’s see, we have
a couple of questions. Let’s talk about– all right,
what are some drawbacks of– you know, I think, you
know, this is a meetup, so we try to talk about the
great things about Dialogflow. What are some drawbacks
with Dialogflow? PRIYANKA VERGADIA: I would say
it’s a product that’s obviously constantly evolving, as we
say in machine learning, is constantly,
obviously, evolving. So that’s one thing
that I would say. We are very open to
feedbacks, and learning from– and it’s also a space
that’s evolving itself, in itself, like,
chatbots in general. So we are learning
through the experiences. Then some of the other
drawbacks, I would say, are really just
around languages. We are constantly
working on supporting more and more languages. I think we have
about 12 to 14 today, but, like we have in the
other Speech APIs, and we– I think we have around 180
languages in there, right? So around that range,
so we are constantly trying to catch up with that. So that, I would say, is a
little bit of a drawback. But other than that,
it’s a evolving product. JONATHAN CHAM: Yeah, I mean,
I think, so, customers, obviously they love the fact
that it’s out-of-the-box. I mean, I’ll throw out
some buzzwords out there, machine learning, right? Like LSTMs, recurring
neural networks, I mean these are all
mathematical algorithms and models used
to build chatbots. If you’re not interested
in doing that, right, this is, kind of,
an out-of-box solution. If you need more
control, maybe, like, let’s say you’re
doing something fun, like generating Game of Thrones
text or some random language. And that’s where
you’re not going to get that type of
control with this, right? This is, you know, we’re
training the model for you. We’ve built it out for you. And we’ve made it really simple. But if you need– kind of, very
specific use cases, you know, this is probably
not the best tool. PRIYANKA VERGADIA: Yeah, I
would also add, like, you know, if you’re looking for
trying to find ways to start using machine learning in some
way within your organization, this would probably
be your good entry point into like exposure
to machine learning, because it’s like that easy way
where you don’t have to worry about training the
model, but still understand how the model
would be trained if you do it with some other application. So I think it’s like
a low barrier to entry into machine learning in a very
safe place, because you have the model being trained
by the platform itself, but you’re just
learning through it. JONATHAN CHAM: Right, right. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM: Actually,
another interesting use case that I’ve been working
with a customer on is they see it as a
phase approach, right? Machine learning is a very– it can encompass many
things, where, hey, we want to automate everything we do. But I think realistically, it’s
just taking it step by step. So the first step
is really let’s just try to have a chatbot, right? And this is, like, a
really easy first step. Like, hey, let’s just
start figuring out what customers are asking. Now that they’ve collected
all this information, they might realize, oh, this
is exactly what we need, or it’s not. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM: And so– yeah. PRIYANKA VERGADIA: And then it’s
like an easy step back as well. Like, if it’s not, then let’s
just step back, start again. And you didn’t lose anything. JONATHAN CHAM:
Yeah, you’re still collecting all that
data from your customers to build your own model. I mean, we have customers
building chatbots our Cloud ML technology, and
using TensorFlow. So it’s a– I mean, there’s
many ways to kind of– PRIYANKA VERGADIA: To do
the same thing, but yeah. It’s a platform to
make things simple. JONATHAN CHAM: All right,
so another question– is it free? I love that question. Everyone wants to
know if it’s free. PRIYANKA VERGADIA: It is
absolutely free at this time. So you can go ahead,
start building things, and start using them. The integrations that you do
with your web hooks and stuff, they could probably
cost you something if you’re hosting them,
say in cloud functions, or somewhere else. JONATHAN CHAM: Right,
actually, that’s where you might get charged,
like, Cloud Functions, you pay. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM:
It’s a small price for something– data
store you would pay. PRIYANKA VERGADIA: Yeah. JONATHAN CHAM: But right now,
I think Dialogflow is actually free itself. PRIYANKA VERGADIA:
Dialogflow itself is free. JONATHAN CHAM: OK. PRIYANKA VERGADIA: Yes. JONATHAN CHAM: That makes sense. No, that’s good. And then why did
Google rename API.AI? I mean, like, when I
first heard of API.AI? I was like I don’t
know what it is. PRIYANKA VERGADIA: Exactly. JONATHAN CHAM: I think most
people thought that, right? Like, what API.AI? Is it a website? OK, is that a chatbot? OK, it says chatbot. Is that all it does? Because API.AI is such
a broad name, right? PRIYANKA VERGADIA:
Great question, yeah. And you pretty much, kind
of, answered it yourself. It’s basically, it
was hard to understand what it was just by name. And it is APIs. It is AI. But again, in normal language,
it’s– what is it really doing? It’s really helping you
have smart and intelligent conversations, which
is very much aligned with the Dialogflow name, so
that’s why we took a step back and we made it more
commonly-usable word than API.AI, which is hard to
comprehend as to what it does. JONATHAN CHAM: I think the
funny thing about names is no one’s ever going
to agree on a name. PRIYANKA VERGADIA: Exactly. JONATHAN CHAM: Like, I
mean, Dialogflow, you can argue, yeah, it’s
not the best name, but it’s not the worst, right? PRIYANKA VERGADIA: Exactly. JONATHAN CHAM: And I
think for any name it’s always going to be a tough– an argument point. PRIYANKA VERGADIA: There will
be some in support and some against it, so yeah. JONATHAN CHAM: It’s,
like, just like politics. So all right, no, that’s good. And then I think– so another question, link to
Dialogflow dots and intro? I haven’t heard of it before. Yeah, so Alex, we’ll definitely
send a link to– actually, if you just do a
quick Google search, hopefully Google is
good at finding Dialog– I think I did a quick
search yesterday. PRIYANKA VERGADIA:
The first link– JONATHAN CHAM: The first
thing that comes up– PRIYANKA VERGADIA: Yeah. JONATHAN CHAM:
OK, and then Ashok asked the question,
how to name an agent for different integrations? Or is it the same for
Google Home and Alexa? PRIYANKA VERGADIA: It’s
the same for everything, so all the
integrations you have, you will name the
agent the same. So there’s only going
to be one agent. And then the integration, you
just enable the integration to be available for all
the different platforms, but you’re only
writing the agent once. JONATHAN CHAM:
Right, so, yeah, it would be very complex if you
had to create a different agent for different integrations. So yeah, basically, one agent
encompasses all the different– PRIYANKA VERGADIA: All the
different integration– JONATHAN CHAM: –touch points. PRIYANKA VERGADIA: –points. JONATHAN CHAM: OK, yeah, great,
and then, let’s see here. All right, well look,
I don’t see any more– I mean, that was a
lot of questions, so I think that’s it. You know, definitely
subscribe to the channel. If you have any topics you’d
like to discuss throw it in the comments. You know, Priyanka, thank
you so much for your time. That was fascinating. I mean, I’m going to the
chatbot just to talk to me, because I don’t
have many friends. PRIYANKA VERGADIA: You
should do that then, but I can talk to you. JONATHAN CHAM: All right,
that’s true, that’s true. Anyway, thank you so much. Tune in next time. I think our next topic
in two days, actually, on Terraform, which is super
cool as well, you know, automating deployments with
Terraform on Google Cloud Platform. And, yeah, all right,
thank you very much. PRIYANKA VERGADIA:
Thank you for having me. Thank you everyone. JONATHAN CHAM: Yes, Of course. PRIYANKA VERGADIA: Bye.

39 thoughts on “Building a Chatbot with Dialogflow and Google Cloud Platform

  1. That was a wonderful tutorial Priyanka and Jonathan. I will be greatful if you could check my chatbot deployed on Google Assistant, and let me know your thoughts. I recently presented this project at – Google India.

    Just say, "Okay Google, Talk to Alice Safety Bot"

  2. Can I programatically add flows to dialogfllow. We are using a UI in this case. Just for example purposes. The user says I want to create a ticket. So there can be two ways to add a ticket one is by asking for the user-name and the other is by prompting the user to directly call the agent. Can these two ways be added programatically instead of having to create the flows in the Dialogflow itself ?

  3. I am Most interested in ChatBot integration with 'Zapier toolset'. Please notify me how a ChatBot Workflow can be integrated with Zapier and Where do I engage to start with those? Thanks in Advanced!

  4. Can somebody help me in writting a google action to use google calendar for setting meetings and adding evetns ?
    I been seraching for 2,3 days and could not find anything significant . thanks in advance.

  5. I can see you have a big microphone. Pity that Google cannot afford a better one with noise cancellation as the background noise was totally drowning out the speakers, making it difficult to hear what they were saying.

  6. Question, is it possible to add a chatbot using Dialogflow to a Telegram group? I managed to add one but it won't respond to any @mentions and the idea was to get the bot to chat only when it is spoken to directly. So far it works only when privacy is set to disabled but that results in a crazy amount of spam whenever a user sends a message.

  7. thanks, for the video, I could understand better what dialoglofw can do, I´m in dought if we can integrate article content to be our bot answer. Like user asks, for example, What is Javascript and bot answer the definition of Javascript from Wikipedia.

  8. Dialogflow is great… I also tried creating a local webhook service (if it helps anyone ) using ngrok https://youtu.be/qd-3D2USCw0

  9. Hi, when deploying a chatbot for the google assistant, is it possible to use it on a smartwatch, running google wear OS?

  10. Being an Indian I require to take inputs of names that are non English..So we I train my chatbot in dialogflow it does not recognize those names like mine, Hrishikesh. So can you suggest me what can I do????

  11. I am interested in ChatBot with enterprise edition integration with 'Android' app. Please notify me how an enterprised edition ChatBot workflow can be integrated with android and Where do I engage to start with those? Thanks in Advanced!

  12. Hi, can you give the link for source code of the above cloud function? please?……….refering as a sample code, in video it missed some important lines.

  13. If you can become an expert in Chatbots in only 3 months makes personnel quickly exchangable. That is good from a Company perspective, as relocation to low Labor cost countries will be quite easy.

  14. Hey Priyanka! I need the bot to simply schedule appointments for incoming sms. Is there a tutorial i can look up for that?

  15. If chatbot is deployed to Google Assistant can we restrict its access to a particular domain? If not then where should I deploy it to have control over the access?

  16. I am not able to create a new project on dialog flow. It is showing – failed to setup GCP project..help me to get out

  17. How can I install jupyter notebook, connect to dialogflow, then call intent identification method for automating this test by passing multiple utterance to that function

  18. How can we customize the UI of chat interface when we integrate chatbot to our own website so that we can implement good HCI ?

Leave a Reply

Your email address will not be published. Required fields are marked *