OBSERVER https://developers.facebook.com/docs/chat/
Le service et l'API couverts par ce document sont devenus obsolètes avec la sortie de Platform API v2.0. Une fois la version 1.0 obsolète, chat.facebook.com ne sera plus disponible.
Important! Lisez ceci et vous voudrez probablement faire quelque chose de complètement différent de tout ce qui a à voir avec cette question.
Je crée un chat avec WebForms C # en me connectant à l'API Facebook Chat.
J'ai également regardé cette question SO (et tous les liens). Certaines parties ne sont plus pertinentes puisque Facebook l'exige auth_token
maintenant.
Pour reproduire cela, vous devez configurer une application Web Facebook, utiliser le appId
et un compte utilisateur avec le jeu d'autorisations xmpp_login. Ensuite, créez un Chat.aspx
avec le code derrière et collez ce code en conséquence. Et remplacez les utilisateurs codés en dur avec lesquels interagir.
J'ai deux (peut-être trois) problèmes qui, selon moi, m'empêchent de réussir dans mon objectif d'envoyer un message de chat.
- Le processus indiqué
// finishes auth process
dans la documentation ne correspond pas à la description de la documentation (je ne reçois aucune réponse après avoir reçu mon message de réussite basé sur SSL / TLS de Facebook.) - Je n'ai aucune idée de la façon dont la partie `` envoyer un message de discussion '' devrait être configurée, et comme je ne reçois aucun message de Facebook, il est difficile de dire ce qui pourrait ne pas fonctionner.
Voici mon code dans son intégralité, sur PasteBin .
J'ai aussi quelques helpers pour ajouter des permissions xmpp_login et autres .. supprimés pour plus de clarté.
Variables globales:
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\"/>";
Ensuite, Page_Load
toutes les étapes requises sont (ou sont censées être) effectuées. Il convient de noter le SendMessage("test");
. J'ai juste essayé de le mettre là pour voir s'il réussirait à envoyer un message de chat ... SetUserNameAndAuthToken
définit mon jeton d'authentification et mon nom d'utilisateur sur des variables globales. L'AuthToken fonctionne.
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);
}
Donc j'obtiens une réponse puis j'envoie la réponse au serveur:
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;
}
Cela prend 1 minute 40 secondes ... et la réponse est:
<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Enfin je fais le 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;
}
Toutes les réponses sont ""
. En regardant la Read
méthode dans SendWithSsl
: c'est 0 octet. Essayer d'envoyer un message me donne également 0 octet Lire les données de Facebook. Je n'ai aucune idée de pourquoi?
la source
Réponses:
Il y a maintenant une nouvelle API. Comment fonctionne la plateforme Messenger? Lorsqu'une personne envoie un message à une entreprise sur Messenger et tant que cette page utilise une application pour automatiser partiellement ou entièrement les conversations, ce qui suit se produit. Le serveur Facebook envoie des webhooks à l'URL du serveur d'entreprise, où l'application de messagerie est hébergée. À l'aide de l'API d'envoi, l'application peut répondre à la personne sur Messenger. De cette manière, les développeurs peuvent créer des conversations guidées pour guider les gens à travers un flux automatisé ou créer une application pour servir de pont entre vos agents et votre présence commerciale sur Messenger.
L'utilisation de la plate-forme Messenger ne nécessite aucun paiement. Il est destiné aux entreprises pour traiter les demandes de leurs clients. Une fois que vous avez construit votre expérience pour que vos clients interagissent, vous pouvez ensuite tirer parti des publicités pour amener les gens à votre expérience, comme par exemple les publicités Click-to-Messenger ou les publicités Inbox.
À quoi ressemble une expérience Messenger for Business? Nous avons un exemple d'entreprise de commerce électronique avec lequel vous pouvez discuter sur Messenger appelé Original Coast Clothing.
Discutez avec un exemple d'entreprise ici
Comment commencer? Vous pouvez commencer en créant une page de test et une application de test qui vous permettent de tester votre expérience dans Messenger. Nous avons quelques exemples qui peuvent vous aider à démarrer. Une fois que votre application est prête à être déployée, vous pouvez la soumettre pour examen. Lorsque votre application aura réussi notre processus d'examen, elle sera prête à interagir avec le public.
Pour commencer, vous aurez besoin de Messenger, d'une page Facebook et d'une URL vers laquelle les webhooks doivent être envoyés.
Voici un guide étape par étape pour déployer l'expérience ci-dessus dans votre page de test pour vous aider à démarrer.
Prêt à construire? Commencer
https://developers.facebook.com/products/messenger/
https://developers.facebook.com/docs/messenger-platform/reference/send-api/
la source