This API is used for communication with phone/softphone apps.
The provideApi function is used to subscribe for API messages:
var phoneApi = start.consumeApi("com.innovaphone.phone");
phoneApi.send({ mt: "StartCall", num: "123" });
phoneApi.onupdate.attach(function (sender, type) {
    Object.keys(sender.model).forEach(function (key) {
        var provider = sender.model[key];
        if (provider.model.calls) {
            provider.model.calls.forEach(function (call) {
                ...
            }
        }
    }
});
    Starts a new call to the given phone number or SIP-URI.
{ mt: "StartCall", num: "200" }
{ mt: "StartCall", sip: "bob@example.com" }
{ mt: "StartCall", txt: "+49 (7031) 73009 - 0" }
{ mt: "StartCall", num: "07031730090", adjust: true }
    | string num | Phone number to be dialed [optional] | 
| string sip | SIP-URI to be dialed [optional] | 
| string txt | Unclassified dialstring. Phoneapp will check and take it as 'num' or 'sip' [optional] | 
| boolean adjust | Indicates that the number might not contain the external line prefix and might need to be added by the phone/softphone app before dialing [optional] | 
Similar to "StartCall", but does not initiate the call automatically. User can verify the call destination and intiate call by clicking button.
If there's an incoming call on the phone/softphone app in "Alerting" state it can be connected with this message.
{ mt: "ConnectCall" }
    If there's an active call on the phone/softphone app any state it can be disconnected with this message.
{ mt: "DisconnectCall" }
    
        An app can monitor call activity on phone/softphone apps and can provide context information for the call to be displayed in phone/softphone app.
        An app can either provide a piece of HTML code or an URL which is loaded in an iframe.
        See Provider Model on how to monitor call activity on phone/softphone apps.
    
{ mt: "CallInfo", id: 1, html: "<div style='color: white'>Aloha from Apidemo</div>" }
{ mt: "CallInfo", id: 1, iframe: { src: "https://wikipedia.de/", height: "300px" } }
    | number id | unique call-id [mandatory] | 
| string html | HTML to be embedded [optional] | 
| object iframe | [optional] | 
| string src | URL of the HTML page to be embedded as iframe [optional] | 
| string height | Height of the embedded iframe [optional] | 
List of apps providing this API
"com.innovaphone.phone": {
    "dev:SwPh_5c6aa38f": {
        title: "Softphone",
        info: {
            type: "softphone"
        },
        model: {}
    },
    "dev:00903332024b": {
        title: "IP232",
        info: {
            type: "phone"
        },
        model: {
            registered: true,
            calls: []
        },
    }
}
    | string type | Type of providing app: phone (an app controlling a hardware phone) softphone (an app that can do phone calls by itself without using a hardware phone)  | 
{
    registered: true,
    calls: [
        {
            id: 1,
            guid: "fff79c5bd2115d0109f400903341035b",
            dir: "i",
            num: "200",
            sip: "charlie.chaplin",
            dn: "Sir Charles Spencer Chaplin",
            state: "Connected"
        }
    ]
}
    | number id | uniqe call-id [mandatory] | 
| string guid | globally uniqe call-id [optional] | 
| string dir | "i" for inbound call or "o" for outbound call [mandatory] | 
| string num | Phone number (e.g. 202 or +49 7031 73009 0) [optional] | 
| string sip | SIP-URI (e.g. charlie.chaplin or charlie.chaplin@unitedartists.com) [optional] | 
| string dn | Display name [optional] | 
| string state | Setup | Dialing | Ringback | Queued | Alerting | Connected | Holding | Held | Disconnected [mandatory] |