फेसबुक चैट एपीआई (एक्सएमपीपी) सी # के माध्यम से संदेश भेजें


88

OBSERVE https://developers.facebook.com/docs/chat/

प्लेटफ़ॉर्म एपीआई v2.0 की रिलीज़ के साथ सेवा और एपीआई इस दस्तावेज़ को कवर किया गया है। एक बार जब 1.0 संस्करण को हटा दिया जाता है, तो chat.facebook.com अब उपलब्ध नहीं होगा।

महत्वपूर्ण! इसे पढ़ें और आप शायद इस सवाल के साथ जो कुछ भी करना चाहते हैं उससे कुछ अलग करना चाहते हैं।

मैं फेसबुक चैट एपीआई से जुड़कर WebForms C # के साथ एक चैट बना रहा हूं।

मैंने इस SO प्रश्न (और सभी लिंक) को भी देखा है । कुछ हिस्से अब प्रासंगिक नहीं हैं क्योंकि फेसबुक को auth_tokenअब इसकी आवश्यकता है।

इसे दोहराने के लिए, आपको फेसबुक वेब ऐप सेट करना चाहिए, appIdऔर xmpp_login अनुमति सेट के साथ उपयोगकर्ता खाते का उपयोग करना चाहिए । फिर Chat.aspxपीछे एक कोड बनाएं और उसके अनुसार इस कोड को पेस्ट करें। और इंटर करने के लिए हार्ड-कोडेड उपयोगकर्ताओं को बदलें।

मेरे पास दो (शायद तीन) मुद्दे हैं जो मेरा मानना ​​है कि मुझे चैट संदेश भेजने के अपने लक्ष्य के साथ सफल होने से रोकते हैं।

  1. // finishes auth processदस्तावेज़ीकरण में उल्लिखित प्रक्रिया प्रलेखन विवरण से मेल नहीं खाती है (मुझे फेसबुक से मेरा एसएसएल / टीएलएस आधारित सफलता संदेश प्राप्त होने के बाद कोई प्रतिक्रिया नहीं मिल रही है।)
  2. मुझे नहीं पता कि 'चैट संदेश कैसे भेजें'-भाग सेट किया जाना चाहिए, और चूंकि मुझे फेसबुक से कोई संदेश प्राप्त नहीं होता है, इसलिए यह बताना मुश्किल है कि क्या गलत हो सकता है।

यहाँ पेस्टीबिन पर अपनी संपूर्णता में मेरा कोड है

मेरे पास xmpp_login अनुमतियाँ जोड़ने के लिए कुछ सहायक भी हैं और ऐसे .. स्पष्टता के लिए हटा दिए गए हैं।

सार्वत्रिक चर:

public partial class Chat : Page
{
    public TcpClient client = new TcpClient();
    NetworkStream stream;
    private SslStream ssl;
    private string AppId { get; set; }
    public string AppSecret { get; set; }
    public string AppUrl { get; set; }
    public string UserId { get; set; }
    public string AccessToken { get; set; }
    private string _error = string.Empty;//global error string for watch debugging in VS. 

    public const string FbServer = "chat.facebook.com";
    private const string STREAM_XML = "<stream:stream xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\" xmlns=\"jabber:client\" to=\"chat.facebook.com\" xml:lang=\"en\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\">";
    private const string AUTH_XML = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='X-FACEBOOK-PLATFORM'></auth>";
    private const string CLOSE_XML = "</stream:stream>";
    private const string RESOURCE_XML = "<iq type=\"set\" id=\"3\"><bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"><resource>fb_xmpp_script</resource></bind></iq>";
    private const string SESSION_XML = "<iq type=\"set\" id=\"4\" to=\"chat.facebook.com\"><session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/></iq>";
    private const string START_TLS = "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>";

फिर Page_Loadआवश्यक सभी चरणों में (या माना जाता है) का प्रदर्शन किया जाता है। वर्थ नोटिंग है SendMessage("test");। मैंने सिर्फ यह देखने के लिए इसे वहाँ रखने की कोशिश की कि क्या यह चैट संदेश भेजने में सफल होगा ... SetUserNameAndAuthTokenमेरे मौखिक टोकन और उपयोगकर्ता नाम को वैश्विक चर में सेट करता है। The AuthToken काम करता है।

protected void Page_Load(object sender, EventArgs e)
{
    this.AppId = "000000082000090";//TODO get from appsettings.
    //AddAdditionalPermissions("xmpp_login");//TODO handle xmpp_login persmission
    this.AppSecret = "d370c1bfec9be6d9accbdf0117f2c495"; //TODO Get appsecret from appsetting.
    this.AppUrl = "https://fbd.anteckna.nu";

    SetUserNameAndAuthToken();

    Connect(FbServer);

    // initiates auth process (using X-FACEBOOK_PLATFORM)
    InitiateAuthProcess(STREAM_XML);

    // starting tls - MANDATORY TO USE OAUTH TOKEN!!!!
    StartTlsConnection(START_TLS);

    // gets decoded challenge from server
    var decoded = GetDecodedChallenge(AUTH_XML);

    // creates the response and signature
    string response = CreateResponse(decoded);

    //send response to server
    SendResponseToServer(response);

    SendMessage("test");

    // finishes auth process
    FinishAuthProcess();

    // we made it!
    string streamresponseEnd = SendWihSsl(CLOSE_XML);

}

तो मुझे एक प्रतिक्रिया मिलती है फिर मैं सर्वर को प्रतिक्रिया भेजता हूं:

private void SendResponseToServer(string response)
{
    string xml = String.Format("<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">{0}</response>", response);
    string response2 = SendWihSsl2(xml);
    if (!response2.ToLower().Contains("success"))
        _error = response2;
}

इसमें 1 मिनट 40 सेकंड लगते हैं ... और प्रतिक्रिया है:

<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>

अंत में मैं FinishAuthPorcess ()

private void FinishAuthProcess()
{
    string streamresponse = SendWithSsl(STREAM_XML);
    if (!streamresponse.Contains("STREAM:STREAM"))
        _error = streamresponse;

    string streamresponse2 = SendWihSsl(RESOURCE_XML);
    if (!streamresponse2.Contains("JID"))
        _error = streamresponse2;

    string streamresponse3 = SendWihSsl(SESSION_XML);
    if (!streamresponse3.Contains("SESSION"))
        _error = streamresponse2;
}

सभी प्रतिक्रियाएं हैं ""। में Readविधि को देखते हुए SendWithSsl: यह 0 बाइट्स है। संदेश भेजने की कोशिश मुझे 0 बाइट्स देती है फेसबुक से डेटा पढ़ें। मुझे कोई सुराग नहीं है कि क्यों?


6
@DanielHilgarth Hehe, अच्छी तरह से .. कनेक्ट का पहला भाग आवश्यक नहीं हो सकता है, लेकिन C # में यह कैसे करना है, इसके बारे में कोई भी काम करने के उदाहरण नहीं हैं, इसलिए मैंने सोचा कि मुझे यकीन है कि वहाँ किसी को भी फेसबुक चैट करने की कोशिश कर रहा है। I C#। मैं एक कोड बेस में भी सब कुछ लिख सकता था, लेकिन तब यह बहुत अधिक उपयोगी नहीं होगा।
मैग्नस कार्लसन

6
यदि आप एक उत्तर चाहते हैं, तो मेरा सुझाव है कि आप इस पोस्ट में कोड को केवल इस समस्या को समझने के लिए उसके नंगे न्यूनतम के लिए पट्टी करें। बाकी कोड (जैसे कि दूसरों को इसे पुन: पेश करने में सक्षम होने के लिए) क्या आप अपने पोस्टबिन पर पेस्टिनिन और उससे लिंक कर सकते हैं।
डैनियल एए पल्सेमेकर

4
आपका कोड पूरा नहीं है, इसलिए मैं नियंत्रण प्रवाह का पालन नहीं कर सकता। कृपया डिबग Xml संलग्न करें, आप सर्वर को क्या भेजते हैं और आपको क्या मिलता है। आप यहाँ से मौजूदा XMPP लाइब्रेरी का उपयोग क्यों नहीं कर रहे हैं, जो आपके लिए पूरी मेहनत करती है? xmpp.org/xmpp-software/lbooks
एलेक्स

4
@MatiCicero chat.facebook.com xmpp सर्वर facebook के अनुसार 6 महीने में बंद होने वाला है।
मैग्नस कार्लसन ने

11
@cari आपको इस समाधान के साथ नहीं जाना चाहिए। इसके बजाय agsXMPP जैसी लाइब्रेरी का उपयोग करें। हालाँकि, ये सभी समाधान छह महीने के भीतर काम करना बंद कर देंगे क्योंकि फेसबुक चैट सर्वर को बंद कर रहा है।
मैग्नस कार्लसन

जवाबों:


1

अभी नया आपी है। मैसेंजर प्लेटफ़ॉर्म कैसे काम करता है? जब कोई व्यक्ति मैसेंजर पर किसी व्यवसाय को संदेश भेजता है और जब तक यह पृष्ठ आंशिक रूप से या पूरी तरह से स्वचालित वार्तालापों के लिए एक ऐप का उपयोग करता है, तब निम्न होगा। फेसबुक सर्वर वेबहूक को बिजनेस सर्वर के यूआरएल पर भेजता है, जहां मैसेजिंग एप को होस्ट किया जाता है। Send API का उपयोग करके, ऐप मैसेंजर पर व्यक्ति को जवाब दे सकता है। इस तरह, डेवलपर्स एक स्वचालित प्रवाह के माध्यम से लोगों का नेतृत्व करने के लिए निर्देशित वार्तालापों का निर्माण कर सकते हैं या मैसेंजर पर आपके एजेंटों और आपके व्यवसाय की उपस्थिति के बीच एक पुल के रूप में सेवा करने के लिए एक ऐप का निर्माण कर सकते हैं।

मैसेंजर प्लेटफ़ॉर्म को उपयोग करने के लिए किसी भी भुगतान की आवश्यकता नहीं है। यह व्यवसायों के लिए अपने ग्राहकों से पूछताछ को संभालने के लिए है। एक बार जब आप अपने ग्राहकों के साथ बातचीत करने के लिए अपने अनुभव का निर्माण करते हैं, तो आप अपने अनुभव के लिए लोगों को लाने के लिए विज्ञापनों का लाभ उठा सकते हैं, उदाहरण के लिए क्लिक-टू-मैसेंजर विज्ञापन या इनबॉक्स विज्ञापन।

व्यावसायिक अनुभव के लिए एक मैसेंजर कैसा दिखता है? हमारे पास एक नमूना ईकामर्स व्यवसाय है जिसे आप मैसेंजर पर ओरिजिनल कोस्ट क्लोदिंग कह सकते हैं।

यहाँ नमूना व्यवसाय के साथ चैट करें

मैं कैसे शुरू करूँ? आप एक परीक्षण पृष्ठ और परीक्षण ऐप बनाकर आरंभ कर सकते हैं जो आपको मैसेंजर के भीतर अपने अनुभव को आज़माने की अनुमति देता है। हमारे पास कुछ उदाहरण हैं जो आपको आरंभ कर सकते हैं। एक बार जब आपका ऐप तैनात होने के लिए तैयार हो जाता है, तो आप इसे समीक्षा के लिए प्रस्तुत कर सकते हैं। जब आपका ऐप हमारी समीक्षा प्रक्रिया को पार कर लेगा, तो यह जनता के साथ बातचीत करने के लिए तैयार हो जाएगा।

आरंभ करने के लिए, आपको मैसेंजर, एक फेसबुक पेज और एक यूआरएल की आवश्यकता होगी जहां webhooks को भेजा जाना है।

आपको शुरू करने के लिए अपने परीक्षण पृष्ठ में उपरोक्त अनुभव को तैनात करने के लिए एक चरण-दर-चरण मार्गदर्शिका है।

तैयार करने के लिए? शुरू हो जाओ

https://developers.facebook.com/products/messenger/

https://developers.facebook.com/docs/messenger-platform/reference/send-api/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.