PIOPIY Client JS SDK
PIOPIY WebRTC SDK allows you to make and receive voice calls, where making voice calls can be made to a public switched telephone network(PSTN), APP to APP calling and browser to browser calling.
Package Installation
Using NPM
 npm install piopiyjs
Using YARN
 yarn add piopiyjs
Using Bower
 bower install telecmi/piopiy_client_js
Monolithic Import
In Browser
<script src="dist/piopiy.min.js" type="text/javascript"></script>
In ESM/Typescript
 import PIOPIY from 'piopiyjs';
In CommonJS
 var PIOPIY = require('piopiyjs');
Initializing the PIOPIY Object
const piopiy = new PIOPIY({
  name: "Display Name",
  debug: false,
  autoplay: true,
  ringTime: 60,
});
Configuration Parameters
Below is the configuration parameters
| Attribute | Description | Allowed Values | Default Value | 
|---|---|---|---|
| name | Your Display Name in App | string | none | 
| debug | Enable debug message in browser console | Boolean | false | 
| autoplay | Handle media stream automatically | Boolean | true | 
| ringTime | Your incoming call ringing time in seconds | number | 60 | 
PIOPIY Methods
Login
Using this method user can able to connect with TeleCMI SBC.
piopiy.login("user_id", "password", "SBC_URI");
Configuration Parameters
| Parameter Name | Type | Description | 
|---|---|---|
| user_id | string | The user login ID | 
| password | string | The user login Password | 
| SBC_URI | url | 
  | 
Make call
Using this method user can able to make call to PSTN or Other user extension.
piopiy.call("PHONE_NUMBER", options);
Configuration Parameters
| Parameter Name | Type | Description | 
|---|---|---|
| PHONE_NUMBER | string | Enter phone number or user extention number ,Phone number start with country code example '13158050050' | 
Send DTMF
Using this method user can able to send DTMF tone to ongoing call.
piopiy.sendDtmf("DTMF_TONE");
Configuration Parameters
| Parameter Name | Type | Description | 
|---|---|---|
| DTMF_TONE | string | Your DTMF tone input | 
Hold Call
Using this method user can able to hold ongoing call.
piopiy.hold();
Unhold Call
Using this method user can able to unhold ongoing call.
piopiy.unHold();
Mute Call
Using this method user can able to mute ongoing call.
piopiy.mute();
Unmute Call
Using this method user can able to unmute ongoing call.
piopiy.unMute();
Answer call
Using this method user can able to answer incoming call.
piopiy.answer();
Reject call
Using this method user can able to reject or disconnect incoming call.
piopiy.reject();
Hangup call
Using this method user can able to hangup ongoing call.
piopiy.terminate();
Logout
Using this method user can able to logout from SBC session.
piopiy.logout();
PIOPIY Call Event Handler
Login
This event will triger when user login sucessfully
piopiy.on("login", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("login", function (object) {
  if (object.code == 200) {
    //  Login successfully and do your stuff here.
  }
});
List of event and status
| code | status | 
|---|---|
| 200 | Login Successfully | 
LoginFailed
This event will trigger when user authentication failed.
piopiy.on("loginFailed", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("loginFailed", function (object) {
  if (object.code == 401) {
    //  Verify that the user_id and password are correct.
  }
});
List of event and status
| code | status | 
|---|---|
| 401 | Invalid user_id or password | 
Trying
This event will trigger when user make call to phone number or extention (Destination Number)
piopiy.on("trying", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("trying", function (object) {
  if (object.code == 100) {
    //  The outgoing call is currently being started.
  }
});
List of event and status
| code | status | type | call_id | 
|---|---|---|---|
| 100 | trying | ougoing | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
Ringing
This event will trigger when call start ringing.
piopiy.on("ringing", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("ringing", function (object) {
  if (object.code == 183) {
    // An incoming or outgoing call is ringing.
  }
});
List of event and status
| code | status | type | call_id | 
|---|---|---|---|
| 183 | ringing | outgoing & incoming | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
Answered
This event will trigger when ongoing call was answered.
piopiy.on("answered", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("answered", function (object) {
  if (object.code == 200) {
    // An incoming or outgoing call is answered.
  }
});
List of event and status
| code | status | call_id | 
|---|---|---|
| 200 | answered | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
CallStream
This event will trigger when mediastream established.
piopiy.on("callStream", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("callStream", function (object) {
  // MediaStream has been established.
});
List of event and status
| code | status | call_id | 
|---|---|---|
| 200 | MediaStream | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
InComingCall
This event will trigger when user recive incmoing call.
piopiy.on("inComingCall", function (object) {
  //  Data is JSON it contain event and status.
});
Hangup
This event will trigger when user reject or hangup incmoing call.
piopiy.on("hangup", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("hangup", function (object) {
  if (object.code == 200) {
    //  to hangup the incoming and ongoing calls.
  }
});
List of event and status
| code | status | call_id | 
|---|---|---|
| 200 | call hangup | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
Ended
This event will trigger when ongoing call end.
piopiy.on("ended", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("ended", function (object) {
  if (object.code == 200) {
    //  An incoming or outgoing call is ended.
  }
});
List of event and status
| code | status | call_id | 
|---|---|---|
| 200 | call ended , Unavailable , Busy & Canceled | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
Hold
This event will trigger when ongoing call on hold.
piopiy.on("hold", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("hold", function (object) {
  if (object.code == 200) {
    //  The call is now being hold.
  }
});
List of event and status
| code | status | whom | call_id | 
|---|---|---|---|
| 200 | call on hold | myself | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
UnHold
This event will trigger when ongoing call on unhold.
piopiy.on("unhold", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("unhold", function (object) {
  if (object.code == 200) {
    //  The call is now being released.
  }
});
List of event and status
| code | status | whom | call_id | 
|---|---|---|---|
| 200 | call on active | myself | 95ea3424-d77e-123b-0ca1-463d48e96190 | 
Error
This event will trigger when error will occurr.
piopiy.on("error", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("error", function (object) {
  if (object.code == 1001 || object.code == 1002) {
    //  If there are any incorrect commands in the function, displays error.
  }
});
List of event and status
| code | status | 
|---|---|
| 1001 & 1002 | common error | 
Logout
This event will trigger when user logout .
piopiy.on("logout", function (object) {
  //  Data is JSON it contain event and status.
});
Example
piopiy.on("logout", function (object) {
  if (object.code == 200) {
    //  The user logged out successfully.
  }
});
List of event and status
| code | status | 
|---|---|
| 200 | logout successfully |