Library for XMPP protocol connections (Jabber) for PHP.
- PHP >= 5.6
- psr/log
- (optional) psr/log-implementation - like monolog/monolog for logging
Install Composer and then
composer require zorn-v/xmpp
You can check example.php
for auto reply bot example
This library uses an object to hold options:
use Fabiang\Xmpp\Options;
$options = new Options($address);
$options->setUsername($username)
->setPassword($password);
The server address must be in the format myjabber.com:5222
.
If the server supports TLS the connection will automatically be encrypted.
If you want to use SOCKS proxy you can set it by
$options->setSocksProxyAddress('localhost:9050');
or
$options->setSocksProxyAddress('username:password@localhost:9050');
You can also pass a PSR-3 compatible object to the options object:
$options->setLogger($logger);
The client manages the connection to the Jabber server and requires the options object:
use Fabiang\Xmpp\Client;
$client = new Client($options);
// optional connect manually
$client->connect();
You can use getMessages()
for get all incoming messages
print_r($client->getMessages());
Array
(
[0] => Array
(
[from] => [email protected]/resource
[message] => Message text
)
)
For sending data you just need to pass a object that implements Fabiang\Xmpp\Protocol\ProtocolImplementationInterface
:
use Fabiang\Xmpp\Protocol\Roster;
use Fabiang\Xmpp\Protocol\Presence;
use Fabiang\Xmpp\Protocol\Message;
// fetch roster list; users and their groups
$client->send(new Roster);
// set status to online
$client->send(new Presence);
// send a message to another user
$message = new Message;
$message->setMessage('test')
->setTo('[email protected]');
$client->send($message);
// join a channel
$channel = new Presence;
$channel->setTo('[email protected]/nickname')
->setPassword('channelpassword');
$client->send($channel);
// send a message to the above channel
$message = new Message;
$message->setMessage('test')
->setTo('[email protected]')
->setType(Message::TYPE_GROUPCHAT);
$client->send($message);
After all you should disconnect:
$client->disconnect();
If you like this library and you want to contribute, make sure the unit-tests and integration tests are running. Composer will help you to install the right version of PHPUnit and Behat.
composer install
After that:
./vendor/bin/phpunit
./vendor/bin/behat
New features should always tested with Behat.
BSD-2-Clause. See the LICENSE.
- Better integration of channels
- Factory method for server addresses
- improve documentation