Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- // Messenger API integration example
- // We assume you have:
- // * a Wit.ai bot setup (https://wit.ai/docs/quickstart)
- // * a Messenger Platform setup (https://developers.facebook.com/docs/messenger-platform/quickstart)
- // You need to `npm install` the following dependencies: body-parser, express, request.
- //
- // 1. npm install body-parser express request
- // 2. Download and install ngrok from https://ngrok.com/download
- // 3. ./ngrok http 8445
- // 4. WIT_TOKEN=your_access_token FB_APP_SECRET=your_app_secret FB_PAGE_TOKEN=your_page_token node examples/messenger.js
- // 5. Subscribe your page to the Webhooks using verify_token and `https://<your_ngrok_io>/webhook` as callback URL.
- // 6. Talk to your bot on Messenger!
- const bodyParser = require('body-parser');
- const crypto = require('crypto');
- const express = require('express');
- const fetch = require('node-fetch');
- const request = require('request');
- const fs = require('fs');
- var date = require('date-and-time');
- let Wit = null;
- let log = null;
- try {
- // if running from repo
- Wit = require('../').Wit;
- log = require('../').log;
- } catch (e) {
- Wit = require('node-wit').Wit;
- log = require('node-wit').log;
- }
- // Webserver parameter
- const PORT = process.env.PORT || 8445;
- // Wit.ai parameters
- const WIT_TOKEN = process.env.WIT_TOKEN;
- // Messenger API parameters
- const FB_PAGE_TOKEN = process.env.FB_PAGE_TOKEN;
- if (!FB_PAGE_TOKEN) { throw new Error('missing FB_PAGE_TOKEN') }
- const FB_APP_SECRET = process.env.FB_APP_SECRET;
- if (!FB_APP_SECRET) { throw new Error('missing FB_APP_SECRET') }
- let FB_VERIFY_TOKEN = null;
- crypto.randomBytes(8, (err, buff) => {
- if (err) throw err;
- FB_VERIFY_TOKEN = buff.toString('hex');
- console.log(`/webhook will accept the Verify Token "${FB_VERIFY_TOKEN}"`);
- });
- // ----------------------------------------------------------------------------
- // Messenger API specific code
- // See the Send API reference
- // https://developers.facebook.com/docs/messenger-platform/send-api-reference
- var yesNo =[ {
- content_type:"text",
- title:"نعم اجبتني",
- payload:"yes" ,
- },
- {
- content_type:"text",
- title:"لا لم تجبني",
- payload:"no" ,
- }
- ] ;
- var string = {
- "الفاتحة" : 1 ,
- "البقرة": 2 ,
- "آل عمران": 3 ,
- "النساء": 4 ,
- "المائدة":5 ,
- "الأنعام": 6 ,
- "الأعراف": 7 ,
- "الأنفال": 8 ,
- "التوبة": 9 ,
- "يونس": 10 ,
- "هود": 11 ,
- "يوسف": 12 ,
- "الرعد": 13 ,
- "إبراهيم": 14 ,
- "الحجر": 15 ,
- "النحل": 16 ,
- "الإسراء":17 ,
- "الكهف": 18 ,
- "مريم": 19 ,
- "طه": 20 ,
- "الأنبياء":21 ,
- "الحج": 22 ,
- "المؤمنون": 23 ,
- "النور": 24,
- "الفرقان": 25 ,
- "الشعراء": 26 ,
- "النمل": 27 ,
- "القصص": 28 ,
- "العنكبوت": 29 ,
- "الروم": 30,
- "لقمان": 31 ,
- "السجدة": 32 ,
- "الأحزاب": 33,
- "سبأ": 34,
- "فاطر": 35 ,
- "يس": 36 ,
- "الصافات": 37 ,
- "ص": 38 ,
- "الزمر": 39 ,
- "غافر": 40 ,
- "فصلت": 41 ,
- "الشورى": 42 ,
- "الزخرف": 43 ,
- "الدخان": 44 ,
- "الجاثية": 45 ,
- "الأحقاف": 46 ,
- "محمد": 47 ,
- "الفتح": 48 ,
- "الحجرات": 49 ,
- "ق": 50 ,
- "الذاريات": 51 ,
- "الطور": 52 ,
- "النجم": 53 ,
- "القمر": 54 ,
- "الرحمن": 55 ,
- "الواقعة": 56 ,
- "الحديد": 57 ,
- "المجادلة": 58 ,
- "الحشر": 59 ,
- "الممتحنة": 60 ,
- "الصف": 61 ,
- "الجمعة": 62 ,
- "المنافقون": 63 ,
- "التغابن": 64 ,
- "الطلاق": 65 ,
- "التحريم": 66 ,
- "الملك": 67 ,
- "القلم": 68 ,
- "الحاقة": 69 ,
- "المعارج": 70 ,
- "نوح": 71 ,
- "الجن": 72 ,
- "المزمل": 73 ,
- "المدثر": 74 ,
- "القيامة": 75 ,
- "الإنسان": 76 ,
- "المرسلات": 77 ,
- "النبأ": 78 ,
- "النازعات": 79 ,
- "عبس": 80 ,
- "التكوير": 81 ,
- "الانفطار": 82 ,
- "المطففين": 83 ,
- "الانشقاق": 84 ,
- "البروج": 85 ,
- "الطارق": 86 ,
- "الأعلى": 87 ,
- "الغاشية": 88,
- "الفجر": 89 ,
- "البلد": 90 ,
- "الشمس": 91 ,
- "الليل": 92 ,
- "الضحى": 93 ,
- "الشرح": 94 ,
- "التين": 95 ,
- "العلق": 96 ,
- "القدر": 97 ,
- "البينة": 98 ,
- "الزلزلة": 99 ,
- "العاديات": 100 ,
- "القارعة": 101 ,
- "التكاثر": 102 ,
- "العصر": 103 ,
- "الهمزة": 104 ,
- "الفيل":105 ,
- "قريش": 106 ,
- "الماعون": 107 ,
- "الكوثر": 108 ,
- "الكافرون": 109 ,
- "اﻟﻨﺼﺮ": 110 ,
- "المسد": 111 ,
- "الإخلاص": 112 ,
- "الفلق": 113,
- "الناس":114
- }
- var Responses = {
- help: [
- 'هل أستطيع مساعدتك',
- 'هل يمكنني مساعدتك',
- 'أيمكنني مساعدتك',
- 'هل بإمكاني مساعدتك',
- 'هل أساعدك',
- 'أيمكنني أن أساعدك',
- 'هل أستطيع أن أساعدك',
- 'هل من خدمة',
- 'لي أن أخدمك',
- 'هل يمكنني أن أساعدك',
- 'هل لي بمساعدتك',
- 'هل بوسعي مساعدتك',
- 'كيف أساعدك',
- ],
- fine: [
- 'جيد جدا',
- 'الحمد لله ',
- 'في احسن حال',
- 'بخير' ,
- 'في خير و الحمد لله',
- ],
- sorry: [
- 'أنا آسف لسَمْاع ذلك , انا نعمل على تحسين قدراتي ',
- 'يؤسفني ذلك, سبحان من هو على كل شيء عليم ',
- ' يؤسفني عدم قدرتي على اجابتك',
- 'آسف لذلك' ,
- ],
- good: [
- 'انه شرف لي مرحبا بكم ',
- 'يسرني ذلك, مرحبا بك ',
- ' من دواعي سروري, أهلاً بك',
- 'و ما توفيقي الا بالله .مرحبا بك ' ,
- ],
- askVerification: [
- 'هل أجبت على سؤالك ؟ ',
- 'هل أجبت بشكل كافي على سؤالك ',
- ' هل اجبتك بشكل صحيح؟',
- ],
- badWordsResponse: [
- 'لا حول ولا قوة الا بالله ',
- 'ربي يهديك ',
- ' احشم',
- 'ربي يتوب عليك يا وليدي ',
- 'لماذا هذا الكلام ',
- 'ربي يهديك ويتوب عليك ',
- 'وَجَزَاءُ سَيِّئَةٍ سَيِّئَةٌ مِثْلُهَا فَمَنْ عَفَا وَأَصْلَحَ فَأَجْرُهُ عَلَى اللَّهِ ',
- ],
- salem: [
- 'لسلام عليكم ',
- 'مرحبا ',
- ' السلام عليكم',
- 'اهلا بك ',
- 'اهلا ',
- ],
- HelloNoAr: [
- 'السلام عليكم ورحمة الله وبركاته نسأل الله لكم الخير و السلامة نتمنى منكم أن نتواصل باللغة العربية.',
- 'السلام عليكم و مرحبا نسأل الله أن تكونوا بخير و سلامة. نرجوا من سيادتكم الكتابة باللغة العربية.',
- ],
- onlyArabic: [
- 'نسأل الله لكم الخير و السلامة نتمنى منكم أن نتواصل باللغة العربية. لنواصل الحديث',
- 'نرجوا من سيادتكم الكتابة باللغة العربية. لنستمر في الحوار ',
- 'الله يبارك فيكم نرجوا من سيادتكم الكتابة باللغة العربية. لنكمل المحادثة',
- 'لو تكرمتم نرجوا منكم التواصل و باللغة العربية. لنواصل الحديث ',
- ],
- HelloAr: [
- 'الله يحييك و مرحبا بكم في هذا التطبيق. نسأل الله أن ينال اعجابكم. نحن في خدمتكم و في انتظار أسئلتكم و استفساراتكم.',
- 'حياكم الله و مرحبا بكم في هذا التطبيق. نسأل الله أن ينال اعجابكم. نحن في خدمتكم و في انتظار أسئلتكم و استفساراتكم.',
- 'السلام ورحمة الله وبركاته و مرحبا بكم في هذا التطبيق. نسأل الله أن ينال اعجابكم. نحن في خدمتكم و في انتظار أسئلتكم و استفساراتكم.',
- 'أحييكم بتحية الإسلام و دار السلام و مرحبا بكم في هذا التطبيق. نسأل الله أن ينال اعجابكم. نحن في خدمتكم و في انتظار أسئلتكم و استفساراتكم.',
- ],
- correctAnswer: [
- 'يسرنا ذلك بارك الله فيك في لقاء موالي.',
- 'ننتظركم ثانية نسأل الله لكم التوفيق. ',
- 'مرحبا بكم في قادم استفساراتكم نتمنى لكم القَبول و السداد',
- 'نحن في انتظاركم مرة أخرى شكر الله سعيكم و وفقكم لما يحب و يرضى. ',
- ],
- wrongAnswer: [
- 'أنا مجرد "رُوبُوت" ، أملك ذكاء اصطناعي ، وقدراتي على الإسْتِيعَاب محدودة و يصعب عليّ فهم كل شي. لكنّي أبشركم بإجابة كافية بإذن الله في الساعات القليلة القادمة مباشرة من مشائخ التطبيق.شكرا لتفهمكم بإمكانكم مواصلة إلقاء أسئلتكم.',
- ],
- }
- const firstEntityValue = (entities, entity) => {
- const val = entities && entities[entity] &&
- Array.isArray(entities[entity]) &&
- entities[entity].length > 0 &&
- entities[entity][0].value
- ;
- if (!val) {
- return null;
- }
- return typeof val === 'object' ? val.value : val;
- };
- const sendResponse = (text,category ,recipientId ,sessionId ) => {
- console.log("sending.........."+category);
- sessions[sessionId].question = text ;
- sessions[sessionId].category = category ;
- var urlencode = require('urlencode');
- var request = require("request")
- var url = "http://41.231.54.87/api/getresponsev2?categorie="+category+"&content="+urlencode(text)
- request({
- url: url,
- json: true
- }, function (error, response, body) {
- {
- if (body)
- var res = body['0']["reply"];
- if (res)
- {
- fbMessage(recipientId, res);
- }
- else {
- console.log("not found");
- } }})}
- const storeQuestion = (sessionId ) => {
- const text = sessions[sessionId].question ;
- const category = sessions[sessionId].category ;
- const Id = sessions[sessionId].fbid;
- var urlencode = require('urlencode');
- var request = require("request")
- var now = new Date();
- //var url = "http://askthecheikh.tk/api/addquestion?question=" + sessions[sessionId].question + "&userId=" + Id + "&received=" + date.format(now, 'YYYY-MM-DD HH:mm:ss')
- var url = "http://askthecheikh.tk/api/addquestion2?question=" + sessions[sessionId].question + "&userId=" + Id + "&received=" + date.format(now, 'YYYY-MM-DD HH:mm:ss')+ "&something="+ category
- console.log(url)
- request({
- url: url,
- json: true
- }, function (error, response, body) {
- })}
- const isWriting = (id ,sender_action) =>
- {
- const body = JSON.stringify({
- recipient: { id },
- sender_action
- });
- const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
- return fetch('https://graph.facebook.com/me/messages?' + qs, {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body,
- })
- .then(rsp => rsp.json())
- .then(json => {
- if (json.error && json.error.message) {
- throw new Error(json.error.message);
- }
- return json;
- });
- };
- const fbMessage = (id, text) => {
- const body = JSON.stringify({
- recipient: { id },
- message: { text },
- });
- const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
- return fetch('https://graph.facebook.com/me/messages?' + qs, {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body,
- })
- .then(rsp => rsp.json())
- .then(json => {
- if (json.error && json.error.message) {
- throw new Error(json.error.message);
- }
- return json;
- });
- };
- const quickReplay = (id, text ,quick_replies) => {
- const body = JSON.stringify({
- recipient: { id },
- message: {text , quick_replies, },
- });
- const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
- return fetch('https://graph.facebook.com/me/messages?' + qs, {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body,
- })
- .then(rsp => rsp.json())
- .then(json => {
- if (json.error && json.error.message) {
- throw new Error(json.error.message);
- }
- return json;
- });
- };
- const fbAudioMessage = (id, url) => {
- const body = JSON.stringify({
- recipient: { id },
- message: {
- attachment : {
- type : "audio" ,
- payload :{
- url
- }
- }
- },
- });
- const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
- return fetch('https://graph.facebook.com/me/messages?' + qs, {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body,
- })
- .then(rsp => rsp.json())
- .then(json => {
- if (json.error && json.error.message) {
- throw new Error(json.error.message);
- }
- return json;
- });
- };
- // ----------------------------------------------------------------------------
- // Wit.ai bot specific code
- // This will contain all user sessions.
- // Each session has an entry:
- // sessionId -> {fbid: facebookUserId, context: sessionState}
- const sessions = {};
- const findOrCreateSession = (fbid) => {
- let sessionId;
- // Let's see if we already have a session for the user fbid
- Object.keys(sessions).forEach(k => {
- if (sessions[k].fbid === fbid) {
- // Yep, got it!
- sessionId = k;
- }
- });
- if (!sessionId) {
- // No session found for user fbid, let's create a new one
- sessionId = new Date().toISOString();
- sessions[sessionId] = {fbid: fbid, context: {}};
- }
- return sessionId;
- };
- // Our bot actions
- const actions = {
- send({sessionId}, {text}) {
- // Our bot has something to say!
- // Let's retrieve the Facebook user whose session belongs to
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- // Yay, we found our recipient!
- // Let's forward our bot response to her.
- // We return a promise to let our bot know when we're done sending
- return fbMessage(recipientId, text)
- .then(() => null)
- .catch((err) => {
- console.error(
- 'Oops! An error occurred while forwarding the response to',
- recipientId,
- ':',
- err.stack || err
- );
- });
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- // Giving the wheel back to our bot
- return Promise.resolve()
- }
- },
- getDouaa({context, entities , sessionId , text}) {
- var fs = require('fs');
- fs.readFile('douaa.js', 'utf8', function (err,data) {
- if (err) {
- return console.log(err);
- }
- var jsonFile = JSON.parse(data)
- if (jsonFile[text])
- var res = jsonFile[text][Math.floor(Math.random()*jsonFile[text].length)];
- else
- var res = "اسف هذا النوع من الدعاء ليس متوفر حاليا" ;
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- return fbMessage(recipientId, res);
- }
- else {
- return fbMessage(recipientId, res);
- }
- });
- },
- getHelp({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- var quick_replies = [
- {
- content_type:"text",
- title:"اريد ان اسال سؤال",
- payload:"1" ,
- },
- {
- content_type:"text",
- title:"اﺳﺘﻤﻊ اﻟﻰ اﻟﻘﺮاﻥ",
- payload:"3" ,
- },
- {
- content_type:"text",
- title:"ﻗﺮاءﺓ ﺑﻌﺾ اﻻﺩﻋﻴﺔ",
- payload:"4" ,
- },
- {
- content_type:"text",
- title:" اﻭﻗﺎﺕ اﻟﺼﻼﺓ",
- payload:"4" ,
- }
- ]
- return quickReplay(recipientId,"ﻛﻴﻒ ﻳﻤﻜﻨﻨﻲ ﻣﺴﺎﻋﺪﺗﻚ؟",quick_replies)
- }
- },
- getResponse({context, entities , sessionId, text }) {
- if (firstEntityValue(entities,'intent')=="HelloNoAr") {
- var wantedtext = Responses['HelloNoAr']
- var text=wantedtext[Math.floor(Math.random() * wantedtext.length)]
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- return fbMessage(recipientId, text)
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (firstEntityValue(entities,'intent')=="HelloAr") {
- var wantedtext = Responses['HelloAr']
- var text=wantedtext[Math.floor(Math.random() * wantedtext.length)]
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- return fbMessage(recipientId, text)
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (firstEntityValue(entities,'intent')=="askAboutName") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- return fbMessage(recipientId, "إسمي أكــــــرم نسأل الله أن يكرمكم تفضل بالسؤال")
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (firstEntityValue(entities,'intent')=="askQuestion") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- var quick_replies = [
- {
- content_type:"text",
- title : "القرآن وعلومه" ,
- payload:"1" ,
- },
- {
- content_type:"text",
- title : "احاديث نبوية وسير" ,
- payload:"2" ,
- },
- {
- content_type:"text",
- title : "العبادات" ,
- payload:"3" ,
- },
- {
- content_type:"text",
- title : "المعاملات" ,
- payload:"4" ,
- },
- {
- content_type:"text",
- title : "اسئلة اخرى عامة" ,
- payload:"5" ,
- },
- ];
- return quickReplay(recipientId,"سؤالك متعلق بـ ؟",quick_replies)
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (text=="احاديث نبوية وسير") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- console.log("*---------------------");
- context.a7adith= true
- delete context.mou3amalet
- delete context.ibadet
- delete context.quran
- delete context.other
- return context
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (text=="العبادات") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- context.ibadet= true
- delete context.mou3amalet
- delete context.a7adith
- delete context.quran
- delete context.other
- return context
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (text=="المعاملات") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- context.mou3amalet= true
- delete context.ibadet
- delete context.a7adith
- delete context.quran
- delete context.other
- return context
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (text=="اسئلة اخرى عامة") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- // fbMessage(recipientId, "تفضل ما هو سؤالك")
- delete context.quran ;
- delete context.ibadet
- delete context.a7adith
- delete context.mou3amalet
- context.other = "true" ;
- return context ;
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- else if (text=="القرآن وعلومه") {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- // fbMessage(recipientId, "تفضل ما هو سؤالك")
- delete context.other ;
- delete context.ibadet
- delete context.a7adith
- delete context.mou3amalet
- context.quran = "quran" ;
- return context ;
- } else {
- console.error('Oops! Couldn\'t find user for session:', sessionId);
- return Promise.resolve()
- }
- }
- },
- getChoice({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (context.a7adith) {
- var quick_replies = [
- {
- content_type:"text",
- title : "علوم الحديث" ,
- payload:"1" ,
- },
- {
- content_type:"text",
- title : "التاريخ والسير" ,
- payload:"2" ,
- },
- ] ;
- quickReplay(recipientId,"بالتحديد ؟" ,quick_replies)
- }
- else if (context.ibadet) {
- var quick_replies = [
- {
- content_type:"text",
- title : "الطهارة" ,
- payload:"1" ,
- },
- {
- content_type:"text",
- title : "الصلاة" ,
- payload:"2" ,
- },
- { content_type:"text",
- title : "الزكاة" ,
- payload:"3" ,
- },
- {content_type:"text",
- title : "الحج والعمرة" ,
- payload:"4" ,
- },
- {content_type:"text",
- title : "الصيام" ,
- payload:"5" ,
- },
- {content_type:"text",
- title : "جنائز" ,
- payload:"6" ,
- },
- ] ;
- quickReplay(recipientId,"بالتحديد ؟" ,quick_replies) }
- else if (context.mou3amalet) {
- var quick_replies = [
- {
- content_type:"text",
- title : "البيوع" ,
- payload:"1" ,
- },
- {
- content_type:"text",
- title : "الحدود والاحكام" ,
- payload:"2" ,
- },
- {
- content_type:"text",
- title : "فقه الاسرة" ,
- payload:"3" ,
- },
- {
- content_type:"text",
- title : "المواريث" ,
- payload:"4" ,
- },
- ] ;
- quickReplay(recipientId,"بالتحديد ؟", quick_replies)
- }
- return context
- },
- askTheChikh({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (context.other) {
- console.log("asking about other")
- sendResponse(text,"2",recipientId,sessionId);
- }
- else if (context.quran) {
- console.log("askign about quran")
- sendResponse(text,"1",recipientId,sessionId );
- }
- else if (context.sira) {
- console.log("askign about sira")
- sendResponse(text,"4",recipientId ,sessionId);
- }
- else if (context.hadith) {
- console.log("askign about hadith")
- sendResponse(text,"3",recipientId,sessionId);
- }
- setTimeout(function() {
- quickReplay(recipientId,"هل اجبت على سؤالك؟", yesNo)
- }, 1000);
- return context
- },
- verify({context, entities , sessionId, text }) {
- console.log("verify -------------------------------------");
- const recipientId = sessions[sessionId].fbid;
- if (text=="نعم اجبتني") {
- var wantedtext = Responses['correctAnswer']
- var res = wantedtext[Math.floor(Math.random() * wantedtext.length)]
- return fbMessage(recipientId, res)
- }
- else {
- var wantedtext = Responses['wrongAnswer']
- var res = wantedtext[Math.floor(Math.random() * wantedtext.length)]
- // console.log(sessions[sessionId].question)
- storeQuestion(sessionId)
- return fbMessage(recipientId, res)
- // context.lost = "true" ;
- }
- },
- askTheChikhMou2amalet({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (context.typo1) {
- console.log("asking about typo1")
- sendResponse(text,"11",recipientId,sessionId);
- }
- else if (context.typo2) {
- console.log("askign about typo2")
- sendResponse(text,"12",recipientId,sessionId);
- }
- else if (context.typo3) {
- console.log("askign about typo3")
- sendResponse(text,"13",recipientId,sessionId);
- }
- else if (context.typo4) {
- console.log("askign about typo4")
- sendResponse(text,"14",recipientId,sessionId);
- }
- setTimeout(function() {
- quickReplay(recipientId,"هل اجبت على سؤالك؟", yesNo)
- }, 1000);
- return context
- },
- askTheChikhIbadet({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (context.type1) {
- console.log("asking about type1")
- sendResponse(text,"5",recipientId,sessionId);
- }
- else if (context.type2) {
- console.log("askign about type2")
- sendResponse(text,"6",recipientId,sessionId);
- }
- else if (context.type3) {
- console.log("askign about type3")
- sendResponse(text,"7",recipientId,sessionId);
- }
- else if (context.type4) {
- console.log("askign about type4")
- sendResponse(text,"8",recipientId,sessionId);
- }
- else if (context.type5) {
- console.log("askign about type5")
- sendResponse(text,"9",recipientId,sessionId);}
- else if (context.type6) {
- console.log("askign about type6")
- sendResponse(text,"10",recipientId,sessionId);
- }
- setTimeout(function() {
- quickReplay(recipientId,"هل اجبت على سؤالك؟", yesNo)
- }, 1000);
- return context
- },
- whatIbadet({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- console.log("asking about the kinf of ibeda");
- if (text=="الطهارة") {
- delete context.type2
- delete context.type3
- delete context.type4
- delete context.type5
- delete context.type6
- context.type1 = "true1" ;
- }
- else if (text=="الصلاة"){
- delete context.type1
- delete context.type3
- delete context.type4
- delete context.type5
- delete context.type6
- context.type2 = "true2" ;
- }
- else if (text=="الزكاة"){
- delete context.type2
- delete context.type1
- delete context.type4
- delete context.type5
- delete context.type6
- context.type3 = "true3" ;
- }
- else if (text=="الحج والعمرة") {
- delete context.type2
- delete context.type3
- delete context.type1
- delete context.type6
- delete context.type5
- context.type4 = "true4" ;
- }
- else if (text=="الصيام") {
- delete context.type2
- delete context.type3
- delete context.type4
- delete context.type1
- delete context.type6
- context.type5 = "true5" ;
- }
- else if (text=="جنائز") {
- delete context.type2
- delete context.type3
- delete context.type4
- delete context.type5
- delete context.type1
- context.type6 = "true6" ;
- }
- return context ;
- }
- },
- whatMou2amalet({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- console.log("asking about the kinf of mou2amalet");
- if (text=="البيوع") {
- delete context.typo2
- delete context.typo3
- delete context.typo4
- context.typo1 = "tre1" ;
- }
- else if (text=="الحدود والاحكام"){
- delete context.typo1
- delete context.typo3
- delete context.typo4
- context.typo2 = "tre2" ;
- }
- else if (text=="فقه الاسرة"){
- delete context.typo2
- delete context.typo1
- delete context.typo4
- context.typo3 = "tre3" ;
- }
- else if (text=="المواريث") {
- delete context.typo2
- delete context.typo3
- delete context.typo1
- context.typo4 = "tre4" ;
- }
- return context ;
- }
- },
- hadithOrSira({context, entities , sessionId, text }) {
- const recipientId = sessions[sessionId].fbid;
- console.log("ena hna -----------");
- if (recipientId) {
- if (text=="علوم الحديث") {
- console.log("ena hna ----------- hadith");
- context.hadith = true ;
- context.sira = false ;
- } else if (text=="التاريخ والسير"){
- console.log("ena hna ----------- sira");
- context.sira = true ;
- context.hadith = false ;
- }
- return context ;
- }
- },
- checkLanguage({context, entities , sessionId, text }) {
- var franc = require('franc');
- const recipientId = sessions[sessionId].fbid;
- if (franc(text, {minLength: 2})!="arb" && franc(text, {minLength: 2})!="uig") {
- if (recipientId) {
- var wantedtext = Responses['onlyArabic']
- var res = wantedtext[Math.floor(Math.random() * wantedtext.length)]
- return fbMessage(recipientId, res)
- }
- } else {
- if (recipientId) {
- return fbMessage(recipientId, 'اسف لم افهم')
- }
- }
- },
- getPrayerTimes({context, entities , sessionId , text}) {
- console.log("getPrayerTimes triiger");
- const request = require('request');
- var urlencode = require('urlencode');
- var url = "http://muslimsalat.com/"+urlencode(text)+"/daily.json?key=16a741273a18579bdb7abdbae61b46d6&jsoncallback"
- const recipientId = sessions[sessionId].fbid;
- request({
- url: url,
- json: true
- }, function (error, response, body) {
- if (!error && response.statusCode === 200) {
- console.log(body['status_valid'])
- if (!body['status_valid']) {
- return fbMessage(recipientId, "من فضلك تثبنت من ادخالك لاسم المدينة بالصحيح");
- } else {
- var res = 'اﻟﻔﺠﺮ' + body['items'][0]['fajr'] +'\n' + 'اﻟﺸﺮﻭﻕ' + body['items'][0]['shurooq'] +'\n' + 'اﻟﻈﻬﺮ' + body['items'][0]['dhuhr'] +'\n' +'اﻟﻌﺼﺮ' + body['items'][0]['asr'] +'\n' + 'اﻟﻤﻐﺮﺏ' + body['items'][0]['maghrib'] +'\n' + 'اﻟﻌﺸﺎء' + body['items'][0]['isha'] ;
- return fbMessage(recipientId, res); }
- }
- })
- return context;
- },
- getSourasVoice({context, entities , sessionId , text }) {
- var soura_name = firstEntityValue(entities, 'soura_name');
- // if (soura_name) {
- const recipientId = sessions[sessionId].fbid;
- if (recipientId) {
- if (string[text] ) {
- var nb , x=string[text] ;
- if (x<10)
- nb = "00"+x ;
- else if (x<100)
- nb = "0"+x ;
- else
- nb = x ;
- var url = "http://server12.mp3quran.net/maher/"+nb+".mp3"
- return fbAudioMessage(recipientId,url) }
- else {
- return fbMessage(recipientId, "اسف لم اجد السورة ");
- }
- }
- //}
- },
- };
- // Setting up our bot
- const wit = new Wit({
- accessToken: WIT_TOKEN,
- actions,
- logger: new log.Logger(log.INFO)
- });
- // Starting our webserver and putting it all together
- const app = express();
- app.use(({method, url}, rsp, next) => {
- rsp.on('finish', () => {
- console.log(`${rsp.statusCode} ${method} ${url}`);
- });
- next();
- });
- app.use(bodyParser.json({ verify: verifyRequestSignature }));
- // Webhook setup
- app.get('/webhook', (req, res) => {
- if (req.query['hub.mode'] === 'subscribe' &&
- req.query['hub.verify_token'] === FB_VERIFY_TOKEN) {
- res.send(req.query['hub.challenge']);
- } else {
- res.sendStatus(400);
- }
- });
- // Message handler
- app.post('/webhook', (req, res) => {
- // Parse the Messenger payload
- // See the Webhook reference
- // https://developers.facebook.com/docs/messenger-platform/webhook-reference
- const data = req.body;
- if (data.object === 'page') {
- data.entry.forEach(entry => {
- entry.messaging.forEach(event => {
- if (event.message && !event.message.is_echo) {
- // Yay! We got a new message!
- // We retrieve the Facebook user ID of the sender
- const sender = event.sender.id;
- // We retrieve the user's current session, or create one if it doesn't exist
- // This is needed for our bot to figure out the conversation history
- const sessionId = findOrCreateSession(sender);
- isWriting(sessions[sessionId].fbid,"mark_seen")
- isWriting(sessions[sessionId].fbid,"typing_on")
- // We retrieve the message content
- const {text, attachments} = event.message;
- if (attachments) {
- // We received an attachment
- // Let's reply with an automatic message
- fbMessage(sender, 'Sorry I can only process text messages for now.')
- .catch(console.error);
- } else if (text) {
- // We received a text message
- // Let's forward the message to the Wit.ai Bot Engine
- // This will run all actions until our bot has nothing left to do
- wit.runActions(
- sessionId, // the user's current session
- text, // the user's message
- sessions[sessionId].context // the user's current session state
- ).then((context) => {
- // Our bot did everything it has to do.
- // Now it's waiting for further messages to proceed.
- console.log('Waiting for next user messages');
- // Based on the session state, you might want to reset the session.
- // This depends heavily on the business logic of your bot.
- // Example:
- // if (context['done']) {
- // delete sessions[sessionId];
- // }
- // Updating the user's current session state
- sessions[sessionId].context = context;
- })
- .catch((err) => {
- console.error('Oops! Got an error from Wit: ', err.stack || err);
- })
- }
- } else {
- console.log('received event', JSON.stringify(event));
- }
- });
- });
- }
- res.sendStatus(200);
- });
- /*
- * Verify that the callback came from Facebook. Using the App Secret from
- * the App Dashboard, we can verify the signature that is sent with each
- * callback in the x-hub-signature field, located in the header.
- *
- * https://developers.facebook.com/docs/graph-api/webhooks#setup
- *
- */
- function verifyRequestSignature(req, res, buf) {
- var signature = req.headers["x-hub-signature"];
- if (!signature) {
- // For testing, let's log an error. In production, you should throw an
- // error.
- console.error("Couldn't validate the signature.");
- } else {
- var elements = signature.split('=');
- var method = elements[0];
- var signatureHash = elements[1];
- var expectedHash = crypto.createHmac('sha1', FB_APP_SECRET)
- .update(buf)
- .digest('hex');
- if (signatureHash != expectedHash) {
- throw new Error("Couldn't validate the request signature.");
- }
- }
- }
- app.listen(PORT);
- console.log('Listening on :' + PORT + '...');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement