यदि मेरा बॉट अलग-अलग प्रश्न पूछता है और यदि उपयोगकर्ता उनमें से प्रत्येक का जवाब देता है, तो मैं कैसे पता लगा सकता हूं कि कौन सा उत्तर संबंधित प्रश्न से संबंधित है। मेटाडेटा नामक एक फ़ील्ड है जिसे आप sendTextMessage API से जोड़ सकते हैं लेकिन जब उपयोगकर्ता प्रतिसाद देता है, तो यह मेटाडेटा अनिर्धारित में आता है। क्या आप लोग राज्य या एफएसएम जैसे machina.js के लिए किसी नोड-कैश का उपयोग करते हैं? वर्तमान में हम किस बातचीत में फंस गए हैं, इस बारे में मैं सबसे अच्छा कैसे पता लगा सकता हूं?फेसबुक मैसेंजर बॉट के अंदर राज्य को सहेजने/ट्रैक करने का सही तरीका क्या है?
उत्तर
आपके पास बॉट के साथ उपयोगकर्ता बातचीत कहां है, इसका ट्रैक रखने के लिए आपके पास कोड कोड हो सकता है।
उदाहरण के लिए। यदि आपके पास 10 प्रश्न हैं, तो शुरुआत में स्थिति कोड = 0 रखें, और पहले प्रश्न पूछें। जब आपको अपने वेबहूक पर कोई संदेश प्राप्त होता है, तो स्थिति स्थिति == 0 जांचें, और उस उपयोगकर्ता संदेश को अपने पहले प्रश्न के उत्तर के रूप में संग्रहीत करें। फिर वृद्धि स्थिति कोड = 1 और अगले प्रश्न पूछें।
अलग-अलग वार्तालाप प्रवाह से निपटने के लिए आपके पास एकाधिक झंडे और स्थिति कोड हो सकते हैं।
मैं इस मुद्दे में खुद को चला रहा हूं। यद्यपि इसका उल्लेख उनके दस्तावेज़ीकरण में नहीं किया गया है, लेकिन मुझे नहीं लगता कि इन-मेमोरी डेटाबेस को अटैचमेंट करना सवाल से बाहर है। ऐसा लगता है कि user_id
बातचीत की शुरूआत के बावजूद समान है।
हर बार जब उपयोगकर्ता सत्र को दोबारा जोड़ता है तो एपीआई कॉल करना संभवतः बॉट के प्रदर्शन को धीमा कर देगा। साथ ही, मैंने देखा है कि यदि आप सुझाव दे रहे थे तो आप एपीआई में मेटाडेटा कुंजी का उपयोग करके वास्तव में "छद्म-वितरित डेटाबेस" नहीं बना सकते हैं। मेटाडाटा टैग सर्वर -> क्लाइंट (मैसेंजर) से भेजा जा सकता है लेकिन क्लाइंट से नहीं -> सर्वर जो दस्तावेज कहता है उससे।
मेरी जानकारी के अनुसार, फेसबुक chatbot में आप डेटा उपयोगकर्ता से chatbot करने के लिए सिर्फ पोस्टबैक बटन से पेलोड की स्थापना के रूप में वे API reference में दे दिया है द्वारा भेज सकते हैं।
और chatbot अपने सत्र या किसी राज्य/झंडे संग्रहीत नहीं करेगा है.आप स्थिति या झंडे या सरणियों सेट कर सकते हैं लेकिन सभी जब आप अपने आवेदन को अपडेट करने या अपने सर्वर को पुनः आरंभ खो जाएगा।
हां, तो आप है.और SenderID के लिए डेटाबेस का उपयोग करना चाहिए एक ही हर रहेगा ताकि आप विशेष उपयोगकर्ता के लिए है कि विशेष आईडी द्वारा डेटाबेस से डेटा संभाल कर सकते हैं क्या तुम सच में स्थिति सेट करना चाहते हैं।
अधिक जानकारी के लिए चेकआउट technical referance here।
मुझे उम्मीद है कि यह आपकी मदद करेगा। अगर ऐसा है, तो कृपया इसे उत्तर के रूप में चिह्नित करें।
मेटाडाटा काम नहीं करता है, यह अपरिभाषित करता है, मैंने इसे – PirateApp
पोस्टबैक –
के साथ बस पेलोड में डेटा पास किया है मेटाडाटा केवल तब ही लौटाया जाता है जब आप गूंज की सदस्यता लेते हैं, इसका उपयोग क्या है मुझे स्पष्ट नहीं है - https: // developers.facebook.com/docs/messenger-platform/webhook-reference/message-echo – Rusty
जब आपके ऐप को कोई संदेश प्राप्त होता है, तो इसमें कोई पेलोड या मेटाडेटा नहीं होता है। यह एक त्वरित उत्तर या पोस्ट-बैक के विपरीत है जिसमें एक पेलोड हो सकता है। एक प्रश्न के साथ प्रतिक्रिया को जोड़ने का एकमात्र तरीका यह है कि @ एशुमान-धामून
द्वारा सुझाए गए अनुसार आपके ऐप में वार्तालाप स्थिति को मैन्युअल रूप से ट्रैक करना है, ऐसा करने के लिए, प्रत्येक उपयोगकर्ता के लिए एक राज्य को बनाए रखना सर्वोत्तम है, साथ ही साथ प्रत्येक राज्य के लिए अगला राज्य।
// optionally store this in a database
const users = {}
// an object of state constants
const states = {
question1: 'question1',
question2: 'question2',
closing: 'closing',
}
// mapping of each to state to the message associated with each state
const messages = {
[states.question1]: 'How are you today?',
[states.question2]: 'Where are you from?',
[states.closing]: 'That\'s cool. It\'s nice to meet you!',
}
// mapping of each state to the next state
const nextStates = {
[states.question1]: states.question2,
[states.question2]: states.closing,
}
const receivedMessage = (event) => {
// keep track of each user by their senderId
const senderId = event.sender.id
if (!users[senderId].currentState){
// set the initial state
users[senderId].currentState = states.question1
} else {
// store the answer and update the state
users[senderId][users[senderId].currentState] = event.message.text
users[senderId].currentState = nextStates[users[senderId.currentState]]
}
// send a message to the user via the Messenger API
sendTextMessage(senderId, messages[users[senderId].currentState])
}
नोट यदि आप चाहते हैं तो आप भी प्रतिदेय कार्यों कि वर्तमान स्थिति के जवाब लेने के लिए और अलग अलग बातचीत में बंद शाखा एक अलग राज्य के आधार पर करने के लिए उपयोगकर्ता को पारित करके बहती है में nextStates
के मूल्यों कर सकते हैं उसकी प्रतिक्रिया
मैंने इसके साथ कुछ समय बिताया है। सबसे अच्छा समाधान उपयोगकर्ता के वार्तालाप प्रवाह को ट्रैक करने के लिए डेटाबेस का उपयोग करना है। POST ऑब्जेक्ट में प्रेषक आईडी होती है। आप डेटाबेस में एक पंक्ति बनाने के लिए इस आईडी का उपयोग कर सकते हैं जिसमें आपको निश्चित रूप से इस आईडी को स्टोर करने, प्रश्नों के किसी भी उत्तर, और वार्तालाप में कौन सा कदम ट्रैक करने के लिए एक फ़ील्ड को स्टोर करने की आवश्यकता होगी।
फिर यदि आप अपने कोड में बयान उचित प्रतिक्रिया वापस करने के लिए उपयोग कर सकते हैं तो आप इसका उपयोग कर सकते हैं। नीचे कुछ उदाहरण कोड:
if($currentStep == '1'){
// Ask Next Question
$message_to_reply = "Thank you! What's your name?";
$message_to_reply = '"text":"'.$message_to_reply.'"';
} elseif($currentStep == '2'){
// Ask Next Question
$message_to_reply = "Thank you! What's your email address?";
$message_to_reply = '"text":"'.$message_to_reply.'"';
} elseif($currentStep == '3'){
// Ask Next Question
$message_to_reply = "Thank you! What's your address?";
$message_to_reply = '"text":"'.$message_to_reply.'"';
}
- 1. मैं फेसबुक मैसेंजर बॉट वेबहुक कैसे बदलूं?
- 2. फेसबुक मैसेंजर क्लोजिंग वेबव्यू (मोबाइल)
- 3. फेसबुक मेसेंजर बॉट सत्यापन
- 4. फेसबुक मैसेंजर एक्सेसिबिलिटी
- 5. फेसबुक मैसेंजर प्लेटफ़ॉर्म पर क्या उपयोगकर्ता प्रोफ़ाइल जानकारी उपलब्ध है?
- 6. 551 फेसबुक मैसेंजर बॉट के साथ त्रुटि - "यह व्यक्ति अभी उपलब्ध नहीं है"
- 7. क्या मैं मैसेंजर वेबहूक
- 8. जावा ऑब्जेक्ट के अंदर देशी पॉइंटर को स्टोर करने का 'सही' तरीका क्या है?
- 9. प्रतिक्रिया: प्रोप को रेफरी करने का सही तरीका क्या है?
- 10. एक बॉट फेसबुक पृष्ठों
- 11. जावास्क्रिप्ट टैग को प्रारूपित करने का सही तरीका क्या है?
- 12. एसपीओजे डायहार्ड को हल करने का सही तरीका क्या है?
- 13. बड़े ISTreams को प्रबंधित करने का सही तरीका क्या है?
- 14. मीडिया नियंत्रक को डिस्कनेक्ट करने का सही तरीका क्या है?
- 15. क्यूलिस्ट को आरंभ करने का सही तरीका क्या है?
- 16. एसएएसएस, मिश्रण को कॉल करने का सही तरीका क्या है?
- 17. एच 2 बंद करने का सही तरीका क्या है?
- 18. क्या #define के अंदर # परिभाषित करने का कोई तरीका है?
- 19. स्ट्रीम से उपज करने का सही तरीका क्या है?
- 20. पुशशर्प का उपयोग करने का सही तरीका क्या है?
- 21. माइक्रोसॉफ्ट बॉट फ्रेमवर्क कस्टम फेसबुक संदेश
- 22. tastypie के साथ django-allauth का उपयोग करने का सही तरीका क्या है?
- 23. TypeForwardedToAttribute का उपयोग करने का सही तरीका क्या है?
- 24. scala.io.Source का उपयोग करने का सही तरीका क्या है?
- 25. फोन नंबरों का प्रतिनिधित्व करने का सही तरीका क्या है?
- 26. क्या httpwebrequest का निपटान करने का कोई सही तरीका है?
- 27. एक प्रतिकृति गतिविधि के अंदर टास्किड संपत्ति को बांधने का सही तरीका क्या है?
- 28. किसी फॉर्म का परीक्षण करने के लिए दायरता को अनुकरण करने का सही तरीका क्या है?
- 29. फेसबुक क्रॉलर बॉट क्रैशिंग साइट
- 30. BeginInvoke को समाप्त करने का सही तरीका?
सच है, अब तक कोई भाग्य? डीबी राज्य को बचाने का एकमात्र तरीका है? – Rusty