Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the easy-accordion-free domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the zoho-flow domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php on line 6114

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893

Warning: Cannot modify header information - headers already sent by (output started at /home/mother99/jacksonholdingcompany.com/wp-includes/functions.php:6114) in /home/mother99/jacksonholdingcompany.com/wp-includes/rest-api/class-wp-rest-server.php on line 1893
{"id":2831,"date":"2024-03-26T01:52:47","date_gmt":"2024-03-26T01:52:47","guid":{"rendered":"https:\/\/jacksonholdingcompany.com\/a-solution-engineers-journey-into-programmability-on-march-25-2024-at-700-pm\/"},"modified":"2024-03-26T01:52:47","modified_gmt":"2024-03-26T01:52:47","slug":"a-solution-engineers-journey-into-programmability-on-march-25-2024-at-700-pm","status":"publish","type":"post","link":"https:\/\/jacksonholdingcompany.com\/a-solution-engineers-journey-into-programmability-on-march-25-2024-at-700-pm\/","title":{"rendered":"A Solution Engineer\u2019s Journey into Programmability on March 25, 2024 at 7:00 pm"},"content":{"rendered":"

Hi there! I\u00b4m a Solutions Engineer working with Collaboration and Customer Experience solutions, and one thing I\u2019ve learned is \u201cone size does not fit all.\u201d To deliver the most impactful business outco\u2026 Read more on Cisco Blogs<\/a><\/p>\n

\u200b[[{“value”:”<\/p>\n

Hi there! I\u00b4m a Solutions Engineer working with Collaboration and Customer Experience solutions, and one thing I\u2019ve learned is \u201cone size does not fit all.\u201d To deliver the most impactful business outcomes, customers need digital solutions tailored to their unique needs. Thankfully we are surrounded by SaaS applications and powerful platforms that provide open APIs available to anyone with the skills to use them. In short, if you supply the motivation, the tools are there to embrace automation as the foundation for building custom use cases. This is how you can really differentiate in the marketplace, and bring value to our customers.<\/p>\n

My interest in leveraging automation to integrate applications and optimize workflows was the trigger that started my journey into network programmability. I knew I wanted to start by connecting with a community of like-minded people who could help me get started. That\u2019s when I found\u00a0Cisco DevNet<\/a>.<\/p>\n

Getting started with a DevNet Learning Track<\/strong><\/h2>\n

My first step was to learn the basics of APIs \u2013 how they work, what they are used for, how to test them, and how to integrate them into other applications. RESTful APIs are widely used in web development, allowing applications to interact with each other and exchange data in a standard and scalable manner. They provide a flexible and efficient way for different systems to communicate and integrate with each other.<\/p>\n

To get familiar with APIs I started practicing with Learning Labs available in the Cisco DevNet developer portal. Because I\u2019m a Solutions Engineer working with Collaboration solutions, I choose the Webex \u2013 Start Now \u2013 Learning Track<\/a>. Follow this link to access this learning track and many others that can get you started. This Learning Track guided me to install all the required applications in my PC to start working with APIs and coding. It also gave me the tools I needed to start doing my first tests with coding and APIs.<\/p>\n

Once I had some basics under my belt, my next step was to create a use case and start a \u201creal\u201d programmability project. I decided to integrate Webex with ChatGPT using the OpenAI APIs. The main building blocks to implement this project are:<\/p>\n

Webex Bot
\nOpenAI APIs
\nMiddleware that runs the bot logic<\/p>\n

After I learned how to create a Webex bot<\/a>, my next step was to get familiar with the OpenAI APIs. Anyone can create a free OpenAI account<\/a>. (At the time of writing this blog, you get a free credit of $5.00 to use, which is enough to do some experimentation with their APIs.)<\/p>\n

Getting the basics of Python<\/strong><\/h2>\n

Next up, I needed to create my bot logic. Talking with my mentor, Julio Gomez<\/a>, he shared with me a project that he did for a similar use case, and I was able to reuse his Phyton code. I had learned the basics of Phyton<\/a> and how it works. Thus, I was able to adapt the Phyton code to use with my Webex bot and the OpenAI API that I had identified as the most appropriate for developing my Q&A bot based in the ChatGPT user experience.<\/p>\n

To make it easier to adapt the code, I divided it into building blocks based on the different functions: receive a text message from the Webex Bot; process the message and send it to OpenAI APIs; receive the answer from the OpenAI; and finally send it back to the Webex Bot.<\/p>\n

I faced another challenge<\/strong><\/h2>\n

I was running the bot logic on my PC and I had to expose it to the internet. The Webex cloud platform requires your bot to be reachable from a publicly accessible endpoint. Using Webhooks, the Webex bot sends notifications as events to the endpoint that subscribed to the webwook, for every interaction between you and the bot.<\/p>\n

For that purpose, I created an inbound tunnel between my local PC and the internet so that the port your bot is listening on becomes publicly accessible. Ngrok<\/a> is a popular tool I used to create these tunnels. The Ngrok service creates a URL that can be used to access your application running in your local PC. This URL is then used to create a Webhook<\/a> for your Webex bot to send notifications when someone interacts with it.<\/p>\n

When I reached the point where I had a working application, I was ready to start my initial testing. I had to fine tune the code to obtain the desired outcome. In fact, it was as straight forward as changing a few parameters in the JSON payload, related to the OpenAI APIs. Here is the documentation of the OpenAI API<\/a> that I used:<\/p>\n

Finally, I was able to create a Q&A bot in Webex leveraging the LLM (Large Language Model) developed by OpenAI. The end users are then able to ask questions to ChatGPT from the Webex App, as if they were chatting in the native ChatGPT user interface.<\/p>\n

The diagram below is a high-level architecture of what I built. You can see my project in this\u00a0GitHub repository<\/a>.<\/p>\n\n

APIs have transformed the way we customize experiences and integrate applications. I am not a software developer, but I was able to achieve my goal, which was to build a Q&A Bot based on new technologies like ChatGPT. For me, working with APIs is like playing with Lego blocks. It\u2019s fun!<\/p>\n

My journey in programming continues<\/strong><\/h2>\n

Then another thought came to my mind \u2013 Would I be able to create the bot with very little code, or even no code? I put myself into another challenge, which was to use an orchestration platform that leverages a low code \/ no code framework to create workflows and automation using APIs.<\/p>\n

In fact, at Cisco we have our very own Low Code orchestration platform. It\u2019s called Webex Connect and is one of the most recognized Communications Platform as a Service (CPaaS) in the market.<\/p>\n

Webex Connect is a platform that empowers the creation of smart, proactive, and personalized interactions across digital channels such as WhatsApp, Apple Messages for Business, Google Business Messages, Facebook Messenger, Instagram, SMS, etc. It orchestrates customer journeys end-to-end by automating business processes.<\/p>\n

I opened the drawing canvas of the application called Flow Designer and started building my Bot logic. It was as simple as dragging and dropping boxes, connecting them with arrows, and following the process. Again, like playing with Legos.
\nUsing this platform is much simpler, because I didn\u2019t have to deal with programming languages and coding for my use case. I just need to master the applications I wanted to connect, and learn how to use their APIs.<\/p>\n

In a matter of a few hours I had my bot up and running. This time I integrated WhatsApp with ChatGPT. What took me a few days with Phyton was reduced to a few hours because I was dealing with APIs, webhooks, and parsing JSON payload data. Webex Connect (CPaaS) did its \u201cmagic\u201d and executed the code behind the scenes which simplified the whole project.<\/p>\n

Here is the final flow:<\/p>\n\n

Low code platforms like CPaaS can unlock the Art of Possible, with APIs to create delightful user experiences.<\/p>\n

I hope this was helpful. And perhaps even made you curious to start your own journey into programmability. If so, Cisco DevNet is a great place to start.<\/p>\n

Good luck!!<\/p>\n

Related resources<\/strong><\/h3>\n

Launch your DevNet learning journey and explore network programmability, developer fundamentals with video tutorials<\/a>.
\nGet to know Cisco technologies with
DevNet Learning Labs<\/a>.
\nExplore DevNet Professional Certifications.
View exam topics<\/a><\/p>\n