<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sampriti Mitra</title>
    <description>The latest articles on Forem by Sampriti Mitra (@sampritimitra).</description>
    <link>https://forem.com/sampritimitra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F671037%2Fc4a8624d-ee33-4524-bc05-c2188866f279.png</url>
      <title>Forem: Sampriti Mitra</title>
      <link>https://forem.com/sampritimitra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sampritimitra"/>
    <language>en</language>
    <item>
      <title>Docker and Kubernetes Made Relatable - IV</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Fri, 29 Oct 2021 19:25:46 +0000</pubDate>
      <link>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-iv-2m1p</link>
      <guid>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-iv-2m1p</guid>
      <description>&lt;h2&gt;
  
  
  How Do External Teams Talk to Each Other?
&lt;/h2&gt;

&lt;p&gt;Pods are ephemeral resources. Deployments can dynamically generate and destroy pods. Because pods are unstable, transient, and volatile, we can’t trust that the application will always be reachable via a pod’s IP.&lt;br&gt;
We’ll need a permanent address that will route requests to whatever pod is active at the time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Kubernetes services: The team SPOC that routes relevant external communication to devs
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;In Kubernetes, a service is an abstraction which defines a logical set of pods and a policy by which to access them. The set of pods targeted by a service is usually determined by a selector. Kubernetes services provide addresses through which associated pods can be accessed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Take a look at the service.yaml file below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;br&gt;
This specifies a service that targets the port 10000 of pods with the label &lt;code&gt;app:myapp&lt;/code&gt;.
&lt;h3&gt;
  
  
  Creating a Kubernetes Service
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The minikube tunnel command can be used to expose LoadBalancer services. To keep the LoadBalancer active, it must be run in a separate terminal window.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube tunnel 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;minikube tunnel runs as a process on the host and creates a network route to the cluster’s service CIDR using the cluster’s IP address as a gateway. The tunnel command gives any application on the host operating system immediate access to the external IP address.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get service myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should be able to see the external ip; earlier it would have been pending.&lt;br&gt;
Now you can use this ip to open the service in the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube service --url myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should be able to view this in your browser.&lt;br&gt;
&lt;code&gt;Welcome to myapp!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The section about services is incomplete without an analogy from the dev life. &lt;br&gt;
Imagine an external team is unsure or confused about how to use a feature developed by the dev team. One way to resolve the problem is to contact a known developer directly. Of course, that would work, but what in case the developer has moved to a different team and lost context? In this case, the team SPOC comes to the rescue to help route the query within the team.&lt;/p&gt;

&lt;p&gt;It’s Been a Long Article… and I Hope To Tell You More About It Next Time!&lt;/p&gt;

&lt;p&gt;With that, we come to the end of the series on K8s made relatable and the adventures of the fresher on the first day. However there is more to be learned, and more adventures to follow, so stay tuned!&lt;/p&gt;

&lt;p&gt;References&lt;br&gt;
&lt;a href="https://kubernetes.io/docs/concepts/services-networking/service/"&gt;Kubernetes Service&lt;/a&gt;&lt;br&gt;
&lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/"&gt;Kubernetes Deployment&lt;/a&gt;&lt;br&gt;
&lt;a href="https://kubernetes.io/docs/concepts/"&gt;Read more about Kubernetes components&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.docker.com/resources/what-container"&gt;Docker Containers&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>devjournal</category>
      <category>docker</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Docker and Kubernetes Made Relatable - III</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Fri, 29 Oct 2021 19:15:16 +0000</pubDate>
      <link>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-iii-2gf7</link>
      <guid>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-iii-2gf7</guid>
      <description>&lt;p&gt;Hi everyone!&lt;br&gt;
Welcome to the third part of this series, where we try to relate with kubernetes as a part of dev life.&lt;/p&gt;

&lt;p&gt;In the previous articles, we have discussed about containers &amp;amp; images and how to run containers on docker. We discussed about the need for Kubernetes. In this article, we will take a closer look at K8s and why it is so essential.&lt;/p&gt;
&lt;h2&gt;
  
  
  How Do We Guide All Developers To Work in Sync To Provide the Final Product?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Kubernetes: The engineering manager
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Kubernetes is an open source container management and deployment platform. It orchestrates virtual machine clusters and schedules containers to operate on those virtual machines depending on their available computational resources and the container’s resource needs. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They can be related with managers, who plan and coordinate developers to deliver projects and make sure they have all the resources required to do so.&lt;/p&gt;

&lt;p&gt;We can use K8s to deploy our services, roll out new releases without downtime, and scale (or descale) those services. It is portable, extensible, self-healing, and highly available.&lt;/p&gt;
&lt;h3&gt;
  
  
  What are pods?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A Kubernetes pod is a group of one or more containers, tied together for the purposes of administration and networking.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In our workspace analogy, pods can be a pair of senior and junior dev, working together on their related tasks. It can also be a dev who is ramped up on the system and is comfortable with working on the tasks alone.&lt;/p&gt;
&lt;h3&gt;
  
  
  Nodes and Clusters: Workstation that provides resources to the devs
&lt;/h3&gt;

&lt;p&gt;Consider the example of the employee workspace above. Every employee would require resources like a monitor, chair, desk, etc., to function properly. Every employee needs to be assigned these resources by the manager.&lt;br&gt;
A node can be thought of as the workstation that provides these resources and kubernetes, the manager that assigns these stations to the employees.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Kubernetes, a Node is a worker computer that can be either virtual or physical. A Node can have many pods, and Kubernetes handles pod scheduling among the cluster’s Nodes automatically. Node is the smallest unit for computing. To establish a cluster, nodes share their resources.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Getting Started With Kubectl and Minikube
&lt;/h2&gt;

&lt;p&gt;Kubectl is Kubernetes’ CLI used to interact with Kubernetes API to create and manage clusters. To install kubectl, run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  What is Minikube?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Minikube is a tool that lets you try out Kubernetes locally. It is a single node K8s cluster on your local machine for purpose of development or trying out K8s. The Minikube tool includes a set of built-in add-ons that can be enabled, disabled and opened in the local Kubernetes environment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For installing minikube and starting it on MacOS, run the following commands:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install minikube
minikube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Deploying Your Service to Kubernetes
&lt;/h3&gt;

&lt;p&gt;First, push your local docker image that you built into minikube cache by using the following command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube cache add myapp:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Deployment: The team goals and structure defined at the start of the year
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A deployment provides declarative updates for Pods and ReplicaSets.&lt;br&gt;
In a Deployment, we define a desired state, and the Deployment Controller gradually converts the current state to the desired state. Deployments may be used to build new ReplicaSets or to delete current Deployments and replace them with new Deployments.&lt;br&gt;
Take a look at the deployment file below:&lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;The above deployment file is like a declarative template for pods and replicasets. The above deployment named myapp in &lt;code&gt;{metadata.name}&lt;/code&gt;, creates a replicaset to bring up two pods of myapp. Now the &lt;code&gt;{spec.containers.image}&lt;/code&gt; gives the image to be pulled to run the container in the pod given by &lt;code&gt;{template.metadata.labels}&lt;/code&gt; &lt;code&gt;app:myapp&lt;/code&gt;. The deployment knows which pods to manage by the &lt;code&gt;{spec.selector.matchlabels}&lt;/code&gt; &lt;code&gt;app:myapp&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are ReplicaSets?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The goal of a ReplicaSet is to keep a consistent set of replica Pods operating at all times. As a result, it’s frequently used to ensure the availability of a certain number of identical Pods.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Common deployment strategies
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Recreate: all existing pods are terminated and new pods are then generated&lt;/li&gt;
&lt;li&gt;Rolling: pods are created in a rolling fashion, ramped up slowly until all new pods are running&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Creating a K8s deployment
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Checking the minikube cluster for running pods
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now try going into the pod and checking whether the app is running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl exec -it &amp;lt;pod-name&amp;gt; sh
apk update
apk add curl
curl localhost:10000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Checking the self-healing capacity of Kubernetes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete pod &amp;lt;pod-name&amp;gt;
kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We should be able to see two pods still running. Since we deleted a pod, the replicaset controller detected it and spun up another one to keep up the desired state of two pods.&lt;/p&gt;

&lt;p&gt;Thanks for reading on till the end of this article. In the next post, we will discuss about Kubernetes Services.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>devs</category>
      <category>kubernetes</category>
      <category>docker</category>
    </item>
    <item>
      <title>Docker and Kubernetes Made Relatable - II</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Fri, 29 Oct 2021 18:57:44 +0000</pubDate>
      <link>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-ii-5a05</link>
      <guid>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-ii-5a05</guid>
      <description>&lt;p&gt;Welcome back to the second part of this series. &lt;br&gt;
Last time we discussed about Containers and Images and how they can be related with a workspace kit and a blueprint, respectively. In this post, we will see Docker images in action!&lt;br&gt;
Now that we're here, let's get on with it!&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started With Docker Images and Containers
&lt;/h2&gt;

&lt;p&gt;Docker is a well-known runtime environment for creating and building applications within containers. It deploys containerized applications or software in different environments, from development to testing and production, using Docker images.&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating a sample Go application
&lt;/h3&gt;

&lt;p&gt;Let’s create a basic Go application that we will use to deploy on our minikube cluster.&lt;br&gt;
Create a directory my-app which contains the below main.go file. From the command line, run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go mod init 
go mod tidy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating a Dockerfile for the Go application
&lt;/h3&gt;

&lt;p&gt;To create the dockerfile for our application, we will refer to this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Building the docker image and running the container
&lt;/h3&gt;

&lt;p&gt;For building the docker image, run the following command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build --tag myapp .
docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should be able to see the newly created myapp image in the list.&lt;br&gt;
Now let us try running the image as a container. Since containers run in isolation, we need to expose the port inside our container to our host port.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To publish a port for our container, we’ll use the --publish flag (-p for short) on the docker run command. The format of the --publish command is [host_port]:[container_port]. So if we wanted to expose port 8080 inside the container to port 3000 outside the container, we would pass 3000:8080 to the --publish flag.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d -p 8080:10000 myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;localhost:8080&lt;/code&gt; in the terminal; it should say&lt;br&gt;
Welcome to myapp!&lt;br&gt;
Now that we have an idea about docker containers and the templates from which they are generated, i.e., images. Let’s have a look at container schedulers, which is what K8s is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do We Require Container Schedulers? Why K8s Over Containers/Docker?
&lt;/h2&gt;

&lt;p&gt;We saw how useful containers can be for running applications in an isolated way, on any environment. However, in production, hundreds to thousands of different containers may be required.&lt;br&gt;
Container runtime systems like Docker benefit from the usage of additional technologies to orchestrate or manage all of the containers in use.&lt;br&gt;
This orchestration is handled by Kubernetes.&lt;br&gt;
In the next part, we will explore what Kubernetes is and how it works.&lt;br&gt;
Thanks for reading!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>kubernetes</category>
      <category>devlive</category>
    </item>
    <item>
      <title>Docker and Kubernetes Made Relatable - I</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Tue, 26 Oct 2021 09:42:36 +0000</pubDate>
      <link>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-i-5c4</link>
      <guid>https://forem.com/sampritimitra/docker-and-kubernetes-made-relatable-i-5c4</guid>
      <description>&lt;p&gt;Hi everyone!&lt;br&gt;
This is for all the developers out there who haven’t had a chance to but wish to get a good idea of K(ubernete)(8)s, and/or want to get their hands dirty with it.&lt;br&gt;
As a fresher in the software industry, Kubernetes was foreign to me. One year into the industry, I had a rudimentary understanding of what it was, but I still hadn’t had much interaction with it. &lt;br&gt;
Having had more interaction with using Kubernetes, now I find it is remarkably comparable to my experience as a developer. I couldn’t find an engaging, relatable course anywhere, so I made one.&lt;/p&gt;

&lt;h2&gt;
  
  
  And the Journey Begins!
&lt;/h2&gt;

&lt;p&gt;This is a tale of an adventurous fresher on her first day at work. This is also an article on K8s, so bear with me.&lt;br&gt;
Applications: The developers who provide a predefined service to stakeholders&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An application program (app or application for short) is a computer program designed to carry out a specific task typically to be used by end users.&lt;br&gt;
In a way, they relate with devs who carry out tasks to develop software to meet the needs of an end user.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How Do We Make Every Developer Independent and Effective?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Containers: The portable workspace kit for developers
&lt;/h3&gt;

&lt;p&gt;Containers are a form of virtualization of operating systems. They are software executable units in which application code, together with its dependencies and configurations, is packed in such a manner that it may be run on any environment.&lt;br&gt;
They provide isolation of processes and optimise resource utilisation. They do not contain operating system images. As a result, they are lighter and more portable with much less overhead.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think of containers like the work machines/laptops that can enable employees to be independent and deliver services effectively. They are portable, enable the employee to work from home or office, and have all the resources the employee needs to complete the tasks. They are also isolated, so the employee is not influenced by what others run on their machines.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  It Starts With One Thing… the Onboarding Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Images: The onboarding guide/blueprint for using the workspace kit
&lt;/h3&gt;

&lt;p&gt;To understand how Kubernetes works, we must familiarise ourselves with images.&lt;br&gt;
These images are a set of executable commands to build a container. They are immutable files, which is a snapshot of a container, making them guides or templates for containers.&lt;br&gt;
Images are layers of other images, each of which is derived from the preceding layer but differs in some way. When you start an image, you’re actually running a container of it. There can be many running containers of the same image.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Images can be related to the guide or manual which one uses for getting the work machine started. Or, think of it as the blueprint for creating a work machine in the first place :).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the coming parts, we will explore how to get started with docker images and containers.&lt;br&gt;
Thanks for reading! &lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>docker</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>[REPOST]-Bring AI to slackbots with Dialogflow CX!</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Sat, 23 Oct 2021 11:50:08 +0000</pubDate>
      <link>https://forem.com/sampritimitra/repost-bring-ai-to-slackbots-with-dialogflow-cx-16ke</link>
      <guid>https://forem.com/sampritimitra/repost-bring-ai-to-slackbots-with-dialogflow-cx-16ke</guid>
      <description>&lt;p&gt;Hi Folks!&lt;br&gt;
I'm pretty excited to announce that &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk"&gt;Dialogflow CX - Slack SDK&lt;/a&gt; is accepting contributions this Hacktoberfest and has accepted the first contributing PR! &lt;br&gt;
We have 6 beginner friendly open issues that you can start working on today!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need this SDK?
&lt;/h2&gt;

&lt;p&gt;The motivation behind this SDK, was the slack community to be able to use dialogflow cx in the slack bots. &lt;br&gt;
Slack provides a multitude of rich features and APIs, including the bot kit UI, that gives life to conversations. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Dialogflow CX?
&lt;/h2&gt;

&lt;p&gt;Google's &lt;a href="https://cloud.google.com/dialogflow/cx/docs/basics"&gt;Dialogflow CX&lt;/a&gt; is a conversational AI development platform, suited for creating chat bot flows. The uniqueness and simplicity of this platform lies in defining conversation flows with the user through pages with intents and fulfillments.&lt;/p&gt;

&lt;h2&gt;
  
  
  So ultimately it all boils down to... what?
&lt;/h2&gt;

&lt;p&gt;Using Dialogflow CX you can get the intent of the conversation. Using dialogflow CX session context, you can maintain the flow of conversation between bot and user. And using this SDK you can have all of that on slack.&lt;/p&gt;

&lt;h2&gt;
  
  
  That sounds cool, but why do you need contributions?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;As mentioned above, both Dialogflow CX and Slack provide a plethora of features, the full extent of which can be used in the SDK to build a strong base which the slack community can make full use of!&lt;/li&gt;
&lt;li&gt;Also currently, the SDK supports App Engine or Cloud functions deployment which can be extended to use other cloud providers as well!&lt;/li&gt;
&lt;li&gt;You are also welcome to add any issues/extensions as you feel would help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Great, great, how do I start contributing? And will my contributions be accepted?
&lt;/h2&gt;

&lt;p&gt;You can start by checking out the &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk"&gt;SDK&lt;/a&gt; first. Do go through the &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk/blob/main/CONTRIBUTING.md"&gt;Contributing&lt;/a&gt; guideline as well.&lt;br&gt;
All contributions are welcomed and will be accepted provided they follow the contribution guildelines.&lt;/p&gt;

&lt;p&gt;So what are you waiting for? Contribute and earn your &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; Swag now!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>developers</category>
      <category>serverless</category>
    </item>
    <item>
      <title>This Hacktober, contribute to bringing Conversational AI - Dialogflow CX to Slack!</title>
      <dc:creator>Sampriti Mitra</dc:creator>
      <pubDate>Thu, 30 Sep 2021 14:27:09 +0000</pubDate>
      <link>https://forem.com/sampritimitra/this-hacktober-contribute-to-bringing-conversational-ai-dialogflow-cx-to-slack-2h0g</link>
      <guid>https://forem.com/sampritimitra/this-hacktober-contribute-to-bringing-conversational-ai-dialogflow-cx-to-slack-2h0g</guid>
      <description>&lt;p&gt;Hi Folks!&lt;br&gt;
I'm pretty excited to announce that &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk"&gt;Dialogflow CX - Slack SDK&lt;/a&gt; is accepting contributions this Hacktoberfest!&lt;/p&gt;

&lt;h2&gt;
  
  
  That's all well and good, but why do we need this SDK?
&lt;/h2&gt;

&lt;p&gt;The motivation behind this SDK, was the slack community to be able to use dialogflow cx in the slack bots. &lt;br&gt;
Slack provides a multitude of rich features and APIs, including the bot kit UI, that gives life to conversations. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Dialogflow CX?
&lt;/h2&gt;

&lt;p&gt;Google's &lt;a href="https://cloud.google.com/dialogflow/cx/docs/basics"&gt;Dialogflow CX&lt;/a&gt; is a conversational AI development platform, suited for creating chat bot flows. The uniqueness and simplicity of this platform lies in defining conversation flows with the user through pages with intents and fulfillments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need a conversational AI for slack bots?
&lt;/h2&gt;

&lt;p&gt;It's easy enough to create a &lt;a href="https://api.slack.com/apps?new_app=1"&gt;bot&lt;/a&gt; on Slack and it also provides events subscription to any defined particular webhook which could be running on a Lambda function say, and that function could respond to the events sent and publish an appropriate message back to slack.&lt;/p&gt;

&lt;p&gt;Now, the lambda function can further make use of Dialogflow CX to process the message event and get the intent of the conversation. Without an NLP, you'd probably be customising code in your lambda, checking for main keywords, to trigger a response webhook.&lt;/p&gt;

&lt;p&gt;Dialogflow CX abstracts away the NLP for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  So ultimately it all boils down to... what?
&lt;/h2&gt;

&lt;p&gt;Using Dialogflow CX you can get the intent of the conversation. Using dialogflow CX session context, you can maintain the flow of conversation between bot and user. And using this SDK you can have all of that on slack.&lt;/p&gt;

&lt;h2&gt;
  
  
  That sounds cool, but why do you need contributions?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;As mentioned above, both Dialogflow CX and Slack provide a plethora of features, the full extent of which can be used in the SDK to build a strong base which the slack community can make full use of!&lt;/li&gt;
&lt;li&gt;Also currently, the SDK supports App Engine or Cloud functions deployment which can be extended to use other cloud providers as well!&lt;/li&gt;
&lt;li&gt;You are also welcome to add any issues/extensions as you feel would help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Great, great, how do I start contributing? And will my contributions be accepted?
&lt;/h2&gt;

&lt;p&gt;You can start by checking out the &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk"&gt;SDK&lt;/a&gt; first. Do go through the &lt;a href="https://github.com/Sampriti-Mitra/dialogflow-slack-sdk/blob/main/CONTRIBUTING.md"&gt;Contributing&lt;/a&gt; guideline as well.&lt;br&gt;
All contributions are welcomed and will be accepted provided the follow the contribution guildelines.&lt;/p&gt;

&lt;p&gt;So what are you waiting for? Contribute and earn your &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; Swag now!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>googlecloud</category>
      <category>contributorswanted</category>
    </item>
  </channel>
</rss>
