We selected the Dialogflow platform to create the chatbot because it's easy to design and integrate. For sending SMS, we chose Twilio. Twilio provides webhooks, which were used to get answers from users.
As the bridge between Dialogflow and Twilio, we decided to use the PHP framework Laravel. In order to communicate with Dialogflow and Twilio from Laravel, we used open-source SDKs. PostgreSQL was chosen as a database to store users' data. The functionality was expanded with the Javascript framework Vue.Js to build the front end for easy and convenient chatbot testing.
The REST API was implemented to give the ability for the client to start the dialog with users and get the result of the dialog; as well we used Swagger to generate API documentation. Amazon S3 is used as storage for the images from users' MMS. Amazon SQS used for incoming messages to reduce the server load. We used dashbot.io to track detailed statistics of the dialogs and analyze them for further bot flow optimization.
We also decided to implement the Small Talk to engage end-users in conversation. It instigates them to build interactions with the bot and improves the recall rates.
For application monitoring and errors tracking we chose Sentry. It helped us to diagnose, fix, and optimize the performance of the code.