ফেসবুক চ্যাট এপিআই (এক্সএমপিপি) সি # এর মাধ্যমে বার্তা প্রেরণ করুন


88

অবলম্বন করুন https://developers.facebook.com/docs/chat/

এই দস্তাবেজের কভার পরিষেবা এবং API এ প্ল্যাটফর্ম API v2.0 প্রকাশের সাথে অবচয় করা হয়েছে। 1.0 সংস্করণটি একবার অবনতি হয়ে গেলে, chat.facebook.com আর উপলভ্য হবে না।

গুরুত্বপূর্ণ! এটি পড়ুন এবং আপনি সম্ভবত এই প্রশ্নের সাথে যা কিছু করা উচিত তার চেয়ে সম্পূর্ণ আলাদা কিছু করতে চান।

আমি ফেসবুক চ্যাট API এ সংযুক্ত হয়ে ওয়েবফর্ম সি সি দিয়ে একটি চ্যাট তৈরি করছি।

আমি এই এসও প্রশ্নটিও (এবং সমস্ত লিঙ্কগুলি) দেখেছি । ফেসবুকের প্রয়োজনীয়তার কারণে কিছু অংশ আর প্রাসঙ্গিক নয়auth_token এখন ।

এটির অনুলিপি করতে, আপনার একটি ফেসবুক ওয়েব অ্যাপ সেট আপ করা উচিত, appIdএবং এক্সএমপি_লগিন অনুমতি সেট সহ একটি ব্যবহারকারী অ্যাকাউন্ট ব্যবহার করা উচিত । তারপরে একটি তৈরি করুনChat.aspx কোড সহ পিছনে এবং সেই অনুসারে এই কোডটি আটকে দিন। এবং ইন্টারঅ্যাক্ট করতে হার্ড-কোডড ব্যবহারকারীদের প্রতিস্থাপন করুন।

আমার দুটি (সম্ভবত তিনটি) সমস্যা রয়েছে যা আমি বিশ্বাস করি যে চ্যাট বার্তা প্রেরণে আমার লক্ষ্যটি সফল হতে আমাকে বাধা দেয়।

  1. // finishes auth processডকুমেন্টেশনের মতো উল্লিখিত প্রক্রিয়াটি ডকুমেন্টেশনের বর্ণনার সাথে মেলে না (ফেসবুক থেকে আমার এসএসএল / টিএলএস ভিত্তিক সাফল্যের বার্তা পাওয়ার পরে আমি কোনও স্থগিত পাচ্ছি না।)
  2. কীভাবে 'চ্যাট বার্তা প্রেরণ করুন' -র অংশটি কীভাবে সেট আপ করা উচিত তা আমার কোনও ধারণা নেই এবং যেহেতু আমি ফেসবুকের কোনও বার্তা পাইনি তবে কী ভুল হতে পারে তা বলা শক্ত।

এখানে আমার কোডটি পুরোপুরি, পেস্টবিনে

আমার কাছে এক্সএমপি_লগিন অনুমতি এবং এই জাতীয় .. যোগ করার জন্য কিছু সহায়ক রয়েছে স্পষ্টতার জন্য মুছে ফেলা হয়েছে।

গ্লোবাল ভেরিয়েবল:

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আমার লেখকের টোকেন এবং ব্যবহারকারীর নামকে বৈশ্বিক ভেরিয়েবলগুলিতে সেট করে। আথটোকেন কাজ করে।

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
@ ড্যানিয়েল হিলগার্থ হিহ, ভাল .. কানেক্টের প্রথম অংশটি প্রয়োজন নাও হতে পারে তবে সি # তে এটি কীভাবে করা যায় তার কোনও কার্যকরী উদাহরণ নেই তাই আমি ভেবেছিলাম যে আমি ফেসবুক চ্যাট করার চেষ্টা করছি এমন কারও জন্য অবশ্যই সেখানে উপস্থিত থাকব! i সি #। আমি একটি কোড বেসে সবকিছু লিখতে পারতাম তবে এটি খুব বেশি দেখা যায় না।
ম্যাগনাস কার্লসন

6
আপনি যদি কোনও উত্তর চান তবে আমি আপনাকে পরামর্শ দিচ্ছি যে এই পোস্টটিতে কোডটি খালি করে ফেলুন সমস্যাটি বোঝার জন্য এটির ন্যূনতম কেবলমাত্র to বাকি কোডটি (যেমন অন্যরা এটি পুনরুত্পাদন করতে সক্ষম হবেন) আপনি পেস্টবিনে রাখতে পারেন এবং এটি আপনার পোস্ট থেকে লিঙ্ক করতে পারেন।
ড্যানিয়েল এএ পেলসেমেকার

4
আপনার কোডটি সম্পূর্ণ নয়, তাই আমি নিয়ন্ত্রণ প্রবাহটি অনুসরণ করতে পারি না। দয়া করে ডিবাগ এক্সএমএল সংযুক্ত করুন, আপনি সার্ভারে কী প্রেরণ করবেন এবং কী ফিরে পাবেন। আপনি কেন এখান থেকে একটি বিদ্যমান এক্সএমপিপি লাইব্রেরি ব্যবহার করছেন না যা আপনার জন্য সমস্ত কঠোর পরিশ্রম করে? xmpp.org/xmpp-software/libraries
অ্যালেক্স

4
@ মাটিসিসিরো চ্যাট.ফেসবুক.কম xmpp সার্ভারটি ফেসবুক অনুসারে 6 মাসের মধ্যে বন্ধ হতে চলেছে।
ম্যাগনাস কার্লসন

11
@ কারি আপনার এই সমাধানটি দিয়ে যাওয়া উচিত নয়। পরিবর্তে agsXMPP এর মতো একটি লাইব্রেরি ব্যবহার করুন। তবে ফেসবুক চ্যাট সার্ভারটি বন্ধ করে দেওয়ার পরে এই সমস্ত সমাধান ছয় মাসের মধ্যে কাজ বন্ধ করবে।
ম্যাগনাস কার্লসন

উত্তর:


1

এখন নতুন এপি আছে। মেসেঞ্জার প্ল্যাটফর্ম কীভাবে কাজ করে? যখন কোনও ব্যক্তি মেসেঞ্জারে কোনও ব্যবসায়ের কাছে একটি বার্তা পাঠায় এবং যতক্ষণ না এই পৃষ্ঠাটি কোনও অ্যাপ্লিকেশনটি আংশিক বা সম্পূর্ণ কথোপকথনের স্বয়ংক্রিয়ভাবে ব্যবহার করে, নিম্নলিখিতটি ঘটবে। ফেসবুক সার্ভারটি ব্যবসায় সার্ভারের ইউআরএলে ওয়েব হুকগুলি প্রেরণ করে, যেখানে বার্তা অ্যাপ্লিকেশনটি হোস্ট করা আছে। প্রেরণ API ব্যবহার করে অ্যাপটি ম্যাসেঞ্জারে থাকা ব্যক্তিকে প্রতিক্রিয়া জানাতে পারে। এইভাবে, বিকাশকারীগণ একটি স্বয়ংক্রিয় প্রবাহের মাধ্যমে লোককে নেতৃত্ব দেওয়ার জন্য গাইডড কথোপকথন তৈরি করতে পারে বা ম্যাসেঞ্জারে আপনার এজেন্ট এবং আপনার ব্যবসায়ের উপস্থিতিগুলির মধ্যে একটি সেতু হিসাবে পরিবেশন করতে একটি অ্যাপ্লিকেশন তৈরি করতে পারে।

মেসেঞ্জার প্ল্যাটফর্মটি ব্যবহারের জন্য কোনও অর্থ প্রদানের প্রয়োজন নেই। এটি ব্যবসায়ের জন্য তাদের গ্রাহকদের কাছ থেকে অনুসন্ধানগুলি পরিচালনা করা। একবার আপনার গ্রাহকদের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার অভিজ্ঞতা তৈরি করার পরে, আপনি তারপরে লোককে আপনার অভিজ্ঞতায় আনার জন্য বিজ্ঞাপনগুলি ব্যবহার করতে পারেন, উদাহরণস্বরূপ ক্লিক-টু-ম্যাসেঞ্জার বিজ্ঞাপন বা ইনবক্স বিজ্ঞাপনগুলি।

ব্যবসায়ের অভিজ্ঞতার জন্য মেসেঞ্জার দেখতে কেমন? আমাদের একটি নমুনা ইকমার্স ব্যবসা রয়েছে যা আপনি মেসেঞ্জারে চ্যাট করতে পারেন মূল কোস্ট পোশাক হিসাবে।

নমুনা ব্যবসায় এখানে চ্যাট করুন

আমি কীভাবে শুরু করব? আপনি একটি পরীক্ষা পৃষ্ঠা এবং পরীক্ষা অ্যাপ্লিকেশন তৈরি করে শুরু করতে পারেন যা মেসেঞ্জারে আপনার অভিজ্ঞতা চেষ্টা করতে দেয়। আমাদের কাছে কয়েকটি উদাহরণ রয়েছে যা আপনাকে শুরু করতে পারে। আপনার অ্যাপটি একবার মোতায়েনের জন্য প্রস্তুত হয়ে গেলে, আপনি এটি পর্যালোচনার জন্য জমা দিতে পারেন। আপনার অ্যাপ্লিকেশনটি যখন আমাদের পর্যালোচনা প্রক্রিয়াটি পাস করবে, তখন এটি জনসাধারণের সাথে যোগাযোগের জন্য প্রস্তুত হবে।

শুরু করার জন্য, আপনাকে ম্যাসেঞ্জার, একটি ফেসবুক পৃষ্ঠা এবং একটি ইউআরএল দরকার যেখানে ওয়েব হুকগুলি প্রেরণ করা হবে।

আপনাকে শুরু করার জন্য উপরের অভিজ্ঞতাটিকে আপনার পরীক্ষার পৃষ্ঠায় স্থাপন করার জন্য এখানে ধাপে ধাপে গাইড।

তৈরি করতে প্রস্তুত? এবার শুরু করা যাক

https://developers.facebook.com / প্রোডাক্টস / ম্যাসেঞ্জার /

https://developers.facebook.com/docs/mes যাত্রী- প্ল্যাটফর্ম / রেফারেন্স/send-api/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.