This piece is the first in a series, authored by Microsoft evangelist Ritesh Modi, on building a chatbot for your business. Check back on Fridays for future installments.
There are a plethora of bot platforms available on the internet. In fact, every few days there is a new framework getting introduced and it is becoming increasing difficult for enterprises to decide and choose the framework that works best for them. To add to the complexity there are conversation bots, voice bots, messaging bots, intelligent bots, transactional bots and industry specific bots.
No matter the nature of bot, I would like to point out 16 features that every bot platform should have to make them enterprise-ready. It is important to note that no single provider might be able to provide all mentioned features. Enterprises should evaluate their current and future needs and go ahead with a platform that ensures most these features that fit their requirements and organization standards.
- Ubiquitous Connectivity: A bot is an automated agent in place of a human. It is important that this agent is reachable across connectivity options. Today, customers want ease of reaching out to bot in using their preferred medium. It could be through Facebook, Skype, Slack or a mix of them. Any enterprise ready bot should provide connectivity options for all major social media platforms, voice and messaging platform.
- Elastic and Scalable: A bot should scale out and in based on its demand dynamically. Bots are generally reachable through the internet and it is difficult to predict the number of users that could potentially connect to it. It is very important they scale up automatically with more instances during high demand and scale down when demand reduces. This would help enterprises to reduce capital expenditure on infrastructure that remains idle for a majority part of the year.
- Durability and Availability: This is a no-brainer. Bots should be highly available. Enterprise does not like unplanned downtime and Bots being customer facing is extremely important for them to be available at all time (24x7x365). If a bot framework does not guarantee more than five nines’ in terms of availability (99.999 percent), Enterprises should look for another bot framework.
- Security: The platform should provide appropriate infrastructure for providing security to bots. There should be provision to authenticate, authorize, maintain confidentiality and identity of users as well as bots themselves. Moreover, the platform should provide provisions to authenticate using the new age oAuth based authentication protocols.
- Industry Standards: The bot platform should use Industry standards rather than proprietary technology. JSON is becoming the de-facto standard for message payload exchange on REST endpoints. This allows cross-platform applications to invoke and consume bot services. Enterprises will benefit that they will not use legacy and proprietary technology and can be assured that their investments are future secure from a technology perspective.
- Monitoring, Logging and Auditing: Any bot platform should provide infrastructure to monitor functions at the operational level, generate alerts and inform teams to take corrective actions on them. The platform should provide rich logging mechanism to capture activities in bots and provide telemetry metrics to its owner. This should include availability, scalability and performance details among others. The logs should easily accessible in form of dashboards making audit exercise easy for administrators. Enterprise wants to optimize time, effort and money spend on keeping a bot operational. They should choose a bot platform that provides rich operational information through monitoring, logging and audit capabilities.
- DevOps Aware: Enterprises have caught up big time with DevOps. Large enterprises have already adopted the DevOps development practice; the small and medium enterprises are not behind. Every company wants to deploy technology in their landscape and ecosystem that can be easily automated from their continuous integration, deployment and delivery practices. The platform should not only provide automation endpoints and utilities but it should also be easy for develops to configure DevOps related practices for Bot development.
- Multi-Language Development: Bot platform should provide multiple language options for development of bots. Gone are the days when enterprises used a single popular language for all its development activities. Today, companies deploy languages known well to their developers. They also use heterogeneous languages in their landscape for higher productivity and affinity to type of application getting developed. It could be C#, Node.js, Python or a combination of any such technologies.
- Tools for Authoring, Testing and Deployment: Tools should make developing, testing and debugging easy for bot developer. Apart from providing quick start wizards, tools should increase developer productivity by providing an integrated environment for developing and debugging, executing unit and integration tests, ability to mock objects and help in automated deployments. The authoring editor should provide templates and scaffolding code to fast track development. It should also provide emulators that help in testing the bot without hosting on real environment.
- Stateful and Stateless Bots: Bot platform should provide the option to build both stateful as well as stateless bots. It should provide infrastructure through which state can be persisted across conversations and communication medium. This feature enables enterprises to build rich bots providing contextual and personalized experiences to its users.
- Ability to Initiate Conversations: It is not necessary that conversations would always be initiated by a user. It should also be possible for bots to pro-actively start conversations with its users.
- Long running activities: Bot platform should provide flexibility to run long running activities. After the long running activities complete its execution, bot platform should pick up execution and return to the user.
- Embed into Applications: Bot platform should also provide an option such that custom bots written using it can be embedded within an application, for example, a web application or an android application.
- Rich Interface: Bot platform should provide features through which rich interactions can be performed by users. Apart from test messaging, options for interacting with bot using buttons, options and images should be available. Users should be able to send and receive attachments, images and files, ability to choose an option from given options, and click a button to initiate actions. Bots should be able to provide options for sorting and paging information as well.
- Rich Integrations: Bot platform should be able to integrate with other services like cognitive services, analytics services and other transaction based services to provide rich and contextual services to customers. This will help enterprises to create solutions that are innovative and relevant to the industry.
- Massive parallelism: Bots platform should be capable of executing requests synchronously as well asynchronously. This eventually helps in writing patterns that can help in massive scalability of function by better and optimally utilizing the platform resources.