फेसबुक bot कैसे बनाये PHP के साथ

दोस्तों facebook ने एक नयी तकनीक developers को प्रदान की है जिसे फेसबुक bot कहा गया है | सर्वप्रथम यह बात आती है की आखिर ये bot है क्या ?


बोट प्रोग्राम क्या होते है ?
बोट एक प्रकार का कंप्यूटर प्रोग्राम है जो किसी आम व्यक्ति की तरह चैट करता है | ये प्रोग्राम यूजर द्वारा दी गयी जानकारी के आधार पर इस प्रकार से जवाब देते है जैसे कोई व्यक्ति यूजर से बात कर के उसकी समस्या का समाधान कर रहा हो | बोट का उपयोग आज बहुत से इंडस्ट्रीज में हो सकता है जैसे कस्टमर रिलेशन में, इ कॉमर्स तथा अन्य स्थानों पर बोट का उपयोग काफी व्यापक है | अभी यह तकनीक अपने शुरूआती दौर में है जिस पर आने वाले दिनों में और विकास हो सकता है |

facebook बोट क्या है ?
facebook ने बोट के महत्त्व को समझते हुए अपने प्लेटफॉर्म पर 12 अप्रैल 2016 को messenger बोट प्लेटफॉर्म की बीटा लॉन्चिंग की | फेसबुक के मैसेंजर चैटिंग एप्प पर 1 अरब से अधिक लोग है, ये बोट सरकारों तथा कंपनीयो को लोगो तक अपनी बात या सर्विस पहुँचाने का एक अति सुविधा जनक माध्यम है | इसके उपयोग से सरकारे अपनी योजनाओ को अच्छे से क्रियान्वित कर सकती है, उदाहरण स्वरुप यदि किसी व्यक्ति को ये जानना है की उसके द्वारा अप्लाई किये गए किसी दस्तावेज का स्टेटस क्या है ये पता किया जा सकता है वो भी सिर्फ फेसबुक का इस्तेमाल करते हुए | एक अन्य उदाहरण ले तो इसके द्वारा यूनिवर्सिटी अपने रिजल्ट भी घोषित कर सकती है |

फेसबुक बोट कैसे बनाये जा सकते है ?
फेसबुक बोट बनाने का पूरा डॉक्यूमेंटेशन इस लिंक पर उपलब्ध है | फेसबुक बोट बनाने के लिए सर्वप्रथम एक पेज की आवश्यकता होती है | अब हम एक बोट बनाकर देखेंगे की कैसे हम एक बोट बना सकते है | फेसबुक बोट बनाने के लिए हमें सिक्योर https ssl सर्टिफिकेट की आवश्यकता होती है | इसके लिए हमें ssl सर्टिफिकेट खरीदना पड़ता है परन्तु आप चिंता मत कीजिये हम localhost पर ही इसे बनायेंगे

हम एक बोट बनायेंगे जो tanwar classes  का रिजल्ट बोट के द्वारा दिखायेगा अर्थात हम रोल नंबर डालेंगे और वो बोट हमें उस रोल नंबर का रिजल्ट बताएगा | यह बोट आपको बोट कैसे बनता है और वो कैसे कार्य करता है उसका एक उदाहरण है |


Step 1 सर्वप्रथम एक फेसबुक पेज बनायेंगे
हम सबसे पहले https://www.facebook.com/pages/create/ पेज पर जायेंगे तदुपरांत आपके सम्मुख यह पेज खुलेगा
bot create page

इस चित्र में आप देख सकते है की इसमें बहुत से विकल्प दिए गए है हम इनमे से local business or place का विकल्प चुनते है (आप अपने पसंद का कोई भी विकल्प चुन सकते हैं ) इस पेज का नाम हम देते है Tanwar Classes इसके आगे के विकल्प आप छोड़ भी सकते है अर्थात skip भी कर सकते हैं

image of facebook page
page image

Step 2 फेसबुक एप्प बनाना
अब https://developers.facebook.com/apps पर जाके Add a new App पर क्लिक कीजिये इसके बाद आपके सामने यह विंडो खुलेगी | एक बात का ध्यान रखे की फेसबुक एप्प बनाने के लिए आपके पास डेवलपर अकाउंट हो नहीं तो आप उपरोक्त लिंक को एक्सेस नहीं कर पायेंगे | डेवलपर अकाउंट बनाना आसान है यदि आपका अकाउंट नहीं बना हुआ तो यही से बनाले  |


app page

इस विंडो में सबसे निचे दिए गए आप्शन basic setup को क्लिक करें अब आपके सामने ये विंडो आएगी

create app id

इसके बाद  product setup का पेज खुलेगा जहाँ पर आपको messenger के आगे लिखे get started पर क्लिक करना होगा

add product

इसके उपरांत आपके सामने एक विंडो आएगी जिसमे messenger platform का वेलकम मेसेज लिखा हुआ होगा

मैसेंजर प्लेट
Get Started पर क्लिक करें

अब आपके सामने एक और स्क्रीन खुलेगी जिसमे हमें token generate करना होगा

मैसेंजर क्विक स्टार्ट

token generate करने के लिए हमें अपने बनाये गए पेज को select a page आप्शन से चुनना होगा इसके उपरांत हमें एक page access token मिलेगा | अब हम इस आप्शन में से अपना पेज चुनेंगे जो अभी हमने बनाया Tanwar Classes. जैसे ही आप पेज को सेलेक्ट करलेंगे आप के सामने एक पॉपअप विंडो खुलेगी जो आपसे परमिशन मांगेगी

pop up window

परमिशन देने के पश्चात access token generate हो जायेगा

टोकन

Step 3 Webhook का सेटअप 

webhook एक वेब पेज का एड्रेस होता है जिससे हमारी रिक्वेस्ट generate होती है, आसान भाषा में समझे तो यह वो वेब एड्रेस होता है जिससे फेसबुक संपर्क करता है और जब हम कोई मेसेज फेसबुक पर भेजते हैं तो फेसबुक उस मेसेज को http पोस्ट के रूप में उस यूआरएल को भेजता है और ये URL उस http पोस्ट का रिप्लाई देता है |
जब हम setup webhooks पर क्लिक करते है तो हमारे सामने एक पॉपअप खुलता है जिसमे call back url और verify token का टेक्स्ट बॉक्स बना होता है

call back

callback URL में हमें https वेब सर्वर का पता देना होता है यदि आपके पास https वेबहोस्टिंग है तो आप उसका उपयोग कर सकते है, परन्तु localhost पर https यूज़ करने के लिए एक फ्री टूल उपलब्ध है ngrok | ngrok को डाउनलोड करने के बाद अनज़िप कर लीजिये और इसे उस फोल्डर में ले जाइए जहाँ आपका सर्वर (xampp या wamp) का htdocs फोल्डर है उसे रन करने के बाद आपके सामने एक command prompt की विंडो खुलेगी वहां यह कमांड लगाइए

 

ngrok http 80 

उसके बाद आपके सामने एक और command prompt की विंडो खुलेगी जिसमे आपके सामने 2 यूआरएल लिखे होंगे एक http होगा और दूसरा https हमें https उसे करना है उसे कॉपी कर लेवे

ngrok विंडो

इस पोस्ट रिक्वेस्ट को debug करने के लिए http://localhost:4040/inspect/http एक नए टैब में खोल लेवे | यहाँ से आपको रिक्वेस्ट से सम्बंधित get या post रिक्वेस्ट दिख जाएगी |

ngrok inspact

अब हम https वाली url को  कॉपी करके new page subscription के call back url में पेस्ट करेंगे | varify token में एक रैंडम string लिख देंगे, और नीचे दिए सभी subscription options में चेकबॉक्स को क्लिक कर देंगे इसके बाद जब हम varify and save पर click करेंगे तो हमें एक error प्राप्त होगी
webhook with error

यह error हमें इस लिए प्राप्त हुई क्योंकि हमने verification करने के लिए कोड नहीं लिखा | इस प्रोसेस में फेसबुक हमारे बताये गए callback url पर एक स्ट्रिंग भेजता है जो हमें वहां print करनी पड़ती है जैसे ही दोनों स्ट्रिंग्स मैच होती है webhook वेरीफाई  हो जाता है | इसे वेरीफाई करने के लिए हमें htdocs फोल्डर में एक index.php फाइल बनाके इसमें यह कोड लिखेंगे और सेव करदेंगे |

<?php
$access_token = "EAARURukRjVUBAAKiokncCTEVqZAifUKcW86GlcWUfZAyJg1Ld2nGF66Djki73rnwIYh5fnnW5kZAJ27Dck27SwvvXgJIkUlde9sGX3T7TtK2kvsdSj1TMdc8ZC7sJNBKTjoQomN4uBZB8vB5H8sv02btaGlNWlF9t62ZBQoGuOoQZDZD";
print_r($_GET['hub_challenge']);
?>

अब जब हम verify and save क्लिक करेंगे तो हमारा webhook verify हो जायेगा

successful verification

अब हम मेसेज भेजकर चेक करेंगे

Step 4 Sending and Receiving message

फेसबुक से मेसेज भेजने और प्राप्त करने के लिए हमें पेज को सब्सक्राइब करना पड़ेगा, उसके लिए 2 तरीके है

  1.  यदि आपके कंप्यूटर में curl इन्सटाल्ड है तो आप यह कोड कमांड प्रांप्ट में जाकर यह कोड लगा सकते है
    curl -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=EAARURukRjVUBAAKiokncCTEVqZAifUKcW86GlcWUfZAyJg1Ld2nGF66Djki73rnwIYh5fnnW5kZAJ27Dck27SwvvXgJIkUlde9sGX3T7TtK2kvsdSj1TMdc8ZC7sJNBKTjoQomN4uBZB8vB5H8sv02btaGlNWlF9t62ZBQoGuOoQZDZD"

    यहाँ access_token कोड है जो हमें पहले generate किया था यदि सब कुछ सही रहा तो आपको success message milega

    {“success”:true}
  2. यदि आपके curl इनस्टॉल नहीं है तो आप जहाँ से हमने webhook वेरीफाई किये थे उसके नीचे एक subscribe page का option है वहां से आप पेज सेलेक्ट करके subscribe कर सकते है

subscribe page

अब हम मेसेज भेज कर देखते है इसके लिए आप पेज खोलिए फेसबुक पर जो आपने बनाया है वहां पर मेसेज पर क्लिक करने से चैट विंडो खुल जाएगी जहाँ आप मेसेज लिख सकते है

send message

यदि webhook और सब्सक्रिप्शन सही ढंग से काम कर रहे हुए तो आप को ngrok web interface (http://localhost:4040/inspect/http) पर request hit दिखाई देगी

ngrok hit

उपरोक्त चित्र में हम देखते है की हमें को फेसबुक से पोस्ट रिक्वेस्ट मिल रही है, इस प्रकार हम देखते है की हमारा webhook और subscription अच्छे से काम कर रहे है तथा हमें फेसबुक से मेसेज हमारे webhook पर आ रहा है |

अभी तक हमने देखा की कैसे webhook को सेटअप करते है और कैसे मेसेज फेसबुक चैट बॉक्स से localhost पर प्राप्त करते है, अब हम देखते है की हम फेसबुक पर उपस्थित यूजर को वापस मेसेज कैसे send करे | इसके लिए हम फेसबुक डॉक्यूमेंटेशन (https://developers.facebook.com/docs/messenger-platform/send-api-reference#request) को देखते है

फेसबुक के डॉक्यूमेंटेशन को देखने पर हमें वहां एक json कोड मिलता है जो की यह है

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"USER_ID"
  },
  "message":{
    "text":"hello, world!"
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"

फेसबुक पर वापस मेसेज भेजने के लिए हमे फेसबुक यूजर की यूजर id की आवश्यकता पड़ेगी जो हमें पहले से प्राप्त json से निकालनी पड़ेगी

आपको याद होगा की कुछ देर पहले जब हमने फेसबुक से मेसेज किया था तो हमें एक json स्ट्रक्चर प्राप्त हुआ था जो ऊपर के चित्र में भी दिखाया गया है वो स्ट्रक्चर हमें तब प्राप्त होता है जब हम कोई मेसेज अपने पेज के चैट बॉक्स में लिखते है और वो हम http://localhost:4040/inspect/http पर चेक कर सकते है

json code

अब हम इस प्राप्त json को php के associative array में बदलेंगे

<?php
//print_r($_GET['hub_challenge']);
$access_token = "EAARURukRjVUBAAKiokncCTEVqZAifUKcW86GlcWUfZAyJg1Ld2nGF66Djki73rnwIYh5fnnW5kZAJ27Dck27SwvvXgJIkUlde9sGX3T7TtK2kvsdSj1TMdc8ZC7sJNBKTjoQomN4uBZB8vB5H8sv02btaGlNWlF9t62ZBQoGuOoQZDZD";
$input = json_decode(file_get_contents("php://input"));
// we will now convert this json into array
$userId = $input->entry[0]->messaging[0]->sender->id;
$message = $input->entry[0]->messaging[0]->message->text;
file_put_contents('fb.txt', $message);
?>

अब हमें userId मिल गयी  जो की मेसेज को वापस भेजने के लिए हमें चाहिए थी  अब हम फेसबुक के डॉक्यूमेंटेशन के हिसाब से मेसेज दुबारा भेज सकते है उसके लिए हमे php से json में डाटा प्राप्त करके उसे वापस फेच करना होगा |

आप जो मेसेज फेसबुक से भेज रहे हो उसे हम एक फाइल में सेव करवा रहे है ताकि आप आउटपुट भी देख सके उसके लिए आप को localhost/fb.txt पर जाना होगा |

अब हम जो एक रिजल्ट एप्लीकेशन बना रहे थे जिसमे रोल नंबर लिखे और उसका रिजल्ट सामने आजाये उस पर काम करते है यह एप्लीकेशन केवल फेसबुक बोट्स को समझाने के लिए है तो इसमें हम सिर्फ बेसिक काम ही करेंगे मतलब जैसे ही रोल नो डाले वो हमें बता देगा की वो व्यक्ति पास है या फ़ैल |

हम ऊपर लिखे कोड को ध्यान से देखे तो हम पाएंगे की यूजर id के साथ साथ हम मेसेज भी एक php वेरिएबल के रूप में प्राप्त कर रहे है  तो इस वेरिएबल का उपयोग हम इस लॉजिक के लिए करेंगे | हम अपनी इस एप्लीकेशन में सिर्फ 4 रोल नंबर्स का ही उपयोग करेंगे आप इस एप्प का और विस्तार कर सकते है इसमें डेटाबेस जोड़ कर पूरी स्कूल का रिजल्ट भी दिखा सकते है परन्तु हम यहाँ एक उदाहरण के रूप में ही काम करेंगे  |

if ($message==100)
{
    $reply = "pass";
}
else if ($message == 101)
{
    $reply = "fail";
}
else if ($message==200)
{
    $reply ="passed with honors";
}
else
{
    $reply = "please enter correct roll no";
}
file_put_contents('fb.txt', $reply);

अब हमको ये जो रिप्लाई है हमें फेसबुक चैट विंडो में भेजनी है उसके लिए आपको याद होगा जो फेसबुक डॉक्यूमेंटेशन से हमने json ली थी उसके अन्दर यूजर id और मेसेज दोनों को json फॉर्मेट में बदल कर हमें उसे https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN पर भेजना होगा

$data = array(
    'recipient' => array('id'=>"$userId"),
    'message' => array('text'=> "$reply")
);

$data में recipient और message को array के रूप में स्टोर करवा दिया है डाटा भेजने के लिए हम file_get_contents  का उपयोग करेंगे उसके लिए हमें एक option नाम का array भी बनाना होगा उसमे method,content, header इत्यादि जानकारी होगी |

$options = array('http'=>array(
            'method' => "POST",
            'content'=>json_encode($data),
            'header'=>"Content-Type: application/jsonn",
            
        )
    );

file_get_contents function का इस्तेमाल करने के लिए हमें options array की एक स्ट्रीम बनानी पड़ेगी ताकि हम इस फंक्शन का इस्तेमाल कर सके |

$context = stream_context_create($options);
$url="https://graph.facebook.com/v2.6/me/messages?access_token=$access_token";
if(!empty($message))
{
file_get_contents($url,false,$context);
}?>

इस प्रोग्राम को सेव कर दीजिये और अब फेसबुक से मेसेज करने पर आपको वहां पर मेसेज प्राप्त होगा

final product

अब आप अपनी क्रिएटिविटी का उपयोग करते हुए बोट बना सकते है | इस बोट को पब्लिक करने के लिए आपको डॉक्यूमेंटेशन देखना पड़ेगा वहां आपको पूरी जानकारी मिल जायेगी |

 

 

Do you have web page and you want to make an bot you can contact me at tanwardurgesh@gmail.com I will help you to make bot.

Facebook Comments

Leave a Comment