Sonntag, 20. Oktober 2013

Facebook Nachricht senden

Hinweis: Seit der Veröffentlichung der Facebook API 2.0 im April 2014 ist die Chatfunktion deaktiviert, und damit leider dieser Code nicht mehr lauffähig.

In diesem Post möchte ich zeigen, wie man mit C# Nachrichten über den Facebook Chat versendet. Da "normale" Nachrichten und Chat Nachrichten jedoch über das gleiche Prinzip versendet werden, können hiermit also nicht nur Chat Nachrichten versendet werden.
Voraussetzung ist eine aufgebaute Verbindung zum Facebook Chat mittels XMPP, weiterhin könnte der vorige Post nützlich sein, in dem gezeigt wird, wie die Jids der Freunde ausgelesen werden, welche zum Senden benötigt werden.

Ist die Verbindung zu Facebook aufgebaut, lassen sich Nachrichten mit einer Codezeile senden, wir verpacken diese in einer Funktion:

public void SendMessage(string msg, string receiverName)
{
    xmpp.Send(new agsXMPP.protocol.client.Message(new Jid(receiverName), agsXMPP.protocol.client.MessageType.chat, msg));
}

Beachtet, dass die Jid des Empfängers mit einem "-" beginnen muss. Folgende Zeile schickt beispielsweise eine Nachricht an mich:

SendMessage("Hallo Oliver.", "-100006476847029@chat.facebook.com");

Der komplette Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using agsXMPP;
using agsXMPP.protocol.client;
using agsXMPP.protocol.iq.roster;
using agsXMPP.Collections;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        XmppClientConnection xmpp = new XmppClientConnection("chat.facebook.com");

        private void Form1_Load(object sender, EventArgs e)
        {
            xmpp.OnLogin += new ObjectHandler(OnLogin);
            xmpp.Open("name", "password");
        }

        private void OnLogin(object sender)
        {
            SendMessage("Hallo Oliver.", "-100006476847029@chat.facebook.com");
        }

        public void SendMessage(string msg, string receiverName)
        {
            xmpp.Send(new agsXMPP.protocol.client.Message(new Jid(receiverName), agsXMPP.protocol.client.MessageType.chat, msg));
        }
    }
}

Keine Kommentare:

Kommentar veröffentlichen