With the bot builder, you can use many functions that are available out of the box. Learn more about using functions here. You can also use custom Javascript (JS) functions if you need something more specific that is not available as a default function. 



TABLE OF CONTENTS


Let's walk you through how this is done with the example of a simple JS function:

print: function (a, b, c) {        
console.log("print called: a:" + a + " b: " + b + " c: " +c);           
}

Configuration in the widget script

You'll first have to configure the JS code into the widget script. To get the bot widget script

  • Navigate to the Deploy menu > make sure that the self-service widget is selected > and copy the widget deployment script from the right.


  • Paste this code onto a script editor so that you can include your script inside this code


NOTEYou can write any function as a logic into this script.


  • Include your custom JS function after the getClientParams function is defined.


  • For this example, let's take the print function that we showed earlier and define it within our widget bot script. Below you can see the bot widget script generated, and we included (and highlighted) the JS code for the print function.



  • Once you define this function in the bot script, you can call it anywhere in the bot flow.


Configuration inside the bot builder

  • Click on Flows > Configure > API Libary > Add new button


  • Provide a (1) Name for the JS Function. This is just for your reference. 


  • In the (2) URL / JS function name field, enter the function's name. This should be the same name that you defined in the bot widget script. In our example, it is "print". Remember that the function name is case-sensitive.

  • Set the method type to (3) JS Function and the (4) Payload type as JSON.

  • Enter the argument values you need to pass in the (4) Payload content as JSON single line values. These argument values can also be dynamic. Use the + button to include dynamic values.
     
  • In the (6) Add the required response parameters field, you can pass your success and failure response parameters. The bot will pass the input to the script after making the function call. When the function executes, it will expect a response parameter. You can pass these response parameters from the script to the bot based on the action's result.



You can call the response value from here in other parts of the bot flow. For example, suppose you're setting up the customer input as a message or a question. In that case, you can insert content from APIs, or in this case, insert the result of the JS function (success or failure response parameter).


Configuring the dialogs


Now that the function has been defined, we can call the function from anywhere in the bot flow. To call the function, you'll need to set up an action in the dialog for the bot to trigger the function.


  • Navigate to the flow where you want the function to run > new Action > Trigger JS function > select the API you just configured.




NOTEKeep in mind that if you're using a client-side action to call the JS function, you'll have to get the user input as a text field. This is to denote that the function is returning a response.


Some use cases

  • If you have a phone number that your customer needs to call, for example, a toll-free phone number, you can have a button that says "call us", which your customer can tap or click. This can trigger the JS function, which in turn will populate the default phone dialler with your toll-free number. In this case, for Android devices, the WebView should have permission to access the dialler. The phone dialler permission should be allowed at the manifest file level.

  • If you've deployed the bot on your mobile app and want to take your customer to a specific page on your app, you can do so using a deep link in the app.

  • Suppose you don't have an API, but you want to communicate with your app, which has a connection with the server, even after the bot flow initializes. In that case, you can use custom JS functions to interact with the app and fetch information.

  • Any standard functions that can be written as a JS function (like math functions)