Con TIM Open puoi partecipare alla community degli sviluppatori, pubblicare le tue soluzioni su TIM Digital Store, utilizzare e rivendere i servizi di TIM.

Guarda anche

Panoramica

Introduzione

L’API WebRTC–RealTimeCommunication utilizza l’archittetura REST. Essa fornisce URL orientate alle risorse e utilizza codice di risposta HTTP per indicare eventuali errori. Tali servizi permettono di instaurare una comunicazione tra client permettendo loro di effettuare chiamate, videochiamate, trasferimento di file e screen sharing.

Sicurezza

Autenticazione

L’API WebRTC–RealTimeCommunication descritta in questo documento adotterà il meccanismo di autenticazione che si basa su un API-Key. L’API-Key sarà fornita nel parametro KeyId dell’header http della richiesta.

Manage Companies

Companies

La risorsa Company esposta tramite questa API. Le company sono identificate da un ID univoco e sono associate ad un companyName.

Create - Compnay
POST/webrtc/v2/companies

Crea una nuova Company. Nella richiesta è necessario specificare l’admin della company. La risposta conterrà l’ID generato della company creata e il companyName da utilizzare nelle successive richieste relative a quella company. Lo sviluppatore potrà creare più company e ognuna di esse verrà trattata in maniera individuale.

Example URI

POST /webrtc/v2/companies
Request
HideShow
Headers
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "companyName": "MyCompany",
  "companyInfo": "Hello, world!",
  "urlRootPath": "Helloworld",
  "admin": {
    "firstname": "John",
    "lastname": "Doe",
    "email": "john@doe.com"
  }
}
Schema
{
  "type": "object",
  "properties": {
    "companyName": {
      "type": "string",
      "description": "Nome della company da creare"
    },
    "companyInfo": {
      "type": "string",
      "description": "Informazioni aggiuntive sulla company"
    },
    "urlRootPath": {
      "type": "string",
      "description": "Sotto dominio del link creato per la connessione alle videochiamate."
    },
    "admin": {
      "type": "object",
      "properties": {
        "firstname": {
          "type": "string",
          "description": "Nome"
        },
        "lastname": {
          "type": "string",
          "description": "Cognome"
        },
        "email": {
          "type": "string",
          "description": "Email."
        }
      },
      "required": [
        "email"
      ]
    }
  },
  "required": [
    "companyName",
    "urlRootPath"
  ],
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "company": {
    "companyName": "Stark"
  },
  "message": "Company Stark creata con successo"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Manage Users

Gestisci gli utenti di una Company precedentemente creata.

Users

Gli utenti sono identificati da un random ID univoco. Ciascun utente deve avere un ruolo.

  • Ruoli
    • basic - questo utente può usare solo la chiamata one-to-one
    • guest - questo utente ha restrizioni rispetto all’utente basic, per esempio, non può invitare altri utenti in una videochiamata

Create
POST/webrtc/v2/companies/{companyName}/users

Crea un nuovo utente.

Example URI

POST /webrtc/v2/companies/MyCompany/users
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "firstname": "Jane",
  "lastname": "Doe",
  "nickname": "jane.doe",
  "email": "Hello, world!",
  "role": "basic",
  "language": "it",
  "id": "01234A"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "firstname": {
      "type": "string",
      "description": "Nome dell'utente (max `32` caratteri)"
    },
    "lastname": {
      "type": "string",
      "description": "Cognome dell'utente (max `32` caratteri)"
    },
    "nickname": {
      "type": "string",
      "description": "Verrà visualizzato nel sistema.Se non specificato il sistema ne assegnerà uno random (max `16` caratteri)"
    },
    "email": {
      "type": "string",
      "description": "Email dell'utente."
    },
    "role": {
      "type": "string",
      "description": "Un ruolo valido, valori possibili: `basic` || `guest`"
    },
    "language": {
      "type": "string",
      "description": "Linguaggio dell'utente. Le opzioni disponibili sono \"en\" o \"it\""
    },
    "id": {
      "type": "string",
      "description": "ID utente personalizzato, utile per evitare la mappatura degli utenti Bandyer / Cliente. Se specificato, deve essere unico. Se non specificato, Bandyer genererà un ID casuale per l'utente automaticamente."
    }
  },
  "required": [
    "role"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "usr_783afa70e140"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

List
GET/webrtc/v2/companies/{companyName}/users

Ritorna una lista di ID utenti appartenenti ad una company.

Example URI

GET /webrtc/v2/companies/MyCompany/users
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "user_id_list": [
    "usr_5b63a42e7ec2",
    "usr_e3bf12fd6827"
  ]
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

User

Aggiorna un utente. Qualsiasi valore non fornito sarà invariato.

L’alias non può essere aggiornato

  • Ruoli
    • basic - questo utente può usare solo la chiamata one-to-one
    • guest - questo utente ha restrizioni rispetto all’utente basic, per esempio, non può invitare altri utenti in una videochiamata

Update
PUT/webrtc/v2/companies/{companyName}/users/{idUtente}

Example URI

PUT /webrtc/v2/companies/MyCompany/users/usr_783afa70e140
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

idUtente
string (required) Example: usr_783afa70e140

Identificativo utente.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "firstname": "Hello, world!",
  "lastname": "Hello, world!",
  "nickname": "Hello, world!",
  "email": "Hello, world!",
  "role": "Hello, world!",
  "language": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "firstname": {
      "type": "string",
      "description": "Nome dell'utente (max `32` caratteri)"
    },
    "lastname": {
      "type": "string",
      "description": "Cognome dell'utente (max `32` caratteri)"
    },
    "nickname": {
      "type": "string",
      "description": "Se non specificato il sistema ne assegnerà uno random (max `16` caratteri)"
    },
    "email": {
      "type": "string",
      "description": "Email dell'utente."
    },
    "role": {
      "type": "string",
      "description": "Un ruolo valido, valori possibili: `basic` || `guest`"
    },
    "language": {
      "type": "string",
      "description": "Linguaggio dell'utente. Le opzioni disponibili sono \"en\" o \"it\"."
    }
  },
  "required": [
    "role"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "user": {
    "id": "usr_5b63a42e7ec2",
    "firstName": "Jane",
    "lastName": "Doe",
    "nickname": "jane.doe",
    "email": "john@doe.com",
    "role": "basic"
  }
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Delete
DELETE/webrtc/v2/companies/{companyName}/users/{idUtente}

Elimina un utente

Example URI

DELETE /webrtc/v2/companies/MyCompany/users/usr_783afa70e140
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

idUtente
string (required) Example: usr_783afa70e140

Identificativo utente.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "usr_5b63a42e7ec2",
  "message": "user deleted"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Retrieve
GET/webrtc/v2/companies/{companyName}/users/{idUtente}

Recupera i dettagli di un utente

Example URI

GET /webrtc/v2/companies/MyCompany/users/usr_783afa70e140
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

idUtente
string (required) Example: usr_783afa70e140

Identificativo utente.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "firstname": "Hello, world!",
  "lastname": "Hello, world!",
  "nickname": "Hello, world!",
  "email": "Hello, world!",
  "role": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "firstname": {
      "type": "string",
      "description": "Nome dell'utente (max `32` caratteri)"
    },
    "lastname": {
      "type": "string",
      "description": "Cognome dell'utente (max `32` caratteri)"
    },
    "nickname": {
      "type": "string",
      "description": "Se non specificato il sistema ne assegnerà uno random (max `16` caratteri)"
    },
    "email": {
      "type": "string",
      "description": "Email dell'utente"
    },
    "role": {
      "type": "string",
      "description": "Un ruolo valido, valori possibili: `basic` || `guest`"
    }
  },
  "required": [
    "email",
    "role"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "user": {
    "id": "usr_5b63a42e7ec2",
    "firstName": "Jane",
    "lastName": "Doe",
    "nickname": "jane.doe",
    "email": "john@doe.com",
    "role": "basic"
  }
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Rooms

Una room è una sorta di luogo virtuale in cui gli utenti, identificati al momento della creazione della stanza, possono comunicare. Tramite la room è possibile impostare il tempo massimo della chiamata, opzioni di registrazione e mettersi in ascolto di eventi Web Hooks

Room

  • La Room può trovarsi in uno dei seguenti stati:
    • NOT_RUNNING - La Room non è attualmente eseguita.
    • RUNNING - La Room è in corso.
    • CLOSED - La Room è stata cancellata o finita

Create
POST/webrtc/v2/companies/{companyName}/rooms

Crea un nuova Room. La response ritorna le url da comunicare agli utenti per consentire la connessione alla room. Nota: 30 secondi prima che sia scaduto il tempo tutti i clienti ricevono le notifiche del breve tempo rimasto. Quando la durata scade, la chiamata termina. Il tempo disponibile viene eseguito solo quando gli utenti sono in videochiamata. Se si verificano problemi e la connessione si interrompe, il timer si fermerà. Nota: se è stato abilitato un WebHooks , il room_id restituito nella risposta, dovrà essere salvato per gli eventi hook che si potrebbero ricevere.

Example URI

POST /webrtc/v2/companies/MyCompany/rooms
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "userListInCall": [
    "usre39b045f215f",
    "usrcd4791a26916"
  ],
  "record": "1",
  "duration": "120",
  "description": "A textual description of the rest room created..",
  "directCall": true,
  "initiatorAlias": ""
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "userListInCall": {
      "type": "array",
      "description": "Array delgi identificativi degli utenti che parteciperanno alla room."
    },
    "record": {
      "type": "string",
      "description": "`1` se l'utente vuole registrare la videochiamata, `0` altrimenti."
    },
    "duration": {
      "type": "string",
      "description": "Durata massima in secondi della chiamata. Se non specificato la durata è illimitata mentre il valore minimo è 60 secondi."
    },
    "description": {
      "type": "string",
      "description": "Descrizione della Room."
    },
    "directCall": {
      "type": "boolean",
      "description": "Indica il tipo di link per l'accesso alla room. Se directCall è impostata a  true, lo user avrà accesso diretto alla room e quindi non vedrà la landing page Bandyer con le informazioni sugli utenti invitati e le opzioni. Il default è false"
    },
    "initiatorAlias": {
      "type": "string",
      "description": "Alias del creatore della room (un alias di user valido)"
    }
  },
  "required": [
    "userListInCall"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "result": {
    "room": {
      "room_id": "room_bcca4ae81675",
      "record": 0,
      "duration": 180,
      "description": "Room di test",
      "directCall": "true",
      "user_urls": [
        {
          "user": "usr_389c515887cf",
          "url": "https://sandbox.bandyer.com/connect/direct-rest-call-handler/16b6c8ec0bc8f56efc4ddbcd47"
        },
        {
          "user": "usr_8ceca6057b80",
          "url": "https://sandbox.bandyer.com/connect/direct-rest-call-handler/b7b9cea1bf6dfa01df996e6115"
        }
      ]
    }
  },
  "description": "Room create"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Room

Retrieve
GET/webrtc/v2/companies/{companyName}/rooms/{roomId}

Recupera le informazioni di una Room. Uno dei parametri della response è lo status che può assumere uno dei seguenti valori: NOT_RUNNING la room non è attiva. RUNNING la room è attiva. CLOSED la room è eliminata o terminata (non disponibile).

Altro parametro è la durationUsed che rappresenta quanti secondi la room è nello stato RUNNING. Se la used durationUsed è uguale alla duration lo stato della room sarà CLOSED. La sezione dialInfo contiene informazioni sulle sessioni utenti: il tempo totale della room e utenti, dettaglio per ciascuna sessione (con tempo parziale e numero utenti) e ogni attività utente ed eventi.

Example URI

GET /webrtc/v2/companies/MyCompany/rooms/room_b571df8d8h3d
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

roomId
string (required) Example: room_b571df8d8h3d

Identificativo della Room.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "room": {
    "room_id": "room_b571df8d8h3d",
    "record": 1,
    "duration": 120,
    "durationUsed": 0,
    "description": "A textual description of the rest room created...",
    "status": "NOT_RUNNING",
    "user_urls": [
      {
        "user": "usr_e39b045f215f",
        "url": "https://develop.bandyer.com/attach/rest-call-handler/07d4077b8c6fd3228d7bdb60e3"
      },
      {
        "user": "usr_cd4791a26916",
        "url": "https://develop.bandyer.com/attach/rest-call-handler/8a81b919de15d3876d2a2ed74l"
      }
    ],
    "dialInfo": {
      "sessions": {
        "number": 7,
        "hours": 0,
        "minutes": 8,
        "seconds": 4,
        "users": 2,
        "details": [
          {
            "session": "session_c73d8cfe4330",
            "creationDate": "2017-02-04T22:44:30.652Z",
            "hours": 0,
            "minutes": 2,
            "seconds": 37,
            "users": 2,
            "userEvents": [
              {
                "user": "usr_cd4791a26916",
                "timestamp": "2017-02-04T22:44:30.652Z",
                "event": "user connected"
              }
            ],
            "userActivities": [
              {
                "user": "usr_e39b045f215f",
                "startTime": "2017-02-04T22:44:30.652Z",
                "stopTime": "2017-02-04T22:44:30.652Z",
                "seconds": 57
              }
            ]
          }
        ]
      }
    }
  }
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Delete
DELETE/webrtc/v2/companies/{companyName}/rooms/{roomId}

Elimina la room e tutti i link di accesso ad essa associati.

Example URI

DELETE /webrtc/v2/companies/MyCompany/rooms/room_b571df8d8h3d
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

roomId
string (required) Example: room_b571df8d8h3d

Identificativo della Room.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "result": {
    "room": {
      "room_id": "room_bcca4ae81675",
      "message": "Room room_bcca4ae81675 and all user links associated deleted"
    }
  },
  "description": "Room deleted"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Room

Get Sessions Recording
GET/webrtc/v2/companies/{companyName}/room/recording/{sessionId}?expireTime={expireTime}

Consente di recuperare il link alla registrazione di una sessione. Per recuperare il session URL, devi indicare il sessionID utilizzando l’api di recupero informazioni di una room/broadcast nella GetRoomInformation /GerBrodcastInformation.

Nota: nella GetRoomInformation / GerBrodcastInformation puoi trovare tutte le informazioni sulle sessioni di una room o broadcast.

Example URI

GET /webrtc/v2/companies/MyCompany/room/recording/sessionId?expireTime=expireTime
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

sessionId
string (required) 

Id della sessione.

expireTime
number (optional) 

La quantità di tempo di validità [ms] dell’URL generato. Default 10000.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
```
{
  "url": "https://recordings.bandyer.com/sandbox/135/23715/23715.mp4?Expires=1529053578&Policy=eyJTdGF0ZW1gbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9yZWNvcmRpbmdzLmJhbmR5ZXIuY25tL2RldmVsb3BtZW50LzEyNS8yMzc5NS8yMzc5NS5tcDQiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiLjE1MjkwNTM1Nzh9fX1dfQ__&Signature=LjDbMYIASbdJCSfWFxfu1A0HzKjzrUWKXqgCCc2OX-YzdGSOOHfPfiHaDOwdi0uBjqpvOegjakmy1QE5DGV8~OYYjT5IBiTWZTx9gTZRwYTMGwgvHmAUndi8Tiq8wWqZislv4n413QBSwq74oVMyZxx611Ssl7R62YN0-3OiSJS16bh4yhlvx4JlwG~3rL1aERYBiixlYpadhS4~Syr6p69wHwPLqAew4v3FlWvfoJLr4NudHt9OAfB0vHCX6iAbHpYznyhIWf7k451GRr01KKmvwky~I2lRTWEHoDOXolAouyuXExR9Z5SkqI30RueQPd3axugaZ1KtXwT4dqR~Og__&Key-Pair-Id=APKARQIFJNX5UZ22C7FA"
}
```
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Broadcasting

Create Broadcast

La chiamata broadcast è composta da:

  • 1 publisher: l’utente che crea l’evento e diventa presentatore dello stesso,
  • N subscribers: gli utenti che partecipano all’evento

Il publisher può usare il suo microfono e la webcam per presentare l’evento web. Inoltre può anche use addizionali features come lo screen-sharing, la chat e la condivisione di file. Questo tipo di chiamata è indicata principalmente per ospitare un evento con un alto numeri di subscribers (~2000).

Create
POST/webrtc/v2/companies/{companyName}/broadcast

Crea un evento broadcast. E’ possibile scegliere il nome dell’evento e se sarà registrato. La risposta restituisce l’url contenete l’ID broadcast che può essere utilizzato per unirsi all’evento in broadcast appena creato.

Example URI

POST /webrtc/v2/companies/MyCompany/broadcast
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "description": "A textual description of the broadcast event created..",
  "publisherid": "usr28608a20053f",
  "record": "1"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "description": "Nome dell'evento."
    },
    "publisherid": {
      "type": "string",
      "description": "L'Identificativo dell'utente che sarà il __publisher__ dell'evento."
    },
    "record": {
      "type": "string",
      "description": "`1` se l'utente vuole registrare la videochiamata, `0` altrimenti."
    }
  },
  "required": [
    "description",
    "publisherid",
    "record"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "result": {
    "broadcast_id": "bro_11b44fc88010"
  },
  "description": "BroadCast creato"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Broadcast

Get Broadcast Informations
GET/webrtc/v2/companies/{companyName}/broadcast/{broadcastId}

Recupera informazioni su un broadcast. Uno dei parametri della response è lo status che può assumere per il broadcast uno dei seguenti valori: NOT_RUNNING il broadcast non è attivo. RUNNING la broadcast è attivo. CLOSED la broadcast è eliminato o terminato (not disponibile).

Altro parametro è la totalDurationTime che rappresenta quanto tempo il broadcast è nello stato RUNNING. La sezione dialInfo contiene informazioni su tutte le sessioni del broadcast: il tempo totale e utenti , dettaglio per ciascuna sessione (con tempo parziale) e ogni informazione sui subscribers connessi ad ogni sessione. Oltre al creation time di ogni sessione

Example URI

GET /webrtc/v2/companies/MyCompany/broadcast/broadcastId
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

broadcastId
string (required) 

Broadcast Id dell’evento.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "broadcast": {
    "id": "bro_cn92r039862rcn",
    "status": "CLOSED",
    "record": true,
    "description": "The description of the Broadcast",
    "creationDate": "2017-02-04T22:44:30.652Z",
    "publisher": {
      "id": "usr_767bfa79c146",
      "firstName": "Name",
      "lastName": "Surname",
      "email": "name.surname@dominio.com"
    },
    "dialInfo": {
      "numberOfSessions": 2,
      "totalDurationTime": "00:12:37",
      "sessions": [
        {
          "session_id": "session_cnruow48987",
          "creationDate": "2017-02-04T22:44:30.652Z",
          "subscribersCount": 0,
          "subscribersConnTime": "00:00:00",
          "publishTime": "00:06:18",
          "totalTime": "00:06:18"
        },
        {
          "session_id": "session_923846cb2398",
          "creationDate": "2017-02-04T22:44:30.652Z",
          "subscribersCount": 0,
          "subscribersConnTime": "00:00:00",
          "publishTime": "00:06:19",
          "totalTime": "00:06:19"
        }
      ]
    }
  }
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Broadcast

CallBroadcast
GET/webrtc/v2/companies/{companyName}/call/{userId}?callee={callee}

Per unirsi ad un evento broadcast l’utente ha bisogno di essere reinderizzato in una specifica pagina. La richiesta deve contentere il broadcastId dell’evento e l’userId dell’utente che vuole unirsi. La risposta ritornerà l’url nella quale sia il publisher sia il subscriber devono essere reindirizzati per partecipare al broadcast.

Example URI

GET /webrtc/v2/companies/MyCompany/call/userId?callee=callee
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

userId
string (required) 

Id dell’utente che vuole partecipare all’evento.

callee
string (required) 

Broadcast Id dell’evento.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "url": "https://xxx.bandyer.com/connect/rest-call-handler/90643787db1e7d3f"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Broadcast

Get Sessions Recording
GET/webrtc/v2/companies/{companyName}/broadcast/recording/{sessionId}?expireTime={expireTime}

Consente di recuperare il link alla registrazione di una sessione. Per recuperare il session URL, devi indicare il sessionID utilizzando l’api di recupero informazioni di una room/broadcast nella GetRoomInformation /GerBrodcastInformation.

Nota: nella GetRoomInformation / GerBrodcastInformation puoi trovare tutte le informazioni sulle sessioni di una room o broadcast.

Example URI

GET /webrtc/v2/companies/MyCompany/broadcast/recording/sessionId?expireTime=expireTime
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

sessionId
string (required) 

Id di una sessione broadcast.

expireTime
number (optional) 

La quantità di tempo di validità [ms] dell’URL generato. Default 10000.

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
```
{
  "url": "https://recordings.bandyer.com/sandbox/135/23715/23715.mp4?Expires=1529053578&Policy=eyJTdGF0ZW1gbnQiOltsIlJlc291cmNlIjoiaHR0cHM6Ly9yZWNvcmRpbmdzLmJhbmR5ZXIuY25tL2RldmVsb3BtZWh0LzEyNS8yMzc5NS8yMzc5NS5tcDQiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiLj71MjkwNTM1Nzh9fX1dfQ__&Signature=LjDbMYIASbdJCSfWFxfu1A0HzKjzrUWKXqgCCy2OX-YzdGSOOHfPfiHaDOwdi0uBjqpvOegjakmy1QE5DGV8~OYYjT5IBlTWZTx9gTZRwYTMGwgvHmAUndi8Tiq8wWqZislv4n413QBSwq74oVMyZxx611Ssl7R62YN0-3OiSJS16bh4yhlvx4JlwG~3rL1aERYBiixlYpadhS4~Syr6p69wHwPLqLew4v3FlWvfoJLr4NudHt9OAfB0vHCX6iAbHpYznyhIWf7k451GRr01KKmvwky~I2lRTWEHoDOXolAouyuXExR9Z5SkqI30RueQPd3axugaZ8KtXwT4dqR~Og__&Key-Pair-Id=APKARQIFJNX5US22C7FA"
}
```
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Tokens

Come puoi vedere nell’esempio seguente, la fine del “link”, generato da call, createroom o broadcast, è chiamato “Token”. In questa sezione puoi verificare lo stato corrente del token o revocare l’accesso alle chiamate. URL: https://xxx.bandyer.com/connect/rest-call-handler/90643787db1e7d3f

Token

  • Verifica lo stato di validità di un token.
    • ACTIVE_TOKEN - token valido
    • NOT_ACTIVE_TOKEN - token non valido

Check
GET/webrtc/v2/companies/{companyName}/token/{token}

Verifica lo stato di un Token.

Example URI

GET /webrtc/v2/companies/MyCompany/token/90643787db1e7d3f
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

token
string (required) Example: 90643787db1e7d3f

Token

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "token": "arrt1243adada0",
  "code": "ACTIVE_TOKEN",
  "message": "arrt1243adada0 is valid"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Delete
DELETE/webrtc/v2/companies/{companyName}/token/{token}

Elimina (invalida) il token specificato nella richiesta.

Example URI

DELETE /webrtc/v2/companies/MyCompany/token/90643787db1e7d3f
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

token
string (required) Example: 90643787db1e7d3f

Token

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "token": " arrt1243adada0",
  "message": "token arrt1243adada0 deleted"
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Webhooks

Tramite questa risorsa è possibile configurare delle callbacks relative ad eventi Room, permettendo lo sviluppatore di monitorare ed intercettare eventi nel proprio servizio backend. Quando una callback è specificata, Bandyer effettuerà una richiesta http al designato webhook URL.

Bandyer offre eventi di tipo POST-Event elencati nella seguente tabella:

Event Fired Triggered Action
on_room_created New Room created
on_room_deleted Room Deleted
on_session_started When a session of a room starts
on_session_ended When a session of a room ends
on_session_paused When a sessionn of a room is paused
on_sessione_resumed When a session of a room is resumed
on_user_connected A User is connected
on_user_disconnected A User is disconnected
on_call_incoming When a call is created
on_call_ended When a call is ended
on_recording_available When a room session recording is available
on_broadcast_recording_available When a broadcast session recording is available
on_broadcast_start When a broadcast is started by publisher
on_broadcast_stop When a broadcast stopped by publisher
on_broadcast_pub_connected When the publisher is connected to a broadcast
on_broadcast_pub_disconnected When the publisher is disconnected from a broadcast
on_broadcast_sub_connected When a subscriber is connected to a broadcast
on_broadcast_new_feedback When a new feedback is leaved for a broadcast

Hook

Create
POST/webrtc/v2/companies/{companyName}/hook

Crea callback.

Example URI

POST /webrtc/v2/companies/MyCompany/hook
URI Parameters
HideShow
companyName
string (required) Example: MyCompany

Il nome della Compnay

Request
HideShow
Headers
Content-Type: application/json
KeyId: d93decd9-b053-47ba-be26-d1da62942ff1,
executor: usr_783afa70e140 (optional,string) - ID Utente che sta eseguendo la chiamata.
Body
{
  "post_event_webhook_url": "https://hooks.yoursite.com/post",
  "webhook_method": "GET",
  "webhook_filters: on_room_created,on_room_deleted,on_session_started,on_session_ended": []
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "post_event_webhook_url": {
      "type": "string",
      "description": "webhooks (required,string) - URL assoluto dove la callback dovrebbe fare un’HTTP Request per il Post event."
    },
    "webhook_method": {
      "type": "string",
      "description": "Metodo per l'emissione della richiesta HTTP. Valori possibili: `GET` | `POST`"
    },
    "webhook_filters: on_room_created,on_room_deleted,on_session_started,on_session_ended": {
      "description": "Lista degli eventi."
    }
  },
  "required": [
    "webhook_method",
    "webhook_filters: on_room_created,on_room_deleted,on_session_started,on_session_ended"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "active_webhooks": [
    {
      "post_event_webhook_url": "https://hooks.yoursite.com/post-webhooks",
      "webhook_method": "get",
      "event": "on_room_created",
      "creation_date": "2017-11-24T16:22:58.256Z"
    },
    {
      "post_event_webhook_url": "https://hooks.yoursite.com/post-webhooks",
      "webhook_method": "get",
      "event": "on_room_deleted",
      "creation_date": "2017-11-24T16:22:58.521Z"
    },
    {
      "post_event_webhook_url": "https://hooks.yoursite.com/post-webhooks",
      "webhook_method": "get",
      "event": "on_session_started",
      "creation_date": "2017-11-20T11:59:14.390Z"
    },
    {
      "post_event_webhook_url": "https://hooks.yoursite.com/post-webhooks",
      "webhook_method": "get",
      "event": "on_session_ended",
      "creation_date": "2017-11-24T16:23:00.182Z"
    }
  ]
}
Response  400
HideShow

La richiesta non è stata formulata in maniera corretta.

Headers
Content-Type: text/plain
Response  404
HideShow

Risorsa non trovata

Headers
Content-Type: text/plain
Response  403
HideShow

Errore di autenticazione

Headers
Content-Type: text/plain
Response  412
HideShow

Le condizioni per effettuare la richiesta non sono soddisfatte, in particolare l’invocazione dell’API non è permessa per uno dei seguenti motivi: Sottoscrizione non attiva, Frequenza traffico richieste superata, Soglia richieste superata.

Headers
Content-Type: application/json
Response  500
HideShow

Errore generico del server

Headers
Content-Type: application/json

Notes

Webhooks

Risorsa utilizzata da Bandyer che effettua una richiesta HTTP al server dello sviluppatore.

Call
POST/post-webhooks

Example URI

POST /post-webhooks
Request
HideShow
Headers
Content-Type: application/json
room_id_hmac: This is the HMAC base auth of Bandyer, this digest is a SHA256 of room_id cyphered by your api_key as shared secret
Body
{
  "event": "",
  "room_id": "",
  "data": {}
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "event": {
      "type": "string",
      "description": "The hooks evento"
    },
    "room_id": {
      "type": "string",
      "description": "L'ID della room che ha scaturito l'evento."
    },
    "data": {
      "type": "object",
      "properties": {},
      "description": "Json data delll'evento."
    }
  },
  "required": [
    "event",
    "room_id",
    "data"
  ]
}
Response  200
HideShow
Headers
Content-Type: application/json

Webhooks

Risorsa utilizzata da Bandyer che effettua una richiesta HTTP al server dello sviluppatore.

Call
GET/get-webhooks{?event,room_id,data}

Example URI

GET /get-webhooks?event=&room_id=&data=
URI Parameters
HideShow
event
string (required) 

The hooks evento

room_id
string (required) 

L’ID della room che ha scaturito l’evento.

data
object (required) 

Json data dell’evento.

Request
HideShow
Headers
Content-Type: application/json
room_id_hmac: This is the HMAC base auth of Bandyer, this digest is a SHA256 of room_id cyphered by your api_key as shared secret
Response  200
HideShow
Headers
Content-Type: application/json

BANDYER CHAT WIDGET

Il widget di Bandyer è un modo veloce ed efficace per offrire live chat e videochat nella tua applicazione.

Ottenere la libreria

Puoi ottenere la libreria da NPM:

npm install @bandyer/bandyer-chat-widget

Per il browser è anche possibile utilizzare la versione da CDN:

<script src="https://cdn.bandyer.com/sdk/js/chat/X.X.X/bandyer-widget.min.js" type="text/javascript" ></script>

Example embed in HTML page;

<html>
<head></head>
    <body>
    <script src="https://cdn.bandyer.com/sdk/js/chat/X.X.X/bandyer-widget.min.js" type="text/javascript" >
    </script>
    </body>
</html>

Il widget attribuisce la variabile globale BandyerChat nell’oggetto window della pagina HTML.

Supporto Browser

Il widget è supportato da Google Chrome e Firefox senza nessun plugin. Per il supporto a IE11 hai bisogno di installare un plugin e includere il seguente polyfill: https://babeljs.io/docs/en/babel-polyfill

Screenshots

Drawing Drawing Drawing

Create

.create()

const Client = BandyerChat.create({
    userAlias: 'usr_123456',
    appId: 'wAppId_fake123456',
    environment: 'sandbox',
    hidden: false,
    screenSharingExtensionId: 'id of your screen sharing extension'
});

.create({userAlias: 'usr_123456', appId: 'wAppId_fake123456', environment: 'sandbox', hidden: false})

Configurazione di una nuova istanza widget creata chiamando il metodo .crate(). Le opzioni necessarie sono le seguenti:

Create Parameters

Parameter Required Default Descrizione
userAlias yes “” Il widget che inizializza il widget
appId yes “” Un appId valido. Per favore contatta Bandyer per avere un appId valido
environment yes “” Sandbox o production sono i valori permessi.
hidden no false Crea un widget in modalità nascosta (non visibile nell’HTML).
screenSharingExtensionId no ‘’ Extension ID dell’estensione per la condivisione dello schermo.
Returns:
Type

Promise.<(Client|Error)>

Client

Un Client è il punto iniziale per accedere alle funzionalità di Bandyer Chat. È possibile ascoltare gli eventi che sono scatenati dal widget. Un Client è ritornato dal metodo create.

const Client = BandyerChat.create({
    userAlias: 'usr_123456',
    appId: 'wAppId_fake123456',
    environment: 'sandbox',
    hidden: false,
    screenSharingExtensionId: 'id of your screen sharing extension'
});

Events

Evento Descrizione
typing_started Scatenato quando un Utente inizia a digitare
message_sent Scatenato quando un Utente ha mandato un messaggio
message_received Scatenato quando un Utente ha ricevuto un messaggio
message_read Scatenato quando un Utente ha letto un messaggio
user_connected Scatenato quando un Utente si connette alla piattaforma
user_disconnected Scatenato quando un Utente si disconnette dalla piattaforma

Typing started

Client.on('typing_started',(data) => {
    // your logic
});

Scatenato quando un Utente ha inziato a digitare.

Note: Per ottimizzare il traffico di rete, gli endpoints Client invieranno un Typing signal solamente una volta ogni 5 secondi.

Type
Key Type Descrizione
userAlias String Alias dell’utente
chat String Identificativo univoco della chat
participants Array Array dei partecipanti

Message sent

Client.on('message_sent',(data) => {
    // your logic
});

Scatenato quando un Utente ha inviato un messaggio.

Type
Key Type Descrizione
id String Identificativo univoco del messaggio
chat String Identificativo univoco della chat
participants Array Array dei partecipanti
text String Testo del messaggio
timestamp Date Quando il messaggio è stato creato
sender String Alias utente del creatore del messaggio

Message received

Client.on('message_received',(data) => {
    // your logic
});

Scatenato quando un Utente ha ricevuto un messaggio.

Type
Key Type Descrizione
id String Identificativo univoco del messaggio
chat String Identificativo univoco della chat
participants Array Array dei partecipanti
text String Testo del messaggio
timestamp Date Quando il messaggio è stato creato
sender String Alias utente del creatore del messaggio

Message read

Client.on('message_read',(data) => {
    // your logic
});

Scatenato quando un Utente ha letto un messaggio.

Type
Key Type Descrizione
id String Identificativo univoco del messaggio
chat String Identificativo univoco della chat
participants Array Array dei partecipanti
text String Testo del messaggio
timestamp Date Quando il messaggio è stato creato
sender String Alias utente del creatore del messaggio

User connection

Client.on('user_connected',(data) => {
    // your logic
});

Scatenato quando un Utente si connette alla piattaforma.

Type
Key Type Descrizione
user.userAlias String Alias utente dell’utente
user.firstName String Nome dell’utente
user.lastName String Cognome dell’utente
user.email String Email dell’utente
user.image String Immagine dell’utente
user.role Number Ruolo dell’utente
status String Stato corrente (ONLINE, OFFLINE, BUSY)

User disconnection

Client.on('user_disconnected',(data) => {
    // your logic
});

Scatenato quando un Utente si disconnete dalla piattaforma.

Type
Key Type Descrizione
user.userAlias String Alias utente dell’utente
user.firstName String Nome dell’utente
user.lastName String Cognome dell’utente
user.email String Email dell’utente
user.image String Immagine dell’utente
user.role Number Ruolo dell’utente
status String Stato corrente (ONLINE, OFFLINE, BUSY)

Add chat

.addChat()

BandyerChat.addChat('usr_fr55ga3');

.addChat('usr_fr55ga3')

Per abilitare la chat con un altro utente nella tua piattaforma, hai bisogno di chiamare il metodo .addChat(). Il metodo addChat si aspetta un user alias valido (deve essere un utente già creato). Una volta che il metodo è stato chiamato, il widget mostrerà la chat aggiunta.

Note: se il widget è in modalità nascosta, il metodo addChat mostrerà il widget.

Returns:
Type

Promise.<(void|Error)>

Remove chat

.removeChat()

BandyerChat.removeChat('usr_fr55ga3');

.removeChat('usr_fr55ga3')

Per rimuovere una chat hai bisogno di chiamare il metodo .removeChat(). RemoveChat rimuoverà la chat tra l’utente autenticato e l’utente specificato come input del metodo. Tutti i messaggi tra questi verranno cancellati permanentemente.

Returns:
Type

Promise.<(void|Error)>

Returns:
Type

Promise.<(void|Error)>

isAuthenticated

.isAuthenticated()

BandyerChat.isAuthenticated();

.isAuthenticated()

Per verificare se l’istanza corrente del wiget è autenticata, hai bisogno di chiamare il metodo .isAuthenticated(). Il metodo ritornerà true se il widget è autenticato, falso altrimenti.

Returns:
Type

Type: boolean

Show widget

.showChat()

BandyerChat.showWidget();

.showChat()

Mostra il widget nella pagina html.

Returns:
Type

Type: Boolean.(true|false)>

Hide widget

.showChat()

BandyerChat.hideWidget();

.hideChat()

Nasconde il widget nella pagina html.

Returns:
Type

Type: Boolean.(true|false)>

logout

.logout()

BandyerChat.logout();

.logout()

Per fare il logout dell’istaza corrente del widget, hai bisogno di chiamare il metodo .logout(). Il metodo logout() smonterà il componente widget.

Returns:
Type

Promise.<(void|Error)>

toggleWidget

.toggleWidget()

BandyerChat.toggleWidget();

.toggleWidget()

Attiva / disattiva il widget da aperto a chiuso o viceversa.

Returns:
Type

Type: Boolean.<(true|false)>

openWidget

.openWidget()

BandyerChat.openWidget();

.openWidget()

Apre il widget.

Returns:
Type

Type: Boolean.<(true|false)>

closeWidget

.closeWidget()

BandyerChat.closeWidget();

.closeWidget()

Chiude il widget.

Returns:
Type

Type: Boolean.<(true|false)>

## Activities

Per costruire una logica di business personalizzata basata sulle attività del Widget (messaggi inviati, ricevuti, etc), il widget fornisce metodi utili. Ecco una lista di questi:

Method Descrizione
getUser Ottieni le informazioni dell’utente e il suo stato corrente (online, offline, busy)
getLastMessageReceived Ottieni l’ultimo messaggio ricevuto dall’utente
getLastMessageSent Ottieni l’ultimo messaggio inviato dall’utente
getUnreadMessages Ottieni tutti i messaggi non letti dell’utente

getUser

.getUser(userAlias)

BandyerChat.getUser(userAlias);

.getUser(userAlias)

Ottieni informazioni e stato riguardo un utente selezionato.

Returns:
Type
Key Type Descrizione
user.userAlias String Alias utente dell’utente
user.firstName String Nome dell’utente
user.lastName String Cognome dell’utente
user.email String Email dell’utente
user.image String Immagine dell’utente
user.role Number Ruolo dell’utente
status String Stato corrente (online, offline, busy)

getLastMessageReceived

.getLastMessageReceived()

BandyerChat.getLastMessageReceived();

.getLastMessageReceived()

Ottieni l’ultimo messaggio ricevuto dal widget.

Returns:
Type
Key Type Descrizione
id String Identificativo univoco del messaggio
chat String Identificativo univoco della chat
participants Array Array dei partecipanti
text String Testo del messaggio
timestamp Date Quando il messaggio è stato creato
sender String Alias utente del creatore del messaggio

getLastMessageSent

.getLastMessageSent()

BandyerChat.getLastMessageSent();

.getLastMessageSent()

Ottieni l’ultimo messaggio inviato dal widget.

Returns:
Type
Key Type Descrizione
id String Identificativo univoco del messaggio
chat String Identificativo univoco della chat
participants Array Array dei partecipanti
text String Testo del messaggio
timestamp Date Quando il messaggio è stato creato
sender String Alias utente del creatore del messaggio

getUnreadMessages

.getUnreadMessages()

BandyerChat.getUnreadMessages();

.getUnreadMessages()

Ricevi i messaggi non letti dell’utente.

Returns:
Type

Array of object:

Key Type Descrizione
chat String Identificativo univoco della chat
unreadMessages Number Array dei partecipanti

Screen sharing

Dalla versione 1.1.0 in avanti il widget può pubblicare uno stream che utilizza la visualizzazione video del tuo schermo (invece della videocamera) come sorgente. Un client connesso al widget può sottoscriversi allo stream (e visualizzarlo), proprio come si iscriverebbe a uno stream che utilizza una videocamera come sorgente.

In Chrome, per pubblicare un video screen-sharing, il client ha bisogno di aggiungere un’estensione che abilita la pubblicazione degli stream screen-sharing per il tuo dominio. A partire da Firefox 52, un’estensione (o lista whitelist) non è più necessaria per lo screen sharing. Firefox richiede all’utente finale di accedere allo screen, finestra o applicazione, come per l’accesso alla videocamera. Per più informazioni, guarda questo post sul blog Mozzilla.

In tutti i browser, pubblicare uno stream screen-sharing richiede che la pagina venga caricata su HTTPS

Set url for extension install

Il metodo BandyerChat.setExtensionUrl('URL_CHROME_WEBSTORE') è usato per reindirizzare l’utente alla pagina di installazione nel chrome web store. È importante impostare l’URL per consentire all’utente di aggiungere l’estensione corretta

Esempio: BandyerChat.setExtensionUrl('https://chrome.google.com/webstore/detail/your-extension/your-extension-id')

Se l’utente ha bisogno dell’estensione, il widget mostrerà questo alert:

Drawing

Use screen sharing in development

Per supportare la condivisione dello schermo in Chrome, devi creare un’estensione di Chrome per la condivisione dello schermo abilitata per localhost o qualsiasi altro dominio di sviluppo. Per favore scrivi un email a info@bandyer.com per ottenerla.

Distributing a screen-sharing extension

Per usare la condivisione dello schermo sul tuo sito, Gli utenti Chrome devono installare la tua estensione per la condivisione dello schermo. Dovrai impacchettare la tua estensione Chrome per la condivisione dello schermo e registrarla nel Chrome Web Store. Guarda la documentazione di Chrome per dettagli sulla pubblicazione della tua estensione nel Chrome Web Store.