# amarisoft-api

> Async Await API for Amarisoft Websocket API

Latest version **1.0.0** (published 2020-10-26) · LGPL-3.0-only license · 0 weekly downloads

## Install

```sh
npm install amarisoft-api
pnpm add amarisoft-api
yarn add amarisoft-api
bun add amarisoft-api
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2020-10-26 |
| First published | 2020-10-26 |
| Weekly downloads | 0 |
| License | LGPL-3.0-only |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 6.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Simon Erni |
| Maintainers | simonerni |

## Links

- npm: https://www.npmjs.com/package/amarisoft-api
- npm.io page: https://npm.io/package/amarisoft-api

## Dependencies (3)

- [rxjs](https://npm.io/package/rxjs.md) ^6.6.3
- [nanoid](https://npm.io/package/nanoid.md) ^3.1.16
- [nodejs-websocket](https://npm.io/package/nodejs-websocket.md) ^1.7.2

## Recent versions

- 1.0.0 (latest) — 2020-10-26

## README

# Amarisoft Websocket API

This package is intended to easily build applications consuming the websocket API of the Amarisoft Callboxes.

## Installation

```
npm install amarisoft-api
```

## Usage

### Connection Setup

To connect to a server, e.g. the MME endpoint, create a new `AmarisoftServer` object. 

```
let server = new AmarisoftServer('ws://localhost:9000/');
await server.connect();
```

To connect with a password, use:
```
let server = new AmarisoftServer('ws://localhost:9000/', 'mysecurepassword');
await server.connect();
```

### Send a Message

The following example shows how to send a message and get it's reply (already parsed from JSON).

```
let result = await server.sendMessage({message: "myMessage"});
```


### Read Logs
To register for log events, the RxJS library is used. You can pass your own RxJS observables as a parameter to `registerForLogs`, or just use function callbacks.
```
await server.registerForLogs(console.log);
```
The log events are already parsed and are passed individually to your observer. The object contains:

- **data** - Array of Strings, one element corresponds to one log line
- **src** - String, Which server generated this log event
- **idx** - Number, A unique index identifying the log event
- **level** - Number, Which log level this corresponds to
- **timestamp** Number, When this log event was generated (depends on your log configuration)
- **layer** String, Which layer generated this event
- **dir** - Optional String, which direction this message corresponds to 

Depending on the component, more attributes are included. Refer to the Amarisoft manual for details.

### React on Events
To register on events, use the following as an example:

```
await server.registerForEvent("eps_bearer_notification", console.log);
```

This would now listen to events for `eps_bearer_notification` and print the events to the console. Again, you can pass any RxJS observable as a 2nd parameter.

To stop receiving events (on all observers, they are closed), use:

```
await server.unRegisterForEvent("eps_bearer_notification");
```

---
_Source: https://npm.io/package/amarisoft-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
