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.