Dialogflow on Rails - Agent import/export & regression testing

For those that are not familiar with Dialogflow, it’s a platform that makes it easy to design a conversational user interface that can be easily integrated with a variety of applications (e.g. chatbots 😉). Click here for more on Dialogflow.

So you’ve decided to integrate Dialogflow with your Ruby on Rails application. You’ve created a Dialogflow agent, your code is in place, and you’re ready to deploy your application. Before you do, it’s worth considering how active development will be managed.

Ongoing development requires allowing developers to make changes to the agent. Even small changes to the agent could potentially lead to some unexpected behavior which may initially go unnoticed, especially with more complex conversational flows. To mitigate the risk of errors or application downtime, let’s look at how integration/regression testing can be put in place for the agent itself.

Agent Upload/Download

The following rake task examples can be adapted and used to upload & download the agent as a zip file. We’ll need this to write the regression tests and it also makes it easy to record the state of the agent or reset the agent to a previous state during development.

The rake tasks above make use of the following utility class to assist with zip file manipulation. 

Regression Testing

Now that the agent push/pull rake tasks are in place, they can be used to write regression tests.

Here is an example of how they can be set up:

The example above assumes the existence of a directory of JSON files containing testing scenarios. Here is a basic example of how one of these files might look if we wanted to test the behavior of Dialogflow’s prebuilt smalltalk agent, and an example of a more complex scenario with parameter expectations:


Dialogflow makes it easy to add powerful conversational capabilities to your application. But, with something as complex as natural language processing, integration/regression testing can help you save time, avoid frustration, and make your Dialogflow integration as robust as possible. 

I hope the suggestions and examples in this article help you to simplify your development as much as they’ve helped me.

About us

Keypup is on a mission to help developers and tech leads work better with each others on development projects. Our platform automatically centralizes, prioritizes and assigns people and actions on issues and pull requests to optimize your development flow.

Don't get lost because you have to juggle twenty pull requests across five development projects and update multiple apps at the same time. We'll clean and organize that for you to ensure a smooth landing. Get started on Keypup today ! Oh and also...we're free! For real :-)


Code snippets hosted with ❤ by GitHub.

Banner imagine designed by Designed by zaie / Freepik

You may also like reading: