---
# System prepended metadata

title: PHP SDK

---

A PHP SDK for SendingNetwork.

## Installation

```
composer require sending-network/sdn-php-sdk
```

## Usage
### Prepare a configuration file
Provide server node url, wallet address, private key and developer key in file bot.creds.json:
```json
{
    "nodeUrl": "https://example.com",
    "walletAddress": "<WALLET_ADDRESS>",
    "privateKey": "<PRIVATE_KEY>",
    "developerKey": "<DEVELOPER_KEY>"
}
```

### Create an instance of `SDNClient`
```php
require('vendor/autoload.php');
use SdnSdk\SDNClient;

$json_data = file_get_contents("bot.creds.json");
$config = json_decode($json_data,true);
$client = new SDNClient($config['nodeUrl']);

// login
$token = $client->login($config['walletAddress'], $config['privateKey'], $config['developerKey']);

// add listener for events
$client->addListener(function ($event) {
    // process room event here
    print_r($event);
}, "m.room.message");

// start listen
$client->listenForever();
```

### Call API functions
```php
// create new room
$client->createRoom("room name");

// invite user
$client->getRoom($roomId)->inviteUser($userId);

// send message
$client->getRoom($roomId)->sendText("hello");
```

## Examples
See more use cases in `examples` directory.


## SDNClient API

### Login DID

```php
function login(string $walletAddress, string $privateKey, string $developerKey)
```

input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| walletAddress | string | user wallet address    | true     |
| privateKey | string | account private key    | true     |
| developerKey | string | developer key    | true     |

output params：

| Name     | Type        | Description | Required |
| :------- | :---------- | :---------- | :------- |
| access_token | string | access token | true     |


### Create Room

```php
function createRoom(string $name, bool $isPublic = false, array $invitees = [])
```

input params:

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| name | string | room name    | true     |
| isPublic | string | public or private  | false    |
| invitees | string array | array of user ids to invite | false |

output params:

| Name     | Type        | Description | Required |
| :------- | :---------- | :---------- | :------- |
| room | Room | Room Object  | true    |


### Join Room
```php
function joinRoom(string $roomIdOrAlias)
```
input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| roomIdOrAlias | string | room id or alias    | true     |

output params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| room | Room | Room Object  | true    |


### Get Room Object
```php!
function getRoom(string $roomId)
```

input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| roomId | string | room id  | true    |

output params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| room | Room | Room Object  | true    |


## Room API

### Invite User
```php
function inviteUser(string $userId)
```
input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| userId | string | user id  | true    |

output params: none


### Kick User
```php
function kickUser(string $userId)
```
input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| userId | string | user id  | true    |

return values: none


### Leave Room
```php
function leave()
```

input params：none
output params: none


### Get Room Memebers
```php
 function getJoinedMembers()
```

input params：none
output params:

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| roomMemberInfo | array of members | room member info | true |


### Send Message
```php
function sendText(string $text)
```

input params：

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| text | string | message to send    | true     |

output params:

| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| eventId | string | event id    | true     |


## User API

### Get Displayname
```php
function getDisplayName()
```
input params：none

output params:
| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| displayname | string | user displayname  | true    |

### Set Displayname
```php
function setDisplayName(string $displayName)
```
input params:
| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| displayname | string | user displayname  | true    |

output params: none

### Get Avatar Url
```php
function getAvatarUrl()
```
input params：none

output params:
| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| avatarUrl | string | user avatar url  | true    |

### Set Avatar Url
```php
function setAvatarUrl(string $avatarUrl)
```
input params:
| Name    | Type   | Description | Required |
| :------ | :----- | :---------- | :------- |
| avatarUrl | string | user avatar url  | true    |

output params: none

