Custom Python callbacks

Intents can have Python callbacks defined as their response. This page describes how to create custom callbacks and where to find reference material.

Custom Python code

When processing a conversation, Koji tries to extract an intent and deliver a response to a user. Intent in Kbot is the primary logical unit of a conversation. They can have Python callbacks defined as their response.

Python callbacks' code allows you to run any kind of interaction with users, send requests to external systems, and eventually end the intent with particular return code (completed, failed, etc.).

To add your custom code, use Editable files.

Creating and editing custom callbacks

Editable files allow you to modify code that can be used to leverage Koji functionalities. There is no access to source code of the software, but editable files help you modify some parts.

To view and modify editable files:

1. Go to Development.

2. In the Configuration section, click one of the Callbacks Code files.

3. Modify its content in the window and click Save.

Reference material

To view the reference material on callbacks, open the help page. It is available on your instance with the following address: https://<yourinstance>.konverso.ai/doc/Responding-with-callback-scripts_500302062.html. Just substitute <yourinstance> with the actual name of your host.

Sample

Creating a callback

Here is a sample demonstrating a function that asks a user whether they are satisfied with the support and saves the reply.

from common.Callback import Callback from utils import logger log = logger.getPackageLogger('callback') # Sample callback, can be used in an Intent with a response type "Callback" # and callback name is my2 # class HelloWorld(Callback): _isRealAction = True def DoAction(self, dialog, sentence): log.debug("Begin callback my2") response = dialog.UserAsk("Tell us how you are satisfied with out JSM support?") dialog.AddKeyword('callback_last_feedback', response.text) dialog.UserPost("Saved your last feedback:%s" %(response.text)) return ""

You can copy this code and paste it into one of Callbacks Code files. Make sure to click Save and Apply.

Setting an intent’s response

Once you have created a callback, you can use it as an intent’s response:

1. Go to Content > Intents.

2. Select an intent.

3. Navigate to the Response section.

4. In the Response type drop-down list, select Callback.

5. In the Callback name field, enter the name of your callback. For example, if your custom callback is stored in core/python/callback/my2.py, specify your callback as my2.

6. Click Save.

Testing a callback

Now, when Koji detects a given intent in the chat, it will invoke the defined callback as a response. To test your callback, go to chat and enter the #do <your-callback-name> command.

Debug

See the sample above: the log.debug("Begin callback my2") string helps you identify your callback performance in the Process log report. To view the debug information on callbacks usage:

1. Go to DevOps > Errors > Debug level to set the required debug level.

2. Select the level, process, and packages, and click Refresh.

3. Go to DevOps > Errors > Process log.

4. Set the required parameters and click Refresh.