<?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>DEV Community: Ajay Galagali</title>
    <description>The latest articles on DEV Community by Ajay Galagali (@ajaygalagali).</description>
    <link>https://dev.to/ajaygalagali</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%2F652706%2F1d653a36-be6b-4111-9def-fe2f9145552a.png</url>
      <title>DEV Community: Ajay Galagali</title>
      <link>https://dev.to/ajaygalagali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ajaygalagali"/>
    <language>en</language>
    <item>
      <title>How to annoy your friends on WhatsApp?</title>
      <dc:creator>Ajay Galagali</dc:creator>
      <pubDate>Fri, 25 Jun 2021 08:05:15 +0000</pubDate>
      <link>https://dev.to/ajaygalagali/how-to-annoy-your-friends-on-whatsapp-4pm6</link>
      <guid>https://dev.to/ajaygalagali/how-to-annoy-your-friends-on-whatsapp-4pm6</guid>
      <description>&lt;p&gt;There are various ways to annoy your friends but being a programmer(); I should do it with my weapon known as CODE. 👨‍💻&lt;/p&gt;

&lt;p&gt;Let's dive into it. 😁&lt;/p&gt;

&lt;p&gt;We will be using &lt;code&gt;python&lt;/code&gt; as a programming language and &lt;code&gt;selenium&lt;/code&gt; to automate messaging. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Download Chromedriver
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://chromedriver.chromium.org/downloads"&gt;this&lt;/a&gt; link to download ChromeDriver and extract the zip file. &lt;br&gt;&lt;br&gt;
Note: Download according to the version of Chrome installed on your system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Install Selenium Package
&lt;/h3&gt;

&lt;p&gt;We need to install the &lt;strong&gt;selenium&lt;/strong&gt; python package.&lt;br&gt;&lt;br&gt;
Open the terminal and run the command &lt;code&gt;pip install selenium&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Learn more about Selenium &lt;a href="https://www.selenium.dev/"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Programming
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Time to code ();&lt;/em&gt; 😉&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a python file &lt;code&gt;filename.py&lt;/code&gt; in any code editor. (I am using &lt;a href="https://www.jetbrains.com/pycharm/download/"&gt;PyCharm&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Paste the following code (Read the comments to understand the code)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ajaygalagali.hashnode.dev/how-to-get-xpath-of-html-element"&gt;How to get XPath of HTML element?&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;selenium&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;webdriver&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;selenium.webdriver.common.by&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;By&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;selenium.webdriver.common.keys&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Keys&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;selenium.webdriver.support&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;expected_conditions&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;EC&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;selenium.webdriver.support.wait&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;

&lt;span class="c1"&gt;# About Selenium - https://www.selenium.dev/
&lt;/span&gt;
&lt;span class="c1"&gt;# Getting Chrome Driver
&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;webdriver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Chrome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s"&gt;"D:\Softwares\chromedriver_win32\chromedriver.exe"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#put path of chromedriver.exe
&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'https://web.whatsapp.com/'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Number of messages you want to spam
&lt;/span&gt;&lt;span class="n"&gt;MESSAGE_COUNT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;

&lt;span class="c1"&gt;# Sends Message
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Entering message in chat box
&lt;/span&gt;    &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;EC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;element_to_be_clickable&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;XPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'//*[@id="main"]/footer/div[1]/div[2]/div/div[2]'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="n"&gt;send_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Clicking SEND button
&lt;/span&gt;    &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;EC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;element_to_be_clickable&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;XPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'//*[@id="main"]/footer/div[1]/div[2]/div/div[2]'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="n"&gt;send_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;Keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RETURN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;flag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;flag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Enter Contact Name (Type &lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;exit&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt; to end the program) :"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#type exit to end program
&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"exit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;flag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# How to get XPath of HTML element? -
&lt;/span&gt;        &lt;span class="c1"&gt;# Learn at https://ajaygalagali.hashnode.dev/how-to-get-xpath-of-html-element
&lt;/span&gt;
        &lt;span class="c1"&gt;# To know more about XPATH visit - https://developer.mozilla.org/en-US/docs/Web/XPath
&lt;/span&gt;
        &lt;span class="c1"&gt;# Clicking on Search
&lt;/span&gt;        &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;EC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;element_to_be_clickable&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;XPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'//*[@id="side"]/div[1]/div/label/div/div[2]'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="n"&gt;click&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Entering contact name
&lt;/span&gt;        &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;EC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;element_to_be_clickable&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;XPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'//*[@id="side"]/div[1]/div/label/div/div[2]'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="n"&gt;send_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Opening chat of contact
&lt;/span&gt;        &lt;span class="n"&gt;WebDriverWait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;EC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;element_to_be_clickable&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;XPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'//*[@id="side"]/div[1]/div/label/div/div[2]'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="n"&gt;send_keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;Keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RETURN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Spamming messages
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MESSAGE_COUNT&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"These messages are sent by Python Program!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Learn here: https://ajaygalagali.hashnode.dev/"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See to it that package is imported successfully. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Sending messages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run the program&lt;/li&gt;
&lt;li&gt;WhatsApp Web will be opened in the new Chrome Browser window.&lt;/li&gt;
&lt;li&gt;Scan the QR code by your smartphone WhatsApp app to log into your account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AhIp5K_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441185510/Bln9t32MF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AhIp5K_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441185510/Bln9t32MF.png" alt="WhatsApp Web QR Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Enter the contact name you want to send messages to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y8RHLPuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441325458/lUSWALwvE.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y8RHLPuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441325458/lUSWALwvE.png" alt="Enter the contact name you want to send messages to"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selenium will search the contact, types the messages, and sends them automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XFukCsus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441393918/Jg1XHBoGZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XFukCsus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624441393918/Jg1XHBoGZ.png" alt="Output of the program"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Here, I sent 11 messages for demo purposes. You can send 1000s of messages too. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can change the variable &lt;code&gt;MESSAGE_COUNT&lt;/code&gt;  in the program to any number, that number of messages will be spammed to your friend. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  👨‍⚖️ Conclusion
&lt;/h3&gt;

&lt;p&gt;Are they gonna get annoyed by just 11 messages? No way! &lt;br&gt;&lt;br&gt;
Listen to my story! I programmed to send 10k messages to my close friend's group. Around 50 messages were sent into the group and admin &lt;strong&gt;kicked&lt;/strong&gt; me out of the group 😂. Admin with a brain! 👏. &lt;br&gt;
Well, title should be &lt;em&gt;How to get kicked out of WhatsApp group without being mean?&lt;/em&gt; 😁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FnuUHR6Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624442657092/PwMPkyGbSd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FnuUHR6Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624442657092/PwMPkyGbSd.jpeg" alt="removed from group"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;lol xD&lt;/p&gt;




&lt;h1&gt;
  
  
  🤝 Thank You
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep annoying friends 😉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;⚠ Check out original blog &lt;a href="https://ajaygalagali.hashnode.dev/how-to-annoy-your-friends-on-whatsapp"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>selenium</category>
      <category>chrome</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to get XPath of HTML element?</title>
      <dc:creator>Ajay Galagali</dc:creator>
      <pubDate>Fri, 25 Jun 2021 08:01:50 +0000</pubDate>
      <link>https://dev.to/ajaygalagali/how-to-get-xpath-of-html-element-3fbg</link>
      <guid>https://dev.to/ajaygalagali/how-to-get-xpath-of-html-element-3fbg</guid>
      <description>&lt;p&gt;Follow the below steps to get XPath of HTML element.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open browser, I am using Chrome&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Go to &lt;a href="https://www.google.com/"&gt;https://www.google.com/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Right-click on the element of which XPATH is needed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kSZFd2y3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624443884084/bzZJIvDgu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kSZFd2y3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624443884084/bzZJIvDgu.jpeg" alt="Right-click on the element"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Click on Inspect &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a_bKYVQo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624444173491/wfEaRn3MQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a_bKYVQo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624444173491/wfEaRn3MQ.png" alt="Click on Inspect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Right click on HTML tag (input tag) and follow till &lt;em&gt;Copy XPath&lt;/em&gt; and click on it. Voila! 🎉 XPath is copied to your clipboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N7tbdU3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624443920045/oiV3gaL1V.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N7tbdU3k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624443920045/oiV3gaL1V.png" alt="Right click on HTML tag (input tag) and follow till Copy XPath"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read more about XPath at &lt;a href="https://developer.mozilla.org/en-US/docs/Web/XPath"&gt;https://developer.mozilla.org/en-US/docs/Web/XPath&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you!
&lt;/h2&gt;

&lt;p&gt;⚠ Check out original blog &lt;a href="https://ajaygalagali.hashnode.dev/how-to-get-xpath-of-html-element"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>xpath</category>
      <category>html</category>
    </item>
    <item>
      <title>How to add images to README.md on GitHub?</title>
      <dc:creator>Ajay Galagali</dc:creator>
      <pubDate>Fri, 25 Jun 2021 07:57:12 +0000</pubDate>
      <link>https://dev.to/ajaygalagali/how-to-add-images-to-readme-md-on-github-3941</link>
      <guid>https://dev.to/ajaygalagali/how-to-add-images-to-readme-md-on-github-3941</guid>
      <description>&lt;p&gt;This is such a simple✔ thing, but I struggled a bit when I was a newbie to &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt;. I wanted to add screenshots of the project but was stuck😥 for a long time uploading images on markdown.&lt;/p&gt;

&lt;p&gt;There are multiple ways of adding images to the Gituhub Readme file, I am going to explain to you the easiest I feel. Let's get started 😄&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Open your README file in your Github Repository
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jAHJ2TmV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548220650/67PBMW6yi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jAHJ2TmV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548220650/67PBMW6yi.png" alt="Open Readme file.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  2. This is the image to be uploaded to README
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DStJd3qh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548483112/EzQdh-dYL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DStJd3qh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548483112/EzQdh-dYL.png" alt="Image to be uploaded.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  3. Drag and drop the image file on README editor
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yV_HzB9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548361713/Ilt_LriQY.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yV_HzB9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548361713/Ilt_LriQY.png" alt="Drag and drop.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  4. Image will be uploaded to the Github server
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JUCHNTif--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548626208/Xo1wOU4Rt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JUCHNTif--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548626208/Xo1wOU4Rt.jpeg" alt="Uploading to Github server_LI.jpg"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  5. Link to the uploaded image is generated by Github
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dkVXVo81--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548727034/U5H7k_4S81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dkVXVo81--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548727034/U5H7k_4S81.png" alt="Uploaded.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  6. Click on the preview
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0HbMx9AR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548827463/ZL1SVR7MH.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0HbMx9AR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624548827463/ZL1SVR7MH.jpeg" alt="Preview_LI.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🥂 Voila! &lt;/p&gt;

&lt;p&gt;If you are wondering 💭 "What is &lt;em&gt;WhatsBin&lt;/em&gt; ?", go check &lt;a href="https://ajaygalagali.hashnode.dev/how-to-paste-on-pastebin-using-whatsapp"&gt;this&lt;/a&gt; blog post ✔&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤝 Thank you &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;See you in the next blog&lt;/em&gt; 👋&lt;/p&gt;

&lt;p&gt;⚠ Check out original blog &lt;a href="https://ajaygalagali.hashnode.dev/how-to-add-images-to-readmemd-on-github"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>readme</category>
      <category>markdown</category>
      <category>documentation</category>
    </item>
    <item>
      <title>How to paste on PasteBin using WhatsApp?</title>
      <dc:creator>Ajay Galagali</dc:creator>
      <pubDate>Sun, 20 Jun 2021 16:04:08 +0000</pubDate>
      <link>https://dev.to/ajaygalagali/how-to-paste-on-pastebin-using-whatsapp-2ej7</link>
      <guid>https://dev.to/ajaygalagali/how-to-paste-on-pastebin-using-whatsapp-2ej7</guid>
      <description>&lt;h4&gt;
  
  
  How would you transfer the links/text sent by your friend on the WhatsApp Smartphone app to the desktop?
&lt;/h4&gt;

&lt;p&gt;The obvious answer is WhatsApp Web, right? Yes, but sometimes WhatsApp web just doesn't load and keeps retrying, especially if you are having a poor internet connection like me 😑. What would you do then? Mailing!? Not a good idea, since you have to copy text, then, open the mail app, paste it and send. Phew!😰 Too many clicks, right?&lt;/p&gt;

&lt;p&gt;What if you can just forward the text message to a WhatsApp contact and it automatically reflects on your &lt;a href="https://pastebin.com/"&gt;Pastebin&lt;/a&gt; from where you can access your content on the desktop. Isn't this way easier😁 than the previous method (mailing)?&lt;/p&gt;

&lt;p&gt;This is what we will &lt;strong&gt;learn to build&lt;/strong&gt; in this blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;




&lt;ul&gt;
&lt;li&gt;Overview&lt;/li&gt;
&lt;li&gt;Twilio WhatsApp Sandbox Setup&lt;/li&gt;
&lt;li&gt;
Pastebin Setup

&lt;ul&gt;
&lt;li&gt;Getting Developer API Key&lt;/li&gt;
&lt;li&gt;Getting Folder Id&lt;/li&gt;
&lt;li&gt;Creating Pastebin User Key&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Configuring end-point URL to handle incoming message by a Netlify Function

&lt;ul&gt;
&lt;li&gt;Installing Netlify CLI and configuring&lt;/li&gt;
&lt;li&gt;Program to integrate Twilio endpoint and Pastebin&lt;/li&gt;
&lt;li&gt;Hosting on Netlify Functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Adding our just configured end-point URL to Twilio WhatsApp sandbox&lt;/li&gt;
&lt;li&gt;Drawbacks&lt;/li&gt;
&lt;li&gt;Future scope&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G_4bseFv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624075682200/kPtKzrr0E.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G_4bseFv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624075682200/kPtKzrr0E.jpeg" alt="overview.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's see how this works 👀, you send a WhatsApp message to a specific number, that is Twilio registered number. Upon receiving a message Twilio Sandbox sends a payload to an end-point URL 🔗 we provide. We create an end-point URL using Netlify Functions, on receiving payload, the Netlify function is triggered and a script 📜 is executed in which we call Pastebin API, and paste our message. Also, an acknowledgment ✔ message is sent back to the user number.&lt;/p&gt;

&lt;p&gt;I have shown below what we want to achieve 🏆 at the end of this blog.&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send a message to a WhatsApp number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZeKpFJae--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624099474767/kySv957KC.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZeKpFJae--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624099474767/kySv957KC.jpeg" alt="19.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The message is pasted on the Pastebin site and acknowledgment is returned about the status of pasting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9oyLdHug--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624099544152/OW-sFPLQS.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9oyLdHug--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624099544152/OW-sFPLQS.jpeg" alt="20.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/whatsapp/sandbox"&gt;Twilio Sandbox for WhatsApp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/products/functions/"&gt;Netlify Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pastebin.com/doc_api"&gt;Pastebin API&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Twilio WhatsApp Sandbox Setup
&lt;/h2&gt;




&lt;h4&gt;
  
  
  What is Twilio?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.twilio.com/"&gt;Twilio&lt;/a&gt; allows software developers to programmatically make and receive phone calls, send and receive text messages, and perform other communication functions using its web service APIs.&lt;br&gt;
In our case, we will be using Twilio's WhatsApp Sandbox. Let's setup it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Sign up on &lt;a href="https://www.twilio.com/"&gt;Twilio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Go to console and create a new account&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--thNtxtCw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078972604/E4X3kk1db.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--thNtxtCw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078972604/E4X3kk1db.jpeg" alt="1.jpg"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Give a catchy name to your project account&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a4D9j7_N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078882684/_Ow0ulSO7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a4D9j7_N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078882684/_Ow0ulSO7.jpeg" alt="2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Verify your account and answer the questions asked&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Go to Try It Out/ Try WhatsApp Tab&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kLJPtEa2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078827963/xUk053qS0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kLJPtEa2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624078827963/xUk053qS0.jpeg" alt="4.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the few steps as instructed by Twilio.&lt;br&gt;
After following the steps, you would be guided to the WhatsApp Sandbox Settings page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CUAEvYkv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624079273943/0oIMkF3C_.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CUAEvYkv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624079273943/0oIMkF3C_.jpeg" alt="6.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Time for mini-celebrations! 🎉 We have set up Twilio WhatsApp Sandbox successfully!&lt;/p&gt;

&lt;p&gt;Twilio hits to end-point URL (which we provide later) whenever your Twilio Sandbox number receives a new message. Default end-point URL is configured to reply to you with the default message as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f-fZMGgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624080025773/s3r_drSkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f-fZMGgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624080025773/s3r_drSkf.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will come back later to Twilio after setting up the end-point URL to handle incoming messages from the sandbox.&lt;/p&gt;
&lt;h2&gt;
  
  
  Pastebin Setup
&lt;/h2&gt;



&lt;p&gt;We need to get some credentials from Pastebin.&lt;br&gt;
Create a free account on &lt;a href="https://pastebin.com/"&gt;Pastebin&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Getting Developer API Key
&lt;/h4&gt;

&lt;p&gt;Get your dev key &lt;a href="https://pastebin.com/doc_api#1"&gt;here&lt;/a&gt; (API Section) after log in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6jyFPQIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624088848020/hAm8jagCR.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6jyFPQIx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624088848020/hAm8jagCR.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Getting Folder Id
&lt;/h4&gt;

&lt;p&gt;Create a folder and copy its Id&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZwT1ZBY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624089022019/EaqBRC7SS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZwT1ZBY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624089022019/EaqBRC7SS.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the folder and copy its Id from URL&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F3MSRnhc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624089174111/okHAvyOMw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F3MSRnhc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624089174111/okHAvyOMw.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we have Developer Key and Folder Id. It's time to create your user key.&lt;/p&gt;
&lt;h4&gt;
  
  
  Creating Pastebin User Key
&lt;/h4&gt;

&lt;p&gt;Run this curl command in &lt;a href="https://reqbin.com/curl"&gt;this&lt;/a&gt; site to get your user key.&lt;br&gt;&lt;br&gt;
Note: Only one key can be active at the same time for the same user. This key does not expire, unless a new one is generated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;X&lt;/span&gt; &lt;span class="no"&gt;POST&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="s1"&gt;'api_dev_key=YOUR_DEV_KEY'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="s1"&gt;'api_user_name=YOUR_USERNAME'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="s1"&gt;'api_user_password=YOUR_PASSWORD'&lt;/span&gt; &lt;span class="s2"&gt;"https://pastebin.com/api/api_login.php"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XGx_rU1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624090051321/g3JI-xI5-.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XGx_rU1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624090051321/g3JI-xI5-.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Configuring end-point URL to handle incoming message by a Netlify Function
&lt;/h2&gt;


&lt;h3&gt;
  
  
  Installing Netlify CLI and configuring
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Prerequsite
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://nodejs.org/"&gt;NodeJs&lt;/a&gt; installed on your system&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a account on &lt;a href="https://www.netlify.com"&gt;Netlify&lt;/a&gt; and a team&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Run this command from any directory in your terminal:&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install netlify-cli -g&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
This installs Netlify CLI globally, so you can run &lt;code&gt;netlify&lt;/code&gt; commands from any directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Run this command to give access of your netlify account to Netlify CLI&lt;br&gt;&lt;br&gt;
&lt;code&gt;netlify login&lt;/code&gt; &lt;br&gt;&lt;br&gt;
This will open a browser window, asking you to log in with Netlify and grant access to Netlify CLI.&lt;/p&gt;
&lt;h3&gt;
  
  
  Program to integrate Twilio endpoint and Pastebin
&lt;/h3&gt;

&lt;p&gt;Read the comments to understand the code. &lt;br&gt;&lt;br&gt;
📁 Check out complete project files &lt;a href="https://github.com/ajaygalagali/WhatsBin"&gt;here&lt;/a&gt;. &lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// To make POST request to Pastebin API&lt;/span&gt;
&lt;span class="c1"&gt;// https://www.npmjs.com/package/axios&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// To convert incoming URLencoded data to readable format&lt;/span&gt;
&lt;span class="c1"&gt;// https://www.npmjs.com/package/qs&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;qs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;qs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Keys and Tokens stored in Environment Variables&lt;/span&gt;

&lt;span class="c1"&gt;// Twilio Credentials&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;twilioAccountSID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TWILIO_ACCOUNT_SID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Available on your Twilio Dashboard&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;twilioAuthToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TWILIO_AUTH_TOKEN&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Available on your Twilio Dashboard&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;twilioNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TWILIO_NUMBER&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// WhatsApp Sandbox Contact Number&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;clientNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLIENT_NUMBER&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Your registred WhatsApp Number with Twilio&lt;/span&gt;

&lt;span class="c1"&gt;// Pastebin Credentials&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pbDevKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PASTEBIN_DEV_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pbUserKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PASTEBIN_USER_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pbFolderKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PASTEBIN_FOLDER_ID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Client to send messages&lt;/span&gt;
&lt;span class="c1"&gt;// https://www.npmjs.com/package/twilio&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;twilioClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;twilio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;twilioAccountSID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;twilioAuthToken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Docs on event and context https://www.netlify.com/docs/functions/#the-handler-method&lt;/span&gt;
&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;dataMap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;qs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// Payload recieved from Twilio webhook&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dataMap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Message&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;pasteTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Title of Paste&lt;/span&gt;

&lt;span class="c1"&gt;// Uploading message recieved from Twilio to Pastebin&lt;/span&gt;
&lt;span class="c1"&gt;// Refer Pastebin API for more details - https://pastebin.com/doc_api&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;post&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://pastebin.com/api/api_post.php&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;qs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;api_dev_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pbDevKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;api_option&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;paste&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;api_user_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pbUserKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;api_paste_code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;api_paste_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pasteTitle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;api_paste_private&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 0 =&amp;gt; Public, 1 =&amp;gt; Unlisted, 2=&amp;gt; Private&lt;/span&gt;
&lt;span class="na"&gt;api_folder_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pbFolderKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/x-www-form-urlencoded;charset=utf-8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// On sucessfull POST request&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;successString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Pasted Succesfully! at &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;successString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;replyBack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;successString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Calling Reply Function at Success&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;204&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// On Failed POST request&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;errorString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;There was error =&amp;gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;errorString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;replyBack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;errorString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Calling Reply Function at Failure&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Replies to user on WhatsApp with ackowledgement of paste on Pastebin&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;replyBack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;twilioClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;whatsapp:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;twilioNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;whatsapp:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;clientNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Reply sent succesfully`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;There was error while replying back.. =&amp;gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let's learn how to host this program on Netlify Functions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hosting on Netlify Functions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Prerequsite
&lt;/h4&gt;

&lt;p&gt;Code Editor (I am using &lt;a href="https://code.visualstudio.com/download"&gt;VSCode&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Open a empty folder in VSCode&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 2&lt;/strong&gt;: Create sub-folder named "functions" under parent folder&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 3&lt;/strong&gt;: Create a &lt;code&gt;your_file_name.js&lt;/code&gt; file and paste this code.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 4&lt;/strong&gt;: Run command &lt;code&gt;npm init&lt;/code&gt; to create &lt;em&gt;package.json&lt;/em&gt; file. &lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 5&lt;/strong&gt;: Run this command &lt;code&gt;npm install&lt;/code&gt; , this will install required npm packages locally under folder name &lt;em&gt;node_modules&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 6&lt;/strong&gt;: Run command &lt;code&gt;netlify init&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Select the team and site name as shown below&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RBftLQOz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624086831648/MvXI49kzM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RBftLQOz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624086831648/MvXI49kzM.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;: Create a file &lt;code&gt;netlify.toml&lt;/code&gt; in parent directory and paste the following code.&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[build]
functions = "functions/"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using this config file, netlify can recognize the path to functions.&lt;br&gt;
By now your folder structure should be like below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📦ParentFolderName&amp;lt;br&amp;gt;
┣ 📂.netlify&amp;lt;br&amp;gt;
┃ ┗ 📜state.json&amp;lt;br&amp;gt;
┣ 📂functions&amp;lt;br&amp;gt;
┃ ┗ 📜your_file_name.js&amp;lt;br&amp;gt;
┣ 📂node_modules&amp;lt;br&amp;gt;
┃ ┗ 📜....&amp;lt;br&amp;gt;
┃ ┗ 📜....&amp;lt;br&amp;gt;
┣ 📜.gitignore&amp;lt;br&amp;gt;
┣ 📜netlify.toml&amp;lt;br&amp;gt;
┣ 📜package-lock.json&amp;lt;br&amp;gt;
┗ 📜package.json&amp;lt;br&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt;: Deploying function to Netlify&lt;br&gt;&lt;br&gt;
Run command &lt;code&gt;netlify deploy --prod&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RZrG7FPI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091091988/EByBaJTSL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RZrG7FPI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091091988/EByBaJTSL.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9&lt;/strong&gt;: Adding Environmental Variables to Netlify console.&lt;br&gt;&lt;br&gt;
Go to Netlify console -&amp;gt; Your-Site-&amp;gt;Site-Settings-&amp;gt;Build-&amp;amp;-Deploy-&amp;gt;Environment&lt;br&gt;
&lt;em&gt;&lt;a href="https://app.netlify.com/sites/YOUR_SITE_NAME/settings/deploys#environment"&gt;https://app.netlify.com/sites/YOUR_SITE_NAME/settings/deploys#environment&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Click on Edit Variable and add all necessary variable we used in code. Make sure variable names are same as used in code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CWTTUAxj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091587219/Vl52jD4F2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CWTTUAxj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091587219/Vl52jD4F2.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10&lt;/strong&gt;: Run deploy command &lt;code&gt;netlify deploy --prod&lt;/code&gt; again to update our function with just added enviornment variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding our just configured end-point URL to Twilio WhatsApp sandbox
&lt;/h2&gt;




&lt;p&gt;Go to Netlify Console-&amp;gt; YOUR_SITE -&amp;gt; Functions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XAw3lyMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091947438/6HsECpPhT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XAw3lyMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624091947438/6HsECpPhT.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After opening your function tab, copy the end-point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uUNfI3Cd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624092138361/BeouwgMkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uUNfI3Cd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624092138361/BeouwgMkb.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paste the netlify function end-point in Twilio's WhatsApp sandbox settings and save.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_2O-Tk6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624092345739/-51eYw7aF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_2O-Tk6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1624092345739/-51eYw7aF.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;That's it!&lt;/strong&gt; 🍾🥂 Now, any WhatsApp message sent to Twilio's number will be pasted in your Pastebin account under the folder you mentioned.&lt;/p&gt;




&lt;h2&gt;
  
  
  Drawbacks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pastebin free account has a restriction on pastes a free account user can do in 24 hrs period. More details at &lt;em&gt;&lt;a href="https://pastebin.com/faq#11a"&gt;https://pastebin.com/faq#11a&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;If you try to paste after hitting limits, Pastebin API returns an error with 422 code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Future scope
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Develop your own Pastebin clone to minimize said drawbacks.&lt;/li&gt;
&lt;li&gt;Explore more about WhatsApp Business API and bypass Twilio.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I implemented this to solve my own problem, hope it solves others' too. I &lt;strong&gt;learned&lt;/strong&gt; about &lt;strong&gt;Webhooks&lt;/strong&gt;, Hosting on Netlify, and explored Twilio and Pastebin API.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/whatsapp/sandbox"&gt;https://www.twilio.com/docs/whatsapp/sandbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pastebin.com/doc_api"&gt;https://pastebin.com/doc_api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.netlify.com/functions/overview/"&gt;https://docs.netlify.com/functions/overview/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=41NOoEz3Tzc"&gt;https://www.youtube.com/watch?v=41NOoEz3Tzc&lt;/a&gt; (Webhook tutorial)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Thank you :)
&lt;/h2&gt;

&lt;p&gt;Hit me up, if you need any help implementing this.&lt;/p&gt;

&lt;h4&gt;
  
  
  Note:
&lt;/h4&gt;

&lt;p&gt;This is my first blog. I will be very happy to get your feedback and improve myself for the next blog.&lt;/p&gt;

&lt;p&gt;Original Blog at &lt;a href="https://ajaygalagali.hashnode.dev/how-to-paste-on-pastebin-using-whatsapp"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;See you in next blog 👋&lt;/em&gt;&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>twilio</category>
      <category>pastebin</category>
      <category>netlify</category>
    </item>
  </channel>
</rss>
