Precondition: Working login and refresh functionality
1. Gather valid login credentials.
2. Set up a post call using the /rtc/createCall
endpoint and set up the request body as explained below.
Annotated request body JSON:
{ "callTitle": "Test Call", \\Name of the call "callReason": "STANDARD", \\Either Standard or SERVICE_REQUEST "callType": "SFU", \\ Defines the call technology used eg. MESH for 1:1 calls or SFU for Multicalls "invitedContacts": [ \\ List of multiple CallLogContact objects { "displayName": "Tester", "domain": "ubimax", "email": "[email protected]", "phoneNumber": "", "userDbId": 8, \\The database id of the user, which the contact is linked too. "userId": "tester" \\The user id id of the user, which the contact is linked too. } ], "invitedTeams": [], \\ Leave empty or add a team object to invite a whole team. "joinAnonymousAllowed": true, \\ Set to true to allow anonymous joins else false "informOthersDirectly": true, \\ Set to true to trigger the call notification pop-up on invited contacts screen "creatorUser": 12, \\ The database id of the user. Leave empty or Set it to create calls on behalf of someone, behaving as a broker.
Annotated response body JSON (CallLog
object):
Note: Some fields are omitted for brevity.
{ "id": 842, \\Incremental id generated by the database "callId": "e76e1d8a-8267-4bd4-ba5c-00ab76743e74", \\UUID generated by the application "anonymousJoinAllow": true, \\Whether anonymous joins are allowed or not "callStatus": "Ended", \\Possible values: Planned, Started or Ended "creatorContact": { \\ CallLogContact object. References the user that generated the call or the “creatorUser” specified when creating the call. ... } "invitedContacts": [ \\ List of multiple CallLogContact objects { ... } ] "callEvents": [ \\ List of multiple call Events { "id": 234, \\Incremental id generated by the database "type": "Created", \\Possible values: Created, Join, Leave, between others. "contact": { \\ CallLogContact object. References the user related with the current event. ... } } ]
3. The server notifies the invited contacts via WebSocket, Mail, or SMS (if set in CallLogContactObject
).
Precondition: Working login and refresh functionality
1. Gather valid login credentials.
2. Set up a get call using the /rtc/getCallLogById?callId=value
endpoint with the callId
obtained from the response of the createCall
endpoint mentioned above.
Annotated response body JSON:
Same response as createCall
endpoint. For example, for an ongoing mesh call originated by callertest1 to callertest2, the events would be as follows:
"callEvents": [ { "id": 697, "type": "Created", "contact": { "id": 1, "userId": "callertest1", "userDbId": 8 } }, { "id": 698, "type": "Join", "contact": { "id": 1, "userId": "callertest1", "userDbId": 8 } }, { "id": 699, "type": "Join", "contact": { "id": 2, "userId": "callertest2", "userDbId": 9 }, } ],
Use the methods exposed by the RtcControllerApi
. The ones that stand out are createCallForContacts
to create the call and getCallLogById
to know the state of the call.
To create a call, use the creatorUser
property mentioned before. Set it to the userDbId
of the smartglasses user, and add the expert user and the connector user to the invitedContacts
array. Therefore, the connector ends up behaving like a broker. Keep in mind that the smartglasses user will only be called once the expert user answers the call.
Node.js example call (stripped down, might require further security headers and cookies, gathered via a Login).
fetch("https://<serverurl>/rtc/createCall", { "headers": { "authorization": "Bearer <token>", }, "body": "{\"callType\":\"SFU\",\"invitedContacts\":[{\"userId\":\"tester\",\"userDbId\":8,\"email\":\"[email protected]\",\"domain\":\"ubimax\",\"displayName\":\"Tester\",\"phoneNumber\":null}],\"invitedTeams\":[],\"joinAnonymousAllowed\":false,\"callTitle\":\"New Call\",\"plannedDateTime\":null,\"callReason\":\"STANDARD\"}", "method": "POST", "mode": "cors" });