BEOBACHTEN SIE https://developers.facebook.com/docs/chat/
Der Service und die API, die in diesem Dokument behandelt werden, sind mit der Veröffentlichung der Platform API v2.0 veraltet. Sobald Version 1.0 veraltet ist, ist chat.facebook.com nicht mehr verfügbar.
Wichtig! Lesen Sie dies und Sie möchten wahrscheinlich etwas völlig anderes tun als alles, was mit dieser Frage zu tun hat.
Ich erstelle einen Chat mit WebForms C #, der eine Verbindung zur Facebook-Chat-API herstellt.
Ich habe mir auch diese SO-Frage (und alle Links) angesehen. Einige Teile sind nicht mehr relevant, da Facebook dies auth_token
jetzt benötigt .
Um dies zu replizieren, sollten Sie eine Facebook-Webanwendung einrichten appId
und das Benutzerkonto mit dem Berechtigungssatz xmpp_login verwenden. Dann erstellen Sie eineChat.aspx
mit Code dahinter und fügen Sie diesen Code entsprechend ein. Und ersetzen Sie die fest codierten Benutzer, mit denen Sie interagieren möchten.
Ich habe zwei (vielleicht drei) Probleme, von denen ich glaube, dass sie mich daran hindern, mein Ziel, eine Chat-Nachricht zu senden, zu erreichen.
- Der
// finishes auth process
in der Dokumentation angegebene Prozess stimmt nicht mit der Dokumentationsbeschreibung überein (ich erhalte keine Antwort, nachdem ich meine SSL / TLS-basierte Erfolgsnachricht von Facebook erhalten habe.) - Ich habe keine Ahnung, wie der Teil "Chat-Nachricht senden" eingerichtet werden soll, und da ich keine Nachrichten von Facebook erhalte, ist es schwer zu sagen, was möglicherweise falsch ist.
Hier ist mein Code in seiner Gesamtheit auf PasteBin .
Ich habe auch einige Helfer zum Hinzufügen von xmpp_login-Berechtigungen und dergleichen. Aus Gründen der Übersichtlichkeit entfernt.
Globale Variablen:
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\"/>";
Dann Page_Load
werden (oder sollen) in allen erforderlichen Schritten ausgeführt. Bemerkenswert ist die SendMessage("test");
. Ich habe nur versucht, es dort abzulegen, um zu sehen, ob es erfolgreich ist, eine Chat-Nachricht zu senden ... SetUserNameAndAuthToken
setzt mein Authentifizierungstoken und meinen Benutzernamen auf globale Variablen. Das AuthToken funktioniert.
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);
}
Ich erhalte eine Antwort und sende die Antwort an den Server:
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;
}
Dies dauert 1 Minute 40 Sekunden ... und die Antwort lautet:
<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Schließlich mache ich den 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;
}
Alle Antworten sind ""
. Betrachtet man die Read
Methode in SendWithSsl
: Es sind 0 Bytes. Der Versuch, eine Nachricht zu senden, gibt mir auch 0 Bytes. Lesen Sie Daten von Facebook. Ich habe keine Ahnung warum?
quelle
Antworten:
Es gibt jetzt eine neue API. Wie funktioniert die Messenger-Plattform? Wenn eine Person über Messenger eine Nachricht an ein Unternehmen sendet und diese Seite eine App verwendet, um Konversationen teilweise oder vollständig zu automatisieren, geschieht Folgendes. Der Facebook-Server sendet Webhooks an die URL des Business-Servers, auf dem die Messaging-App gehostet wird. Über die Sende-API kann die App auf die Person in Messenger antworten. Auf diese Weise können Entwickler geführte Konversationen erstellen, um Personen durch einen automatisierten Ablauf zu führen, oder eine App erstellen, die als Brücke zwischen Ihren Agenten und Ihrer Geschäftspräsenz in Messenger dient.
Für die Verwendung der Messenger-Plattform ist keine Zahlung erforderlich. Es ist für Unternehmen gedacht, um Anfragen von ihren Kunden zu bearbeiten. Sobald Sie Ihre Erfahrung für die Interaktion Ihrer Kunden aufgebaut haben, können Sie Anzeigen nutzen, um Menschen zu Ihrer Erfahrung zu bringen, z. B. Click-to-Messenger-Anzeigen oder Posteingangsanzeigen.
Wie sieht eine Messenger for Business-Erfahrung aus? Wir haben ein Beispiel für ein E-Commerce-Geschäft, mit dem Sie über Messenger chatten können: Original Coast Clothing.
Chatten Sie hier mit Sample Business
Wie fange ich an? Sie können beginnen, indem Sie eine Testseite und eine Test-App erstellen, mit denen Sie Ihre Erfahrungen in Messenger testen können. Wir haben einige Beispiele, die Ihnen den Einstieg erleichtern können. Sobald Ihre App bereit zur Bereitstellung ist, können Sie sie zur Überprüfung einreichen. Wenn Ihre App unseren Überprüfungsprozess besteht, ist sie bereit, mit der Öffentlichkeit zu interagieren.
Um loszulegen, benötigen Sie Messenger, eine Facebook-Seite und eine URL, an die die Webhooks gesendet werden sollen.
Hier finden Sie eine schrittweise Anleitung zum Bereitstellen der oben genannten Erfahrung auf Ihrer Testseite, um Ihnen den Einstieg zu erleichtern.
Bereit zu bauen? Loslegen
https://developers.facebook.com/products/messenger/
https://developers.facebook.com/docs/messenger-platform/reference/send-api/
quelle