Ich habe Ejabberd mit Testbenutzern und läuft, und es funktioniert gut. Ich möchte ein Modul schreiben, die Nachrichten abfangen und ändern Sie sie wie folgt:So filtern Sie Nachrichten in Ejabberd
- abfangen „Botschaften“
- sie in eine PHP-Datei senden
- bekommen das Ergebnis aus der gleichen PHP-Datei (sofort)
- die Nachricht Strophe ändern und es auf den Draht zu dem
die ejabberd Dokumentation ist schwach und Tutorials sind nicht existent Empfänger senden. Können Sie mir einen Beispielcode geben, der das tut? Ich kann dann herausfinden, wie ich es für meine Bedürfnisse konfigurieren kann.
Danke ein Bündel!
Adil
Danke gleber. Ich bin schon so weit gegangen und ich kann von der INFO_MSG sehen, dass mein packet_interceptor aufgerufen wird. Wie kann diese XML-Daten an PHP senden (über? Xml =) und abrufen Sie die resultierende XML und dann an den Empfänger übergeben? –
Adil
Sie sollten wahrscheinlich ein http: request/1,2,3 verwenden, um Ihr PHP-Skript aufzurufen. IIRC on_filter_packet wird im selben Prozess wie der Routerprozess von ejabberd aufgerufen, also sollten Sie dort nichts zu zeitaufwendig machen. Eine Lösung besteht darin, einen neuen Prozess zu erzeugen, ein "Drop" -Atom zurückzugeben (um das Paket zu löschen), und wenn die modifizierte Zeilengruppe von PHP zurückgegeben wird, sendet sie es mit "ejabberd_router: route (From, To, Packet)". Wahrscheinlich wird on_filter_packet für das neue Paket, das Sie gesendet haben, erneut aufgerufen. Achten Sie also darauf, es zu erkennen und nicht zweimal zu verarbeiten. – gleber
Um das Paket zu erkennen, können Sie ' ' in ein Paket mit Ihren eigenen' xmlns' einfügen. –
gleber