Building an AI Phone Assistant in 2 Hours? | Vapi x Make Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in today's video I'm going to show you a complete tutorial on how you can create an awesome inbound phone agent for a restaurant that can reserve tables on behalf of your customers or on behalf of the callers it can save the transcript and the best part of all it also has memory so it's going to be a complete custom solution using vapi and you will be amazed on how awesome this chatboard is going to be and how awesome it is to actually extend it it's super easy to do and I will literally guide you through everything before we get into it here is the result so you can see how it actually looks and what we did during this video hello this is Lisa from healthy rap who am I talking to hey Alex here I'd like to reserve a table for tomorrow at 300 p.m. V Alex how many people will be joining you for the reservation it's going to be three people all righty I have a table reserved for tomorrow at 300 p.m. for a party of three under the name Alex is there any special occasion I should note for the reservation uh yeah it's my birthday hold on a sec awesome Alex your table is all set for tomorrow at 300 p.m. to celebrate your birthday we look forward to having you at healthy rep awesome thank you very much I appreciate it so tell me this is amazing right you have basically cards you have memory about everything inside of the chatbot if you are still here and you would definitely like to see it I 100% suggest you get yourself some water get yourself a coffee and get yourself maybe some snacks if you want to follow along cuz it's going to be a long one I literally cover everything from zero so all I have prepared is this board right here I have opened a couple of tabs but this board is everything I have prepared so we literally create everything from scratch and from scratch I really mean from scratch I didn't prepare any prompts or whatsoever so you literally can follow me along the way from nothing if you are like me and you still like shortcuts I will provide you all of the templates and everything you're going to see inside of this tutorial within my resource Hub under the hub. indra.com you can sign up there for free get access to all of the templates everything I create during this video so that you can download it and simply follow me along the way while actually not doing much and having everything ready okay to actually dive into it we are going to use a couple of tools which I'm going to mention in a second but the first thing I would like to show you is how the actual flow should look like which you probably can already guess from the video that you have seen a couple of seconds ago where I showed the results but as you can see here in my wonderful graphics on my wonderful board we have an AI phone call structure and that is basically what I expect inside of this assistant so we have a caller which is obviously the person that would like to reserve a table inside of our restaurant and he does an incoming call to our restaurant so in that case I would like our assistant to check if it's a new caller or not so if it is not a new caller then uh we just greet the caller and we ask the caller for their name and this will probably in our example the first name cuz it's just the simplest to remember and we're also going to use that again to to call the caller in case he calls again after his first call then in case he was already there exactly we going to mention his name in the greeting so it's a little bit more personal and then we're going to have the conversation with the user and ask answer whatever questions he has in case you would like to have some FAQ or whatever else it is about the restro that we would like to add then if the user wants to reserve a table which should be the case if he calls the first time we are going to use some tooling that can actually check the availability of a calendar and schedule a meeting or book the table in that case and then if there are no further questions we end the call and in case the user doesn't want to reserve a table in the first place and he just wants to ask them questions we are just going to tell the bot that he should answer the questions and then end the call so looking at it it's a pretty basic script and even though it looks that simple it takes a bit of time to set up even though it is simple to set up but it's just about the structure and how you approach those things so I'm going to take you on the hand here and literally guide you from zero with literally all the tools you need and everything you can set up to the very end and I'll try to do it as simple as possible so that you can follow me along in a graphical way as well and since I mentioned graphical way I have prepared another part right here inside of my board which is the AI phone call call uh AI phone call infrastructure so those are basically the tools and the entities we need to actually create this call and I just listed them here so what we are going to to do now is basically we visualize how this setup looks like and what kind of tools we use so obviously in the beginning we will have a caller and that caller is the person who calls the restaurant which in our case will be us as well then we are going to use VY if you have not heard of vapy Vy is a platform that offers a predefined voice AI infrastructure that you can literally Implement into whatever kind of business whatever kind of industry you can build your very own stuff with it inbound and outbound and in probably the most amazing way ever so from all the voice platforms that I've ever tried B is literally my favorite one I use that for my own SAS tool as well for our clients Etc so if you have not heard of it definitely check it out it's worth it and what I would like you to understand is the difference from vapi to all of those other tools like Bland like synf flow like vocode it is literally the an infrastructure provider it literally just provides the infrastructure most of the additional features that you would like to have or that you have in other platforms like Bland and sylow you need to build on top of it obviously the first thing you probably think of is it's more effort to do but if you think about the amount of use cases they would need to cover to build something you barely need any of those and they just go into extra performance and they cause some extra trouble and maybe limit them as well in other ways which you don't have with VY because you can literally build the whole functionality yourself this is a as a little background thing for VY so let's go back into our board and the second part is basically a logic platform which is where we are providing our logic that tells VY what to do in certain scenarios so we are going to use a very special structure on VY that I have already disc described in one of my previous videos about transient assistance I'm going to go into that in a bit as well but you can for now think about the logical platform something where we actually execute features that we would like to have inside of our assistant but on a tool that we have access to and that is not directly hosted on VY whatsoever then we also going to use a calendar so this calendar can be basically your restaurant calendar or wherever you would like to host those kind of meetings or wherever you would like to schedule them so if you use something like 7 rooms or any other kind of CRM where you manage all of your reservations and bookings that is one that you would like to integrate in my case I'm going to use Google Calendar but I'm going to go into this as well in a second and lastly we would like to have a storage where we can basically store the information about the callers that actually call uh into our chatbot or into our AI voice Po and we would also like to have a storage for the transcripts so basically everything that was created after the call that we can use again for debugging for sending the call for extracting information to further enhance our experience and further develop our voice assistant in case we would like later so what we are going to do now is to actually visualize that so that you get a better understanding of how all of this looks so the color the caller in our case can either be a phone number or it can be a web call and what I mean by that is that if you are going to B and you create an account on vapi which I definitely recommend you will be able to add an assistant and you will be able to add a phone number and for for adding a phone number you can click on Buy number and you will see oh sorry for import number and you can see two different tabs so you can either import a number from tro or vage which means you can host either one of those on those platforms which I always recommend instead of buying it directly through VAP because it just gives you a little bit more control and you can enable extra features inside of T that allow you to send SMS from that exact same number instead of using a third party service if you would like to send SMS at some other point yeah we can either use VY to get the number or within the assistant once we create one we will also be able to use web calling so to basically call the assistant through a virtual number that is literally just on the notebook just imagine it in that sense so you can literally just call with a notebook to this voice agent and test it out for yourself or maybe even implement it into your website at some point so this is number one I'd like you to understand in our case we are going to use web calling as I don't want to purchase a number but it is literally the exact same setup and I will explain you that as well once we at that point so you can see how you can integrate a phone number in in case you would like to because it's very very simple the main logic is built separately from the phone number so all you do is basically just connect the phone number but we come to that in a second like I mentioned bapi is our technology or our AI voice calling infrastructure provider that we are going to use to set up the call and as a logic platform TDA we are going to use one that I always like to work with and that is make.com so in case you don't know make.com it is basically a workflow automation tool that allows you to build workflow automations directly in a cloud so that you can run them without having any kind of technical knowledge or infrastructure or coding knowledge whatsoever and you can build it in a no code way to integrate different platforms let them communicate let them talk to each other like I mentioned make.com if you know about zap here it is very similar in my opinion make.com is more advanced and it is cheaper and it is just generally I think like better structured then for the calendar in my case I am going to use the Google Calendar because it's the one that is most accessible for me in most cases and it also offers great end points inside of make so I decided to use Google Calendar for that and as say storage you'll be surprised but a storage is also nothing more than literally a Google sheet in our case you can also use air table or maybe your internal storage in case you run a hotel or a restaurant or whoever you would like to communicate with and you have a database of leads you can literally just use that as well to feed in that information okay with now all of the tools defined you can ensure that you have an account on VY you have an account on make.com you have a Google Calendar or any any other calendar that you can integrate with and you have a database something like a Google sheet or a air table datab base whatsoever and to structure all of that we are going to move a couple of elements around so you actually understand that better and the first thing is obviously vapi so whenever a phone call comes in from the caller to vapy then vapy is basically managing whatever happens with this incoming phone call and there are two main ways that I have described in a previous video as well very in-depth so I suggest checking it out but to make it short you have one way of using a static assistant which you literally just create in the back of in the dashboard of VY and you have also call something called a transient based assistant which is an assistant that you create on demand in the moment the phone call comes in which is exactly what we are going to use at a later point in this video because we need that for making values Dynamic and I will show you that as well step by step so this is number one which means we have first our connection to VY and VY basically or the caller sends the information to VY and VY basically sends the information back to the caller so all the communication between the caller always runs through VY then we are going to use a different platform which is called make.com like I mentioned and we use this platform as our logic provider so everything we would like to have as extra features or whatever else we would like to integrate with that vapi doesn't support out of the box we are going to run through Mar make.com we are going to use that in two different ways so there will be two different kind of connections that we are using with with make.com and VAP basically knows it as well because VY is then communicating with make.com to do a couple of things first of all it is obviously taking care of sending any kind of function callings so any kind of tools or skills we give our voice assistant he he can use that information and send it over to make.com so that we can use that inside of make.com to run any kind of actions this is number one the second time B is actually communicating with make.com is for creating the so-called transient based assistant which is something that I'm going to explain you in a bit as well but for now all we need to understand is that vapi basically uses an assistant or expects an assistant from make.com instead of using a static assistant that we can create on their platform so then we already know so far that VY basically communicates with make.com and make.com can send information back to buy then make.com will basically be able to schedule meetings on our behalf and this happens from make.com to our Google Calendar there will be a little bit of interaction right within here for checking the availability but that is something I'm going to show you once we actually create the scenario inside of make.com and lastly we also have our two logic taking care of storing the data inside of our Google Sheets Etc so that we can access it at any point and we can actually use it for memory and this should be like a very small structure on on how this is going to look what we are building now so we have a back and forth connection between the storage we have a Google Calendar connection that is basically one way because Google Calendar doesn't really send requests to make.com in this specific example so with that structure here we should have definitely a clear picture of what's going to happen and how the structure should look like and now it's time to actually dive into the whole setup and we can basically get started building the whole assistant so the first thing we are going to do is obviously creating the assistant setting up the assistant in the way that suits our business and our needs and for that obviously we need to First create one inside of vapi so if you don't have an account create one on vapi and add your your billing details you can do that under billing and you can add your payment method right here it is necessary if you would like to use their platform in the first place once you have done that all you need to do is you head to assistants you click on create a new assistant and in our case we would like to have an inbound call so we can either start with a blank template or since I'm a bit lazy what I'm going to do is I use the appointment setter template and I click on continue we're going to give this this woman a name let's call her Lisa I click on create Lisa and what happens now is we basically have an assistant that looks something like this so don't get overwhel you don't need to know any coding by the way for anything we do it's going to be all no code so don't get over whatever is there I'm going to explain you everything in step by step so that you really get a feeling of how to create amazing and advanced voice spots with Wy so the first thing is very self-explanatory which is the first message so this is going to be whatever the assistant says first so in our case it's going to be not Mary but Lisa so we have hello this is Lisa from now we need a restaurant name so let's say our restaurant is called healthy R for example so we have our restaurant called healthy R and instead of how can I assist you today we we already know that this person is calling and like I mentioned earlier from within my within my very very nice board here we would like to ask the user for the name so this is something that I'm going to do directly inside of the bot so we can say something like hello this is Lisa from healthy rep who am I talking to so in that case it would basically ask us who we are talking to so as a user as a caller you basically directly prompted with whoever you'd like to call to and now this is a bigger prompt that probably takes a while to adjust so again what I'm going to do is I literally just head over to open AI to chat GPT and I'm going to ask CH to just rewrite that in the style for restro that it can make restro bookings so I say something like I'm just going to write this down so you can just follow me along okay so I'm going to drop in the prompt example now and you can read through it here as well you will also have this one available inside of the resource app so you can simply download it as well and adjust it it's a very simple one and I'm literally just going to change that and fix the grammar issues yeah so it's going to be a pretty lean prompt that literally just instructs the jbt to rewrite the one that we copied from buy and do the adjustment so let's see what happens okay I have could have given it the name as well that would be great so I'm going to do that by just canceling that and say please rewrite it for a Resturant called healthy rep so we directly have it written for our restaurant which probably also gives it some maybe some extra context for a healthy alternative so it writes The Prompt in a bit of a different way so let's look into this here voice assistant for healthy rep a vibrant restro located at B okay our address that is good I'm just going to leave that now in case we would have an actual address you can obviously change that the hours are from 11:00 to 9:00 p.m. so I would like to say we have it until 11: p.m. so it looks good though what I'm going to do is I'll just copy that and I'll paste the system from right in here and now I'm just adjusting the parts that I don't like so let's say 11:00 p.m. but they are closed on Sundays that's weird let's say Mondays healthy rep specialize in offering nutritious and delicious wraps and salads for the Portland Community all right let's do that your job and was answering curious about the restaurant assistant callers with table reservations okay that looks good ask for the callers full name let's change that to the first name as we would like to have only the first name inquir about the date and time we'd like to reserve a table form confirm the number of guests attending we don't need this one because we already have the number check if the reservation is for a special occasion that is correct aim to keep the conversation lighthearted and engaging amazing use concise informational language like phrases okay perfect since this is a voice interaction keep your responses brief and conversational that is great as well so I'd say like as a beginning for literally not spending much time on the prompt this is a pretty decent one and we just continue with this one so now the next step is basically to define the provider we would like to use and in our case I suggest to use open AI just because I know it has function calling available and it is integrated with vapy you can check out the others I know that anthropic is also releasing function calling I'm not sure if they're integrated with VAP yet but I know open AI is so we just keep it at open Ai and for a model we keep the 3.5 turbo cluster and why I'm doing this is as you can see here VAP basically dynamically creates an estimate of how much a call possibly costs so VAP by itself always charges 5 cents per minute per call and the rest basically gets dynamically calculated based on whatever tools you use within the integration so if you're an 11lbs user and you like to use 11lbs you go ahead with their platform and you get charged depending on how much they usually charge or with their tokens so I just leave it at 3.5 you can also see now we are basically P $0.1 or 10 cent per minute if I would change this to gbd4 it would be a little more expensive and the longer the prompt is the more expensive it gets obviously the temperature we keep at one which means it is not going to be too emotional or it basically answers like properly in a a very standard way what you already expect from jbt you can adjust it depending on your Resturant if it's like more more hippie style or more luxurious or more elegant whatever you can adjust the temperature uh as described here so the Max tokens I would also leave at 250 cuz it's not too long which is great so open AI also is kind of forced to answer in a shorter way which is exactly what would what we would like so for that part it is all good now we are going to head to the transcriber and for transcriber we keep it at Deep crum in Nova 2 which is basically what we are going to use from uh from speech to text so deep CR basically will convert everything from speech to text basically what the caller talks will be translated to text and then sent to the next platform so this is the best choice I would definitely leave it I would leave it at English or whatever language you'd like to work with for the voice instead of 11 laps I'm a fan of azure just because I think it sounds better and the price is also cheaper so you can choose any kind of language that sounds well for you or that that fits you they have tons of them so choose whatever is suits your need I'm going to just keep it at Andrew for now and you can also set a background noise which basically means in that case either office or or nothing so in case your AI voice agent answers it might have some background noise about the office so you hear some office noises in the background which is pretty nice I like that actually so let's just turn that on because we make a restro agent we turn it off but you can check it out for yourself once you set it up and the speed up would also just keep it one which means it's not too slow it's not too fast The Voice will be in a very adequate way and in a very very adequate speed okay perfect so then we are heading into functions which is the more interesting part because what we need is we need to create a custom function that allows our assistant to schedule me or Reserve tables so what we are going to do is we first are prompted to add a function name in the description so for the function name we are going to use a function that sounds like for sounds like the purpose that we would like to have for this function so we just call it Reserve table for example and then for the description we say we say reserves a table for a given date and time and number of uh this say a number of guests for example okay perfect so then we can also add some properties which is what we definitely need so the first property we are going to call the let's say the time let's actually call it date and time so we're going to describe that or let's just call it date time I like to write stuff together and we're going to call this the date and time of the visit we keep this as a string we can also basically add more properties apparently here I cannot so this only allows me to add one property which is very interesting so which means we need to find an alternative way of adding more properties which is something that we can do as well in a bit of a later step because anyways we are creating now an a static assistant just for the sake of because it's easier for you to see for me easier to explain and we can get access to the uh to the transient based assistant later on anyways and I'm going to show you how obviously so for now we just keep it at the day time what is missing here is the number of attendees or the number of guests we would like to have as well as if there are any special circumstances so then for the survey URL we are going to keep this one empty for now because we're going to use make.com so they have a pre-created app for that that you can use so you can follow the link and you can sign up for the app and use that app I'm not going to do that I'm going to use the standard make web hooks CU they work just as fine and you don't need to take any special app for that and in my opinion it's just the easiest way of integrating it because you can use the same structure for mostly any kind of other apps you're working with so for that case uh let's just set it to something interesting des.com SL endpoint so it is literally just a demo endpoint for now that we have added something to it then we would also like to enable an end call function which basically means that if the assistance is fit for ending the call it can end the call by itself so it's not just keeping up until the user actually or potentially ends the call dial keypad we don't need because this is not an outbound agent this is specifically interesting in case your assistant should be able to dial numbers on a keypad so in case you have an outbound call to a predefined menu where the assistant can interact with a menu B with with numbers it can do that as well which is awesome but obviously not necessary for our purpose so this is interesting cuz forwarding phone number basically means that you can add a phone number where your assistant can transfer the call to in case the assistant cannot help or the person would like to speak to an actual person or an actual human in that case you can provide your restor or phone number and the assistant can then decide okay it is necessary now to transfer that user to an actual human and then it can do that so if you would like to use that all right sorry guys for the little cut I had to reset all of those values in here cuz I clicked to a different Tab and then they were gone and they're gone now as well for some reason so let me just see if I can actually access it again otherwise we just ignore it for now so it seems like this is The Bu within Bim uh but no problem at all it should be saved so if it has been saved before as a draft or anyways what we did uh it should be there uh so we not going to worry about that now and if it's not there we're just going to rebuild it later inside of the transion based assistant so to come to the LA to the last step uh if you would like to use a forwarding phone number we can do this obviously as well so you can add your phone number and then you can add inside of your model you can instruct it to something that it says in case you cannot help the user please transfer the call to this phone number and then it would basically use that functionality of the forwarding phone number to transfer that user to an actual human the end call phrases are basically phrases the chatbot or the AI assistant can use to close or to ENT the call so you can set one here or you can also set multiple ones inside of the transion based assistant so that is completely up to you I'll just keep it at default for now because I don't think we need to change anything the advance settings usually you don't need to just adjust anything you can make it Hipp compliance which means like some stuff is not safed there are no locks or transcripts whatsoever I keep it off obviously because we would like to have that information the recording it is up to you I don't need it right now which basically just provides you a link in the end of report statement that you will get from viy and all of those settings you can basically leave the same for now maximum duration is interesting for you to understand because that basically just means that how long the call is going to wait or how long the call is ma is can last maximum so if you set it to I don't know uh it usually I usually like to set it to 10 minutes that's like a number that I used in in my previous examples from the previous chats that I built but this is completely up to you then you can also set a server URL which is what we need for our transient based assistance so we are basically instructing vapi to request the assistance from a third party source which in our case based on our example here is our logic platform make.com so instead of providing this static assistant like we have created here on B we would like to use a dynamic assistant that can be directly called through make.com so for now I'm leaving this empty because we would like to just test it but uh I I will set this up with you once we actually want to make it dynamic because statically we can test it for now and just see if it works so you also have a voicemail message so we can obviously adjust that as well you reached Lisas uh you reached let's say healthy reps voicemail perfect so we can basically also add a voicemail message in our case also doesn't matter actually because we not going to do any outbound calls so voicemail message is usually for when you have an outbound call and whoever is basically not answering at the end and there's a a voicemail coming up the AI or the assistant can basically just say the sentence on your behalf basically you can also set an end call message just like we had it in the in the previous step so I also just set it here to healthy rep I think we called it healthy reps right or we called it healthy rep call it properly healthy rep I'm going to publish that thing again and we are good to go so now we should already have our model ready and the assistant should be ready in like the very basic format so if I'm now going to listen to it which I can do here we should be able to actually talk to the assistant so let's do that all right so I had to stop the call quickly CU I changed the voice from Andrew to Kim because obviously we have a female name so we would need to have a female voice that's what I just changed in inside the voice settings I'm just going to head back to the model and let's just talk with Lisa now hello this is Lisa from healthy rap who am I talking to hi Lisa nice to meet you here is Frederick nice to meet you too Frederick how can I assist you today I'd like to book a table for three people tomorrow at 3 p.m. gotcha Frederick I've got that down will this be for a special occasion no not at all perfect so as you can see it works the AI is the assistant is answering properly even though the voice is not the best one um in my opinion you can choose one that suits yourself better for that purpose of the video it is definitely sufficient so we're just going to keep it and we're just going to continue with this with this voice so the next step in this whole tutorial is going to be configuring the actual transion based assistant so we can actually extend it and we can use any kind of custom features like scheduling the meetings and connect them into make so if we're heading back to our AI phone call infrastructure and let me just see where we are exactly so now the part is that we would like to use the transient based assistant and fetch the assistant from make.com so we would like vapi to basically request a transient based like an assistant that is tempor temporarily created but from make.com the difference or why I'm doing this is because if you can guess it right now it is a static but right so it would not know anything it would be static everything that is written in here is whatever the chatbot is prompted or um meant to do so there's not much customization possible so how am I going to add in the name right if I would say hello Ben if I would like to address you to Ben it would be calling everyone Ben right so we would like to have a dynamic way of accessing information and this is what we are going to do using transient based assistant information so if you would like to learn more about it you can go to the VAP documentation you can scroll down here to the server URL and within here you can scroll down a bit and you see retrieving assistant so this is basically everything we can look into I already know how it works so what I'm going to do is I use a different tool which is also free so you can use it yourself it's called Postman which basically allows you to test apis and in my case I'm going to use that one to actually get the assistant that we statically created so I don't need to recreate it completely from scratch in a transient based way which again just saves me time so to do that what I'm going to do is I'll head over to the API reference of Vy I go to get assistant I literally just copy this URL right here paste this one into a new request that I just opened here so once you have set up an account on Postman you will be it will look something like this and you can literally just create a new request here it should be a get request as it is defined here so what we going to do now is we just paste the URL and we have to set a dynamic ID of our assistant which is this one from Lisa so I can literally just copy it go back into here and paste the ID so it will not work now if I click send you will see that it's not authorized because I haven't provided any kind of authentication so it should not work if everything is going well okay so apparently there was an issue with my with my browser so I just opened that in an incognito tab and I hope it works now so I just recreated everything we did now within Postman I literally just added leisa's ID here and I'm going to click Send and it should throw an arrow now because it misses the authorization header so which means we basically have to authenticate our account of vapi directly inside of Postman so to do that I go and head over here I click on authorization and within here I should be able to select a we're going to use the API key down here we would like to add it to the header which is great so now we are going to head over to the documentation and you can see within here okay this one basically asked for a for a Barr token apparently which is should not should be nothing else than the actual API key so in that case what I'm going to do is I'll head over to my V account I head over to account and here at the account I'm going to copy the API key and the API key is basically what I'm going to put into here so like I've seen in the documentation it's asking for a bar token and not an API key anymore so what I'm going to do is I literally use the the barer token setup and I just paste the API key right within here and now I click Send and as you can see it works so I'm getting back the whole Json structured assistant that we created inside of buy so this basically allows you to or allows us to still create the assistant visually directly within here but then we can access it inside of post man S A Json construct which is exactly what we would like to have so I'm going to copy this whole part cuz this is the assistant that we would like to use and I can see as well that it removed all of the functions so basically the stuff we created with the functions earlier is not there anymore so in that case we need to create the functions ourselves and I'm going to do this with you visually right now so for you if you don't want to do that obviously head into my resource up you will get the template there as well so you can just literally copy that whole thing so what we're going to do is I head over to a tool called Json editor online and I'm going to paste this whole block into here here so now we can literally just adjust this Json visually and it's a little bit easier for us to Ed it so I don't want to create the whole structure again so what I'm going to do is I go to create assistant because I know it has some predefined Fields here and it also has some predefined function which looks like this so function goes until here and it is inside it is inside of the model yeah correct so I literally just go and copy this whole part and I'm going to paste this part in the position of the functions which should look something like this perfect so I intend it properly and now we can again give it a name so we are going to call this thing a reserve table and as a description we are going to add reserves a table for a given number of guests at a specific date and time that's exactly what we want we want to set async to false because it means otherwise that the function or the tool is executed asynchronously so it's not going to get a response for the chat which is not what we want as we can use this as a feature to actually tell if the table has been reserved properly or if everything has been busy in the first place so make sure to set async to false and now we can set up the parameters and I can see that this is an a bit of a different way cuz they just oh no okay perfect they defined it as as objects and properties okay so let me just quickly look into the documentation under I think inside of their Swagger documentation I should see everything I remember they had a Swagger documentation somewhere let's just search for Swagger it's basically a different kind of documentation that is more accurate and more actively maintained oh it's here so I'm just literally going to open this one CU it shows me the whole structure of puy this is basically how I would start debugging and understanding things so if I'm looking into the whole setup let's say we are going to open AI function this is what we want parameters So within parameters we have properties and properties contain a Json schema okay it contains a lot of things I see items description and type is string number inin okay so this is basically the way how they Define it it's not the easiest to read but you can use that as as an example to to structure that stuff so in my case we just going to use a couple of fields we're going to use a descriptive field let me see item description yeah this still looks a little bit complic let me see maybe I'll find an easier example so I don't need to try to debug and figure out this way let's just go to create assistant and we can see if we there's actually a function call in here that is properly defined there is one which is massive with more properties than we actually need but we can we can just call it in the way okay so they have a additional Pro one type string and they have a description okay so what I'm going to do is I will literally just copy this part I head to my Json editor I going to here so we have the first property and I'm going to call this date and time and we are adding into this a another object with the type string and we also going to add a description this is basically what I read from the documentation within the Swagger UI so you have the type string we have a description here just to describe what kind of information this par parameter has so we are going to set this to the date and time of the of the table reserv so this is our very first property then we would like to have another property so I'm just going to copy this set a comma and paste it again now we are going to name this uh guest number we set this to integer so I think integer is also a possible value here I think at least from what I've seen here items so integer is another value perfect so we call it integer and we say the number of guests because we would like to have the amount of guests right and now we can add another one which we can imagine it's going to be special requests or let's let's call it special occasion I think this is the way we call it okay we're going to set this again to string and we call it any special occasion if if given okay and as required it basically defines a object with all of those values that are required in our case special occasion isn't required it can be said but date and time is definitely required and we would also have the number of guests cuz obviously those are important okay so with that left with that done we have only the server URL and server secret left which are basically the values we are going to use to actually which VY then is going to use to fetch that information fetch the the tool calling information from make.com later on for now we are not going to build this one I'm going to build this one in a bit because I would like I just would like to show you how that works and how you can set it up so the rest should be okay recording enabled false so this is basically everything we defined inside of the static puppy setup so for the transcript hang function this is up to you the client messages don't really matter for us right now so I'll just leave them just for the sake but you can basically remove them because you have no like client faced SDK for using that information on the website so you can just leave that server messages are more important cuz the end of call report is basically so this part basically instructs vapi to send certain things to that URL that you're going to Define so wherever you would like to send this transion based assistant to you definitely would like to have a end of call report you don't want the status update we don't need this the Hang we can leave inside as well I basically don't need it so for now I'm just going to remove it so we only have the end of call rebot and function call and as you can see down here you also have a talk to you soon Etc so basically a couple of predefined messages for the end call phrases so this is like a very basic conf configuration so with that out of the way the Json is okay it is correct if it would be broken you would see a message like this and you would be able to fix it so this Json editor is Free by the way you can just go on the website and adjust this Json if you would like I'm just going to copy that part now and I head into make.com because what we're going to do now is we set up the make.com scenario so that B can fetch our assistant dynamically so if you haven't done that already create a make.com account in the region that suits you the best so if you're from the US you would have probably like a US server here I have a European one so all you're going to do is you head over to scenarios you click on create a new scenario which then initiates basically a pre a workflow an empty workflow that you can now start creating so I'm going to call this VAP get assistant so and within here all we are going to do is we add a web hook because and the custom web hook action because we are going to use this to actually retrieve information or to to give VY the URL that VY can send that information to so we can retrieve it right within here so I'm going to click here and I say vapy at get assistant so we actually create an endpoint that looks like this so this is literally just a URL that we're going to use in a second and all I would like to do now for actually sending the information to V I'm going to add another web hook web hook action in that case so this is the trigger everything else that comes after are the actions in case you don't know I by the way released a massive tutorial on make.com as well so simply check it out on my account it's worth it if you don't know exactly how make Works Etc okay we're going to add the webook response and now we are literally just going to paste this whole script we copied inside of the body and since it's ajacent we also need to Define that we would like this content to be returned as ajason so I activate the advanced settings I click but on custom headens and add item and within the key I add content-type and for the value I add application SL Json so I click okay and now we basically have already set up our functionality for make.com to create to create an assistant on VAP when V requested so I'm going to click here on scheduling so that it's active I'm going to save this whole thing I don't need to test it right now cuz I have no Dynamic variables but we will see that in a second and what I'm going to do now is I copy this address to the clipboard I click okay and I literally go now back into vapi go to account and within here you will see Server URL you're going to paste this URL right within here so now you can set a secret I'm just going to set it to 1 2 3 4 5 for Simplicity reasons because this is the URL that V will call in case you have a phone number connected somewhere and you would like and this phone number has no assistant connected then this server URL is used by vapy to fetch an assistant in case there is some so with that setup we should now be basically ready to actually test the thing and now since we have moved the static assistant out of vapi to a dynamic assistant that comes from within make based on the structure we created here so now make.com will basically be responsible for uh for returning the assistant details to vapy and not vapy does it statically anymore we are able to actually purchase a phone number so I'm just going to do that here so all I I do is I basically go to buy number I just take the default area code I click on buy and I just buy a number so it costs me like $2 if you have your very own wheo account you can use that number I always prefer that for the sake of this video I'm just going to use a predefined number so in that case I have actually hidden it so we can actually show that yeah now you can see the number as well so this is the number we are going to use and where I'm basically making the calls to you're going to see it anyways and it's going to be deleted after this video so good luck to trying and as you see here we can basically connect an assistant which is not what we would like to do we don't want to use Lisa we just leave it like this because as you can see here in that message it says why will send an assistant request to your server URL that we defined here which is the make.com response URL so since we have done that the assistant is basically ready the phone number is set up so all I'm going to do now is I go into into my make.com scenario and I secure this whole thing a little bit more because when we send a request through now and you will see that um actually yeah let's try that assistant first if if it works so what I'm going to do is I click on run once and I'm literally going to use a random number to call this to call this assistant okay we're going to try this together let me just head over to viy and see this number okay the assistant just cut itself but we can see that we got a response here and we got a phone call and a phone number so the call is basically the call object where my whole stuff is inside and the phone number is basically the phone number is used by Wy so as you can see here it ends with 915 which is this one which is great so we can see that this stuff comes through we can also see that VY returned something it returned the body but apparently the call got cut which means something is wrong inside of our uh inside of our setup even though I'm not exactly sure why it was cut so I'm going to use a different number just to make sure we get the actual VY response because VY in that case should already be able to fetch the information from the assistant so let me just try to set this whole thing up with a different number or call with a number I'm going to go back into here I click on run once and now I'm just going to call this number again fet okay so it said couldn't fetch assistant and I just realized why because we didn't wrap the assistant inside of the assistant definition that is actually required from within buy and you can see that here when you go to docs and you head to the server URL if we scroll back to retrieving assistant you see that we need to wrap the assistant inside of an assistant key inside of the Json that we return so to do that what I'm going to do is I'll copy that whole Json within here I open two new curly brackets press enter at assistant uh double points and now I'll paste this whole thing and this is literally what I'm copy and I going to paste inside of the web hooks payload that we're going to send back done by the way again this thing is also available inside the resource Hub so you have access to it you don't need to create it from scratch okay I'm going to save that now and I'm going to give my assistant another try let's see how it sounds invalid assistant okay it still says invalid assistant so there's still something wrong and the easiest way of figuring that out is by creating an assistant statically on their site by using their API it's also something I didn't know in the beginning but I figured out through painful debugging and asking the support so I'm going to make it easy for you and show it to you so what we're going to do is we are clicking on the plus here we select post cuz we want to make a post request I'm quickly going to body I click on Raw I paste that whole assistant Json that we have copied earlier actually we need to adjust one more thing we need to remove the assistant wrapping again for creating the assistant here so all I do is I remove this part from the end so that we only have this assistant wrapping I remove it and I paste the actual Json I selected Json here that is great so all I'm going to do now is I'm heading to the API reference of Vy I go to create assistant this is the exact end point I'm going to copy here it asks for a bar token again okay perfect so I'm just going to paste this URL and I head back to my other tab where I had my API key from earlier which I should now be able to copy from here perfect so we head into post go to author authorization we are going to select the bar token and we paste the same API key in here as well if I try it now you will most likely see the issues you see property ID should not exist property or ID should not exist created AD should not exist okay so there are a couple of issues that basically VPP is complaining about so let me just see how we can fix that uh model function server URL must be a valid URL okay so this is because we haven't defined this inside of the function but property ID should not exist property orid should not exist now this means there are some values inside of orjon that should not be there which is probably this part so ID orc ID they should not exist so what we are going to do is we just remove them we also have created at updated at they should also not exist okay if you want that and function server URL should must be a valid URL so this is basically the server URL right within here so since we haven't created this yet it is something that I will adjust in a bit once we create it so for the purpose of Simplicity what I'm going to do is I will literally just copy a wapl that probably doesn't work so I'm just going to copy this one I'm going to replace it and I'm just going to add some random characters and I'm going to add my very secret token 1 2 3 4 5 so with that with that all the m right now we should basically have the complete setup ready I copy this part again paste it inside of my body click okay and give this whole thing another try so now we should hopefully have a assistant that actually talks to us hello this is Lisa from healthy rap who am I talking to awesome so that's it now we have our very first assistant and now we already connected make.com with VY so VY basically fetches that assistant from make.com which is exactly what we wanted so again to give you a picture of the flow the caller calls now the call goes to Wy because the phone number is there or througho as well then vapi asks make.com for the assistant make.com Returns the assistant to vapy and vapy initiates the call and everything else perfect so this way we now have a assistant that runs on make.com that is still static so we have no information in here and the next step is basically to create a kind of database where would like to store the information about the color so to do that what I'm going to do is I create a Google sheet which I have already done here I call this rest leads and now we would like to Define some information that we would like to collect from the user so in my case I would like to collect the first name the obviously the phone number cuz this is going to be our identifier I'd like also to collect if they actually have a reservation or actually for Simplicity reason for Simplicity reason let's just say we are only collecting first name and phone number because this is what we have for now you can later make more joints but just for the sake of this video to make it not even longer that it already is I'm just going to use first name and phone number so this is basically going to be our lead database for everyone who called our assistant and to now connect this we are going into our make.com scenario I quickly unlink this filter and what we are going to do now is we basically add a new module for Google Sheets and we are going to do a couple of things here first obviously we want to check whether or not there is already a phone number that ever called or like uh the if the call already exist in here and if so we get the first name Etc otherwise we basically don't want to do or we we want to create the user so what we're going to do is we add a new module go to Google Sheets and we are searching for search rows which we can take the simple one cuz it's sufficient then I call this thing restro leads so we take rest leads right here we wait until it loads we take the sheet one which is the the first sheet of our of our Google sheet and it has the bra the colum range a to c so we have the phone number in B so B is the one that we would like to check against so what we are going to do is I basically take the phone number field and I now check it with the phone number of the call so I'm going to hide this information I'm just going to select it from the drop down so that you cannot see the phone number I'm actually using okay so it's going to be this one I'm going to click on number and you can see it right here so we basically now selected the number that we would like to check which is the phone number that I called from and because I'm the caller right so I I selected this from the from the message from the call and the customer they have a field called number I press okay and and now we are going to add a flow control field and we are going to add an iterator or now actually a router I think router is the right way so we're going to add this here because now when there is a user with that number that we just added we would like to check if that number exist or not because if it doesn't exist we can create it and if it exists we can just fetch the name so I'm going to show you how we're going to do that within here I click on the plus I go to Google Sheets and this path will be basically made for users that don't exist yet so what we going to do is we click on ADD row I select again the spreadsheet ID in my case I can even map that from the previous one yep I go to spreadsheet ID for the sheet name I'm going to use the sheet name from here and the column range is basically the one that you would like to fetch the information from so in that case we're going to do it from A to Z so as you can see we can now set the values and obviously the first value we would like to set is the name so we somehow need to get the name right uh since we don't have the name yet we have nothing to map in that case because we need to we need to update the name so in that case we don't have a name so we simply leave it empty and for the phone number the phone number we definitely have inside of the call right here so we simply copy it again all right I just added the phone number and now we're going to click okay so in that case now we basically add the row to it so in case our lead didn't exist before we are able now to add it as well dynamically so to make sure sure this is not called all the time what we are going to do is we click on here we said if if it doesn't exist and for the condition we are going to use the total of numbers the total number of bundles should be less or equal to zero so which basically means there is no phone number found within the uh search Perfect Since we don't have anything to fetch here this is literally all we're going to do and now if we exactly the next step is basically to connect the router to the actual endpoint so that we can basically return the agent and we are going to do this by let me think about it exactly by actually deleting this module and we just add this module down here and this one is anyways called all the time because we want to return the assistant in any case and any circumstance now to make sure we actually return a more customized message like I mentioned it in the beginning we would like to customize the first message and the first message basically gets customized depending if we have a name or not of the user or the first name so I just scroll down here until I see the first message which is this one so now within here it just says hello what I'm going to do and this is a very basic example you can obviously format that much better by search replacing stuff but in my case I simply click a space and I'm going to add the first name so in case the first name is empty there will just be a empty empty space before the comma which is not that bad in my my case right now okay so now we basically have the name added in case a name is given but in case no name is given it basically will just continue the conversation like it normally would with the hey message so now we click okay and this is basically already the first way of making this thing Dynamic and we can already try this now which is what I'm going to do with you so to try it I saved it I'm going to click on run once and what I'm going to do now is I call the number again which again should answer by the way without a name because we don't have one could fetch assistant and obviously it didn't fetch the assistant for some reason that it says here missing value of required parameter sheet ID okay so the sheet ID apparently is empty but what I'm going to do is I literally just selected by path again what we did earlier so we're going to select the restro leads table from the sheets we are going to select the sheet one and it's literally the exact same setup so we have first name and the phone number press okay I'm going to save this whole thing again and I'm going to give it another try hello this is Lisa from healthy perfect she just said hello this is Lisa so we know exactly that there's no name given but now if I go to the to the spreadsheet you will see that there is an actual phone number and in my case there's two for some reason probably because I created it earlier so I'm just going to delete the number one and I'm going to hide this tab a little bit so you cannot read my number so I don't need to switch all the time in between but you see the phone number is basically added here now the first name is empty but since it's a a dynamic setup and we can set a name here I can literally Define a name myself which means later on if you have a CRM that you would like to integrate it with you can just update the names and the system will have access to so let's say my name is Frederick so I'll just add Frederick here and if I call the assistant now it should have the name Frederick or it should address me with the name Frederick let's give it a try hello this is Lisa from healthy rap who am I talking to Okay it didn't do it yet all right so I figured out the issue why it wasn't working and it's because because uh Google Sheets basically has a problem with plus inside of the phone number so if we would say we add plus 1 2 3 4 5 6 whatever you can see that it replaces the plus with an equal so this way basically it would never have worked so all I'm going to do now is I basically remove the plus from within the numbers which I have already done here so to do that directly within here what we need to do is we first need to head into our Google Sheets search field I'm going to copy and cut this one now I'm going to head into the operators and I need to find the replace field so and if you're inside the replace field you will see some some highlights over here so you can see that hello world is basically the main string hello is the one we are searching for and high is the one we replace it with so what I'm going to do is I add the whole field in here we are going to search for a plus and we are going to replace it by a empty string okay I'm going to copy this whole thing you press okay I'm going to head into the add AR row and I'm going to do the exact same thing right within here obviously later on you can also add it as a variable using the tools and then saving the tools so you only need to add this code once but this is more optimization stuff but for Simplicity reasons I'll just keep it like this and it should work now so I suggest we going to give it another try all right let me call the assistant again I'm going to click run and we're going to call the assistant so it should call me Frederick now hello Frederick this is Lisa from W awesome so now it has name recognition which means it can understand the name that we added inside of the first name field so that we always have a context that we can give to the user and that is dynamic so this is the exact reason why we basically take the assistant from B onto a different platform so that we can give it access to some more context so obviously if you integrate your CRM here you can pass any kind of information along whatever you would like but for this example the name should definitely give you a better picture so now we have the very first scenario ready which means we are going to open the scenarios in a new tab and now we are going to create the function for scheduling the table so to do it all I'm going to do is I basically create a new scenario let's call it Reserve table and we're going to add again a web hook with a custom web hook now we are creating another web hook URL we call this one Reserve table and I click save I copy this URL and what I'm going to do now is this URL is basically the one that we need to have inside of the assistant that is dynamically created so I head back into the scenario we created before for getting the assistant and within here I scroll down until I see the server URL field which is this one and I'm going to replace This Server URL part and I keep the secret at 1 2 3 4 5 for Simplicity reasons so again what I mentioned earlier for securing this part you can also basically set up a filter here and then check against a a specific value that you can basically set along while while testing this thing you can also return I think more values like the headers if I'm not completely mistaken but yeah it makes basically sense to check if it's actually an assistant and if that assistant has a special name whatsoever so you can set up some filter to protect this a little bit better exactly so now we have done that we have connected the URL to the scenario so which means that whenever we B whenever our assistant basically wants to schedule or reserve a table we should be able to send a request to this new URL that we created for inside this new scenario so to do that what I'm going to do is I literally just run this whole thing and I basically try to use my assistant to schedule a meeting so we have we have saved this part there's the URL inside just to make sure I'm going to check again yep it is so now I'm going to run this part and now whenever my assistant basically schedules a reserves a table we can run it through the schedule uh through this scenario and actually check if it works so let's give this one a try hello Frederick this is Lisa from hethy rap who am I talking to hi uh I'm still fr but I would like to reserve a table tomorrow at 300 p.m. for four people can you help me with this gotcha Frederick I can definitely help with that is there a special occasion you're celebrating or is it just a casual get together uh it's a it's a birthday celebration all righty a birthday celebration it is I've got the date and time down just need the birthday person person's name for a little surprise what's their name uh I will give you the name once I'm there you can just uh reserve the table for me please thank you this the table is all set for you and your guests tomorrow at 300 p.m. when you arrive thank you just let us know the awesome so we can see that we got a request back which means the assistant called this action for reserving a table now after looking into it we can see the message and we can see the function call along with the call and the phone pH number phone number is obviously the phone number of the call that we uh the phone number we call to where the assistant runs on and the call is basically my phone number details but what's interesting for us is the function call and as you can see here it called Reserve table and inside the parameters we can see that it set the 17th of okay it set a different time because we didn't give him an actual time this is another thing I'm going to show you in a second so it set a different time because we didn't give him a time but it got the number of guests correctly and it got the special occasion correctly which is uh my birthday celebration so this is awesome it worked so we have all of the information here what we would like to do now is we would like to make it a bit more Dynamic and actually tell him a date or the current date so we can actually do this by using some of the predefine make formats so what I'm going to do is I literally just head into make into the conversation I heard earlier and I'm just going to ask it because I don't know exactly the syntax I say please create a make.com Content syntax that can give the current date and time so if if I get what I would like to have it should basically also create an example for me that I can just copy if it doesn't I still have the chance to go back to the make.com documentation and check it out there let's see if it works yeah here's a simple example uh that's actually not what I'm looking for so I'm just going to tell him that's not what I'm looking for looking for the D damic tag syntax that starts with two curly brackets for example date and time so let's see if it gives me something like that uh literally oh yeah here perfect it says format date time nice so it gave me even the time zone so I can specify the time zone too which is great you know if I have more different kind of customers than they want to use it from different time zones it's something you can Implement I'm not going to do that I'm just going to keep it simple for now so I'm going to use this part and what we're going to do now is we are literally just going to head into the get assistant we click on here and within the assistant we are going to check where it fits well so let's say we close on Mondays we can say the current time is and then we just going to add the dynamic tag apparently something went wrong from what I se or it pasted it at the very beginning okay that's not what we want so I'm just going to cancel that going to open it again and and I'm going to paste it here the current time current let's call it date and time is and then this now and the basically paste the time perfect so if we save this now the assistant also knows the exact time that is right in this moment whenever the call is started so the assistant has more context and we can actually schedule meeting on a given time so now since we have the information here it basically just comes down to whatever service you would like to integrate to give you an example I will just quickly use um Google Calendar to show you an example so if I would like to make it really fancy you can check also for the calendar schedule so if you have a CRM that you use you can you can check uh the get free busy information which means you can just feed in a time and you can Val validate this time as well by uh by using AI or whatever so you can integrate with open Ai and you can check a minimum time and a maximum time depending on the time that comes through here and then you can check if if it's busy so and if it is busy you can basically just return the information that you can currently not schedule a meeting cuz you are busy so since I don't want to set up the whole integration with Google Calender right now what I'm going to do is I literally just return a static response that we can use to demonstrate this whole feature so if you would like to integrate your CRM all you would do is you would add it right in between and return whatever kind of features you would like so to return a static response we are going to head to to the VAP documentation and you go back to the where we have it server URL and within here you can see that you can return a couple of things when you have a function call which is right up here you can see that you can return a result in a Json format or you can return a result with a Json string inside of the Json format so in case you would like to return more information let's for example say there's no available time whenever I want to schedule a table at this point so what I'm going to do is me just quickly go to the Json editor so we can literally just edit a Json for test purposes so what was it I think it was result so we're going to call this thing result and we're just going to say sorry but there is no available uh time slot for a table at the preferred time and if you have a CRM you can also integrate other things like um alternative times here are some Alternatives and then we can say something like whatever time it basically is that is available let's say same day at 9:00 p.m. so this result this response is basically what we are now statically returning to uh vapi based on the function call so in case we are calling the assistant now the assistant will basically just tell us yeah there's no space available I can unfortunately not schedule that or book that table for you because there's nothing available so just going to set this again to the content type application Json I'm going to save this and I'm going to run this whole thing again so to just make it a bit more interesting I'm going to change the name as well to Ben for for example so you see that it's actually Dynamic and I was not playing around with this earlier okay let's go into here press this name hello Ben this is Lisa from healthy rap who am I talking to hey it's still Ben uh can I please reserve a table for tomorrow at 5:00 p.m. buter Evan how many guests will be joining you it's going to be three guests and there is no special occasion give me it looks like we're fully booked at 5:00 p.m. tomorrow however we do have availability at 900 p.m on the same day awesome so as you can see now we basically can get availability into it as well so again just to emphasize it in case you want to make it really Dynamic you connect it to your CRM or your calendars you use whatever whatever features you need right within here within the vapy reserve table action so you can actually connect it to your CRM and return what ever information you would like in case there is a time slot or you even book the time slot through it you can even return stuff like the reservation was successful see you on and then the time or whatever or just say the reservation was successful because then the assistant basically knows it and it will just emphasize it in the call so to give you a little bit more context what we can do as well let's say for example you did all of the logic for scheduling the reservation through your CRM whatsoever and you would like to add this information to the restor field you would basically be able able to set the exact thing up you would basically just copy this module I'm going to post the exact same module into this scenario you can do that I connect it to the endpoint actually I can do the exact same thing as well so in case there is already a a connection available let me just add this to a router we can we can also set the the scheduled time into this field so let's just say within here scheduled or let's call it reservation and then we basically are able to actually map the D reservation to this person if it already exists actually I was thinking now to check again and if we if the person exists but we basically don't even need this because what we can do is we can just search the person and it will probably exist cuz he started the call in the first place so we definitely have an entry of him right within here so the user will be available and all I'm going to do now is I select the Google sheet and I'm going to update a let's say update a cell or now let's actually update a row I think you can also do the same thing perfect so I'm going to select the same spreadsheet again row leads and I'm going to select the sheet one I'm going to quickly save this part because I don't have any Fields available yet or it basically ask for a row number okay so oh it already predefines those fields from here perfect so I simply select the row number and I can also fill in those fields right now so I can say the first name was here phone number was here and the reservation is C which is not defined in that request because we haven't run it yet but it is this one so now I can click okay and I can connect this whole thing basically back to that other action right here okay so now whenever we actually schedule something we will also get the reservation right within here so let's give this another try hello Ben this is Lisa from healthy rap who am I talking to hi Lisa I'd like to make a reservation tomorrow at 5:00 p.m. for three people and there's no special occasion can you do this just a sec buter Ben your table is reserved for tomorrow at 500 p.m. for three people looking forward to seeing you at healthy R thanks okay so what I did is I forgot to save it and I forgot to run it because we haven't scheduled it so what I'm going to do is I click on here and I say use existing data so it will basically run the scenario with a call that we just had and apparently there is an arrow returning it which is I don't think an issue for nowar is not executed okay that's fine but you can see it didn't update the reservation which means there's probably something wrong right within here so all I'm going to do is I literally just check what happened I can see the values so I need to hide them from you cuz there's my number inside yeah okay so I know the issue because we basically try to actually set the number in a field and it doesn't even exist so to do the same thing again uh we basically need to check the number from the messages so what I'm going to do is I simply click into the field reservation and I scroll down to the actual web hook where we actually sending along the the number and the the time as well which is this one so I can add the time and I can basically if I want to which I'm going to do now in this case in the same field uh say guests and I add the number of guests as well so we will literally have just a text field where all of this information is added I'm just going to save that part and keep it for now cuz I know it should work work for now so the last part we are going to look at is actually saving the report so the report we can I think save with the exact same URL that we are using for the assistant so if you remember inside of the assistant we can also Define a server URL I think on the assistant level not just for the for the function because here we basically Define it for the model but I think we can also Define the assistant URL on the assistant itself which is what I haven't done yet I think so let me just quickly check the B document mentation yep and as you can see here we can add a server URL and a server URL secret as well to the to the main assistant which then again allows us to just process the information from that assistant on a different URL however we can also I think use that exact same URL right here for doing that because we always get the the request here uh for the assistant and I think if there is a different request so let's say a uh end of call report we can also run through the same procedure so what I'm going to do is I'll just unlink this part for now I will add a router connected to that part and now connect the actually I don't think we need this one we can collect this part here let me just unlink this and and add it again okay perfect so that means that this part is executed first and now we're going to execute this part and we are now going to use that part to actually separate the request so in case we are getting a assistant request we want to run through this part so we say if assist assistant request and we're going to add if type equals assistant request then we're going to execute this part and now we can also check for end of call reports and there it depends what we would like to do with the end of call report so we basically even have access to the phone number so I'm thinking right now what we can even do is we can even use that exact phone number and basically add the transcript for this right within here but since we since I would like to have it separate because because a user can basically call multiple times we would like to have the transcripts in a separate table so let me just quickly go ahead and create another Google sheet okay so I created a new table what we are going to do now is we basically just re rename this whole thing to let's say uh call transcripts going to save this and now head back into our scenario to get the VAP assistant so now within here I'm going to set up a new Google sheet request and to to add a row and this is basically then connected to that new call transcript which is right here and the sheet name is going to be the first sheet obviously and now it depends on the values that we would like to add from the transcript so obviously there are a couple of values that we want to add depending on the transcript and that's what I'm going to set up now first I would like to set up a filter as well so we say if transcript request then we can check again against the type and I think with invy we can see that they have a transcript mentioned as well inside the server URL which should be end of call report so it's that part so we simply check against this part and of course report click okay so now it runs through an end of call report so what we're going to do now is we basically just take the report and save certain information from the call directly within it so obviously the first part we are going to test is if it actually adds the the information from that like the the reservation information to that Google sheet we created and secondly we're also going to check if it actually adds a row here so to do that we need to do two things we first obviously need to wait until the call starts then I can run the scenario and then I can execute it oh I just realized by the way I not sure if we actually added the information right within here I don't think we did so what I'm going to do is I'll I go into the web hook I copy this whole Json part I replace this part here and now we are basically adding the server URL to the assistant which we haven't done yet so like I mentioned earlier we have the server URL and server URL secret available on the assistant as well so I'll simply paste this at the very end and within here I'm now going to set again my very secret key of 1 2 3 4 5 and I'm going to add the exact same weapo URL from the VY get assistant going to be this one I'm going to add this into the server URL field okay this is good so now basically the assistant will be able to also receive the endof call reports directly to the URL it would normally have done it as well through the standard server URL I just like to have it everything inside the assistant because it's more objectoriented well let's just see if the dynamic texts are all there yes looks all good perfect so I'm just going to save that and save it here here and now we are going to head into this part and actually check if our setup works for um adding the reservation to our actual lead and we are also going to check if the transcript comes through so two things in one let's see Hello Ben this is Lisa from healthy rap who am I talking to hi Lisa can you please uh reserve a table for me tomorrow for 5:00 p.m. for three people there's no special occasion hi there sure I can help you with that what's your first name uh you have my first name already gotcha thanks Ben all righty I'll reserve a table for you tomorrow at 5:00 p.m. for three people we'll make sure everything is all set for you is there anything else I can assist you with um no that's it thank you did you reserve it hold on a sec all righty then your table is reserved for tomorrow at 5:00 p.m. thank you thank you so it didn't do it there so there was some kind of issue that is something that you can probably solve by just prompting it better because it didn't schedule it it just said it schedule it even though it didn't so this is obviously a mistake and that's something that should be solved with prompting or maybe even by just answering again it often does it as well so but I can see it run through it so now inside of our restor set setup you can see as well that it added the reservation here for three guests so we can see it and now if I head into here we can also see that it added a transcript basically it ran through and tried to add a transcript since we don't have any information here available yet so if we are going to look into this setup into the messages we can see the transcript that it basically s through we also have um the messages separately which is not what I want right now I literally just care about the transcript and the summary so what I'm going to do is I basically head into my call transcripts I want a phone number so I can so I know which phone number it actually came from I can say also the assistant phone number so I can add the assistant phone number as well we can also add a summary field and we can add the transcript field so and this is probably going to be one of my last tests so now we have all of those fields available if I now head back into this scenario and I'm going into my Google sheet I can basically Now set up those fields let me just quickly refresh them then we can also add the assistant phone number which is right here and then we can also add the summary from within the actual transcript which should be right within here summary and then we can add the transcript as well so like if you remember we had the issue of updating the actual phone number so what I'm going to do is I actually just copy this whole part from here and I replace the phone number right within here and I'm going to do the exact same thing with the assistant phone number the only thing thing is that I just need to replace the assistant phone number within here perfect okay so now what happens is that whenever we have a call this call is safe to the call transcripts and we should have it available directly within here and with that we should have a fully functional assistant that can schedule meetings for us depending on your CRM that you're going to add here and it can add the information to the rest leads and it can add the information to the call transcripts so it's a lot of stuff but let's see if it works uh in a final example so all I'm going to do is I'll just save that part again I see it is active and I'm literally just going to call my assistant again in a final call so let's give it a try hello Ben this is Lisa from healthy rap who am I talking to hey uh it's Ben can I please reserve a table for tomorrow for five people at 5:00 p.m. and uh it's my birthday it would be cool if you mention that as well give me a moment all righty then your table is all set for tomorrow at 5:00 p.m. for 5 people is there a special occasion you'd like us to note yeah like I mentioned my birthday this will just take a sec perfect we've got your birthday celebration all set up for tomorrow see you then Ben thank you I'm going to quit the call now and now in a second we should see our summary and transcript here as well if everything works works out well and BM here it is perfect so as you can see it added the summary properly it also added the whole transcript so we basically have everything available for this assistant directly in here so that worked out well so all I'm going to do now is I play a full example and I'm going to fix one small thing for you cuz probably you're going to ask for it which is the part of asking for the name again so in case there is no name available obviously then you would probably use a kind of different prompt um I'm just going to I'm just going to use a very simple example of doing that so obviously you can be very creative in the way of how you set up the prompt directly inside of make.com but a super simple example from my side would be to just adjust the whole thing right now based on whatever prompt you use so this one let's say we are going to use for if the name exists and I'm going to clone this whole thing if the name doesn't exist so then I'm going to set up a filter and I say name name exists and within the condition I just check if the first name exists okay because then we can also get rid of the first message that is saying who am I talking to which is defined here so we can say instead something like how can I assist you I'm going to save that part and within here I just say I I just going to leave this part and I'm going to set a filter that says name doesn't exist and we going to set up a condition based on the name and if it does not exist perfect so I'm going to save that and now lastly we are going to try a last example with this whole setup nothing set one call from the beginning and then a second call to see the reservation or schedule the reservation all right the scenarios are active the number is connected I'm just going to give this whole thing a call and we should see more information right within here during our call and then we should also see the call transcript within here so I'm just going to put both tabs close to each other so we can follow them along all right let's give this one a try hello this is Lisa from healthy rap who am I talking to hey Alex here I'd like to reserve a table for tomorrow at 300 p.m. Goa Alex how many people will be joining you for the reservation it's going to be three people all righty I have a table reserved for tomorrow at 300 p.m. for a party of three under the name Alex is there any special occasion I should note for the reservation uh yeah it's my birthday hold on a sec awesome Alex your table is all set for tomorrow at 300 p.m. to celebrate your birthday we look forward to having you at healthy rep awesome thank you very much I appreciate it I'll just cut the call now we should see the transcript here as well and that means we are basically at the end of our tutorial there's one more thing I would like to add before leaving we are currently or with we I mean my team and me we are currently building a awesome SAS tool in the AI voice space for restaurants and hotels so if you have watched it until this time or until this end you definitely have an interest for voice Ai and in case you are interested in that I'd be more than happy if you drop me a message and we get you on board as one of the first peoples to check out what we have to offer cuz it's going to be insanely powerful for hotels and restaurants to just boost their revenue to make their clients more happy to have someone available 24/7 and all of that out of the box so that's all I'm going to say for now thanks for watching I hope this video was helpful for you and if you have any further questions drop me a message down below drop me some comments whatever youd like and I'm going to see you in the next one thanks
Info
Channel: Jannis Moore | AI Automation
Views: 12,787
Rating: undefined out of 5
Keywords: voice ai tutorial, tutorial, ai voice agents, twilio voice call tutorial, ai voice clone tutorial, ai sales assistant, how to create ai chatbots, ai voice calls, how to create an ai caller, phone ai assistant, vapi tutorial, full tutorial, full ai caller tutorial, vapi ai tutorial, assistant vocal, ai assistants, assistant, ai agency, ai agents, Synthflow, make money with ai, ai voice clone, start an ai automation agency, liam ottley, bland ai, build an ai voice assistant
Id: RMOHpWAPan8
Channel Id: undefined
Length: 81min 34sec (4894 seconds)
Published: Sat May 04 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.