com.innovaphone.client (App API)
This API is used for communicating with the client. It provides the following functionality for apps:
- Presence and dialog subscriptions.
- Manage app links on the home screen.
- Notifying the client, if profile pictures need to be reloaded.
- Displaying status info for active phone calls.
- Information about the user and the myApps client.
Restictions
The API is exclusively provided by the myApps client. The corresponding provider name is "@client".
API model
Service info
The API doesn't define any service info.
Provider model
- user
- An object containing the details about the user that is logged-in.
- home
- An object containing the app links that are attached to home for each app.
- deviceApps
- An array that contains the apps that can be used as a phone app by the user.
- profileApp
- The name of the app that shall be used to configure the user profile.
- lang
- The two-letter code of the user's language.
- scheme
- The current color scheme ("light" or "dark").
- standby
- true if the client is running on a standby PBX. Apps can use this information if they implement a special behaviour in that case.
- launcher
- true if myApps is running inside the myApps launcher for Windows, iOS or Android.
- adminSettings
- An object that contains administrative settings that are used by the launcher, by the myApps client or by apps. Each setting is represented by a named object that contains a "value" and "force" field. If "force" is true, the user should not be allowed to change that setting.
Example
{
"@client": {
"title": "innovaphone myApps",
"url": "http:\/\/pbx.example.com\/PBX0\/APPCLIENT\/13XXXX\/appclient.htm",
"info": { },
"model": {
"user": {
"domain": "example.com",
"sip": "bob",
"guid": "5db8519be826c148a8877f10f8bc2d73",
"dn": "Bob Hansen",
"num": "201",
"email": "bob@example.com"
},
"home": {
"phone": [ ],
"contacts": [
"id=3#s=john.doe&d=John%20Doe",
"id=4#s=joe.bloggs&d=Joe%20Bloggs"
]
},
"deviceApps": [
{
"name": "phone",
"title": "Phone",
"deviceapp": "phone"
}
],
"profileApp": "profile",
"launcher": true,
"adminSettings": {
"autostart": {
"value": false,
"force": true
},
"taskbar": {
"value": true,
"force": true
},
"offline": {
"value": 300000,
"force": true
},
"video": {
"value": true,
"force": true
},
"hotkeyDial": {
"value": "F8",
"force": true
},
"hotkeyAccept": {
"value": "CTRL + ALT + F9",
"force": true
},
"hotkeyReject": {
"value": "WIN + F10",
"force": true
},
"logFlags": {
"value": "00000000d6800001",
"force": true
},
"docking": {
"value": 0,
"force": true
},
"notifications": {
"value": false,
"force": true
}
}
}
}
}
API messages
All messages are JSON objects that have a mandatory attribute "mt" that specifies the message type.
The provider will echo the "src" attribute from requests in the corresponding responses.
Requests
- UpdateProfile
- Tells the client that the profile picture of the user has changed and shall be reloaded.
- Example:
{ mt: "UpdateProfile" }
- SetAttachedToHome
- Attaches or detaches an app link to the home screen. Apps can only attach links to itself.
-
- reference
- The app parameters and client parameters of the app link without leading "?".
- attached
- true if the app link shall be attached.
- false if the app link shall be deatached.
- Example:
{ mt: "SetAttachedToHome", reference: "id=13#s=doe&d=John%20Doe", attached: true }
- ShowStatusInfo
-
Opens an HTML page in the client as a status information. It is only shown, while the originating app is in the background.
When the originating app is closed, the client closes all related status informations.
-
- url
- The URL of the HTML page that shall be shown.
- id
- An id that must be unique for the app that created the notification.
- Example:
{ mt: "ShowStatusInfo", url: "https://apps.example.com/phone/activecall.htm?app=phone&call=4", id: "4" }
- CloseStatusInfo
-
Closes a status information that has been opened using
ShowStatusInfo
.
-
- id
- The id that has been used to create the notification.
- If no id is given, the client will close all status informations of the app.
- Example:
{ mt: "CloseStatusInfo", id: "4" }
- SubscribePresence
- Starts a presence subscription to a given SIP URI or phone number.
-
- mt
- "SubscribePresence"
- sip
- The SIP URI of the remote endpoint (optional, sip or num must be specified)
- num
- The phone number of the remote endpoint (optional, sip or num must be specified)
- Example:
{ mt: "SubscribePresence", sip: "atlantis" }
- Example:
{ mt: "SubscribePresence", num: "201" }
- UnsubscribePresence
- Closes a presence subscription that was started using
SubscribePresence
.
- If no
sip
or num
is given, all presence subscriptions of the consumer are closed.
-
- mt
- "UnsubscribePresence"
- sip
- The SIP URI of the remote endpoint (optional)
- num
- The phone number of the remote endpoint (optional)
- Example:
{ mt: "UnsubscribePresence", sip: "atlantis" }
- Example:
{ mt: "UnsubscribePresence", num: "201" }
- SubscribeDialog
- Starts a dialog subscription to a given SIP URI or phone number.
-
- mt
- "SubscribeDialog"
- sip
- The SIP URI of the monitored endpoint (optional, sip or num must be specified)
- num
- The phone number of the monitored endpoint (optional, sip or num must be specified)
- Example:
{ mt: "SubscribeDialog", sip: "atlantis" }
- Example:
{ mt: "SubscribeDialog", num: "201" }
- UnsubscribeDialog
- Closes a dialog subscription that was started using
SubscribeDialog
.
- If no
sip
or num
is given, all dialog subscriptions of the consumer are closed.
-
- mt
- "UnsubscribeDialog"
- sip
- The SIP URI of the monitored endpoint (optional)
- num
- The phone number of the monitored endpoint (optional)
- Example:
{ mt: "UnsubscribeDialog", sip: "atlantis" }
- Example:
{ mt: "UnsubscribeDialog", num: "201" }
Responses
- PresenceUpdated
- An update for a presence subscription that was started using
SubscribePresence
.
-
- mt
- "PresenceUpdated"
- sip
- The SIP URI of the remote endpoint, as specified by the consumer
- num
- The phone number of the remote endpoint, as specified by the consumer
- up
- The connection state of the presence subscription (true or false)
- ep
-
Information about the remote endpoint that was received over the presence subscription.
- sip
- SIP URI
- num
- Phone number
- dn
- Display name
- presence
-
An array containing the list of presences for the different contacts.
- contact
- Presence contact ("tel:", "im:", "calendar:")
- activity
- Presence activity ("", "away", "busy", "dnd")
- displayNote
- An additional text entered by the user that describes the presence in detail. Calendar presences are localized by the provider. Additional parameters (hashtags) are removed.
- note
- Same as displayNote, but not localized and possibly containing hashtags. Should not be used for displaying.
- status
- The availability using that contact ("open", "closed")
- params
- An object containing the parsed parameters from the presence note.
-
Example:
{
"mt": "PresenceUpdated",
"sip": "atlantis",
"up": true,
"ep": {
"sip": "atlantis",
"dn": "Atlantis",
"num": "201"
},
"presence": [
{
"contact": "calendar:",
"status": "open",
"activity": "",
"note": "Frei bis 26.04.2018, 11:00 (Beschäftigt: Fixes) #free #until:1524733200000 #next-activity:busy #next:41:5:42:5",
"displayNote": "Frei bis 26.4.2018 11:00 (Beschäftigt: Fixes)",
"params": {
"free": "",
"until": 1524733200000,
"next-activity": "busy",
"next": "41:5:42:5"
}
},
{
"contact": "im:",
"status": "closed",
"activity": "",
"displayNote": "",
"params": {}
}
]
}
- DialogInfo
- A call update for a dialog subscription that was started using
SubscribeDialog
.
-
- mt
- "DialogInfo"
- sip
- The SIP URI of the monitored endpoint, as specified by the consumer
- num
- The phone number of the monitored endpoint, as specified by the consumer
- callId
- The unique ID of the call. It can be used for further actions using JSON signalling like pickup.
- confId
- The conference ID of the call.
- remote
-
Information about the remote endpoint of the call.
- sip
- SIP URI
- num
- Phone number
- dn
- Display name
- state
-
An object containing the state of the call.
- name
- The state itself. Possible values are "idle", "calling", "incomplete", "complete", "alerting", "connected", "disconnecting", "disconnected" and "parked".
- outgoing
true
for outgoing calls. false
for incoming calls.
- hold (optional)
true
if the call is put on hold by the monitored endpoint.
- held (optional)
true
if the call is put on hold by the remote endpoint.
- waiting (optional)
true
if the call is waiting.
- deleted (optional)
true
if the call is finished. The consumer can remove the call from its local model.
-
Example:
{
"mt": "DialogInfo",
"sip": "endeavour",
"callId": "e44379a033ec5a01ebd500903328631a",
"confId": "13d9c5a033ec5a01ead500903328631a",
"remote": {
"sip": "atlantis",
"dn": "Atlantis",
"num": "201"
},
"state": {
"name": "connected",
"outgoing": true,
"hold": true
}
}
-
Example:
{
"mt": "DialogInfo",
"sip": "endeavour",
"callId": "e44379a033ec5a01ebd500903328631a",
"deleted": true
}
Concepts
App links
The URI format for app links consists of
- app name
- The name of app as defined in the app object in the PBX. The client will open this app, when the app link is clicked by the user.
- app parameters (optional)
- A search string (?) with the parameters that are passed to the app.
- client parameters (optional)
-
A fragment identifier (#) with parameters for the client. Currently the following parameters are defined:
- d
- The display name that shall be shown on the app tile or in the tooltip of the app icon. If no display name is given, the client will show the name of the app.
- s
- A SIP URI for presence monitoring. The presence will be shown on the app tile on the home screen.
Example: contacts?id=13#s=doe&d=John%20Doe