OBSERWUJ https://developers.facebook.com/docs/chat/
Usługa i interfejs API, których dotyczy ten dokument, zostały wycofane wraz z wydaniem Platform API w wersji 2.0. Po wycofaniu wersji 1.0 chat.facebook.com nie będzie już dostępny.
Ważny! Przeczytaj to i prawdopodobnie zechcesz zrobić coś zupełnie innego niż cokolwiek, co ma związek z tym pytaniem.
Tworzę czat z WebForms C # łącząc się z Facebook Chat API.
Spojrzałem również na to pytanie SO (i wszystkie linki). Niektóre części nie są już istotne, ponieważ Facebook wymaga auth_token
teraz.
Aby to powielić, należy skonfigurować aplikację internetową na Facebooku, użyć appId
konta użytkownika i z ustawieniem uprawnień xmpp_login. Następnie utwórz Chat.aspx
kod z kodem i wklej go odpowiednio. I zastąp zakodowanych na stałe użytkowników, z którymi chcesz się komunikować.
Mam dwa (może trzy) problemy, które moim zdaniem uniemożliwiają mi osiągnięcie celu, jakim jest wysłanie wiadomości na czacie.
- Proces odnotowany
// finishes auth process
w dokumentacji nie jest zgodny z opisem dokumentacji (nie otrzymuję żadnych odpowiedzi po otrzymaniu wiadomości o powodzeniu opartej na protokole SSL / TLS z Facebooka). - Nie mam pojęcia, jak należy skonfigurować część „wyślij wiadomość na czacie”, a ponieważ nie otrzymuję żadnych wiadomości z Facebooka, trudno powiedzieć, co może być nie tak.
Mam też pomocników do dodawania uprawnień xmpp_login i tym podobnych… usuniętych dla przejrzystości.
Zmienne globalne:
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\"/>";
Następnie Page_Load
wszystkie wymagane kroki są (lub mają być) wykonywane. Warto zauważyć, że SendMessage("test");
. Po prostu próbowałem go tam umieścić, aby sprawdzić, czy uda się wysłać wiadomość na czacie ... SetUserNameAndAuthToken
ustawia mój token uwierzytelniania i nazwę użytkownika na zmienne globalne. AuthToken działa.
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);
}
Otrzymuję więc odpowiedź, a następnie wysyłam odpowiedź na serwer:
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;
}
Trwa to 1 minutę i 40 sekund ... a odpowiedź to:
<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Wreszcie wykonuję 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;
}
Wszystkie odpowiedzi są ""
. Patrząc na Read
metodę w SendWithSsl
: to 0 bajtów. Próba wysłania wiadomości daje mi również 0 bajtów Odczytanych danych z Facebooka. Nie mam pojęcia, dlaczego?
źródło
Odpowiedzi:
Jest teraz nowy interfejs API. Jak działa platforma Messenger? Gdy dana osoba wyśle wiadomość do firmy na Messengerze i jeśli ta strona będzie używać aplikacji do częściowego lub całkowitego zautomatyzowania rozmów, nastąpi co następuje. Serwer Facebooka wysyła elementy webhook na adres URL serwera biznesowego, na którym hostowana jest aplikacja do obsługi wiadomości. Korzystając z Send API, aplikacja może odpowiedzieć osobie na Messengerze. W ten sposób programiści mogą budować rozmowy kierowane, aby prowadzić ludzi przez automatyczny przepływ lub stworzyć aplikację, która będzie służyć jako pomost między agentami a obecnością Twojej firmy w Messengerze.
Korzystanie z platformy Messenger nie wymaga żadnej opłaty. Jest przeznaczony dla firm do obsługi zapytań od swoich klientów. Po zbudowaniu wrażeń, z którymi Twoi klienci będą mogli wchodzić w interakcje, możesz wykorzystać Reklamy, aby przyciągnąć ludzi do swoich doświadczeń, na przykład reklamy typu kliknij, aby wysłać wiadomość lub reklamy w skrzynce odbiorczej.
Jak wygląda Messenger for Business? Mamy przykładową firmę eCommerce, z którą możesz rozmawiać na Messengerze o nazwie Original Coast Clothing.
Porozmawiaj tutaj z Przykładową Firmą
Jak mam zacząć? Możesz rozpocząć od utworzenia strony testowej i aplikacji testowej, która pozwoli Ci wypróbować swoje doświadczenie w programie Messenger. Mamy kilka przykładów, od których możesz zacząć. Gdy aplikacja będzie gotowa do wdrożenia, możesz przesłać ją do sprawdzenia. Gdy Twoja aplikacja przejdzie nasz proces sprawdzania, będzie gotowa do interakcji z opinią publiczną.
Aby rozpocząć, potrzebujesz Messengera, strony na Facebooku i adresu URL, na który mają być wysyłane webhooki.
Oto przewodnik krok po kroku, jak wdrożyć powyższe doświadczenie na stronie testowej, aby rozpocząć.
Gotowy do budowania? Zaczynaj
https://developers.facebook.com/products/messenger/
https://developers.facebook.com/docs/messenger-platform/reference/send-api/
źródło