If you wish to allow users to use the in-built functionality to retrieve tokens, you will need to deploy a version of the DOMI OAuth Web Application after making the relevant changes for the new meeting service, as outlined in Extending the Web App.
To extend DOMI to support another OAuth meeting service you will need to make changes. The recommendation is to update the DOMI installation database and test by deploying to your own mail database, before deploying to the mail template after it is fully tested. You should make a note of the changes so that they can be repeated for future releases.
Test API calls in Postman to ensure you know what a correct API call should look like.
As well as debugging the LotusScript calls, you can also add the notes.ini setting
DEBUG_NotesHTTPRequest=1 to output full details of the NotesHTTPRequest class. If you add this, you can see all steps in the cURL process, including request and response headers and body, in the console.log file (
In the Declarations, constants are defined for each meeting service, e.g.
DOMI_SERVICE_GTM. Add another constant for your new meeting service using the same format, and give it a short memorable value.
This function builds the URL for retrieving, refreshing and - if the meeting service support it - revoking access and refresh tokens. You should add to the
Select Case statement a check for the meeting service constant set up in step 1. The result should be the URL that is the root of all calls on the DOMI OAuth web application you have set up.
Constants here give the base URLs for creating, updating and deleting meetings. For update and delete, the expectation is that the meeting ID should be appended as a path parameter at the end of the URL.
Select Case statement further down in this function will need amending for the new meeting service. Create a
Select Case statement for the relevant operations, returning the built URL.
Add to the case statement to populate
nodesToCopy for the service. The key is the field to set on the Calendar Entry, the value is the path to a node that contains the single value to extract from the REST API response. Navigate down the JSON tree by using “/”, e.g.
audioConferencing/tollNumber gets the audioConferencing top-level element, then the tollNumber element of audioConferencing. The fields available as the key are in domiIntegrator
Add a constant for the relevant service pair, the label and the alias. Add to the
Select case statement to return the relevant label.
Add the meeting service constant defined in step 1 to the
Select Case statement.
Add agents for (DOMI_scheduleXXXXMeeting), (DOMI_updateXXXXMeeting) and (DOMI_deleteXXXXMeeting). Copy the format of existing agents.
Add to the
Select Case statement to build the body for the relevant meeting service. The first step is to convert
ndtEnd to the appropriate date/time format required by the REST service:
notesDateTimeToJsonOffsetZulu()builds a format yyyy-MM-ddThh:mm:ss specifically return UTC date/time.
notesDateTimeToJsonOffset()builds a format yyyy-MM-ddThh:mm:ss with a +/- offset of format “+0100” or Z for UTC.
notesDateTimeToJsonOffsetColondoes the same but adds a colon between hours and minutes of the offset, e.g. “+01:00”.
Then the JSON object for the payload is constructed as a VariantList. The VariantList has a
json property which converts the list to a JSON object. LotusScript booleans will be properly converted. Dates and times will just be outputted as
Cstr() values. Content will be properly URL encoded. If you need to nest JSON objects, the VariantList can contaiun another VariantList.
Add to the
Select Case statement to build the content for the Location field.
Add to the
Select Case statement if the HTTP verb for updating a meeting is not
PATCH or the update REST API call returns no content. If no content is returned, you need to call
replaceMultipleItems(context, existingMeetingValues) because the standard REST service call will have cleared the fields.
Add a sub-action to the Schedule Online Meeting… action for the new meeting service. Copy the code from one of the other actions and change it to call (DOMI_scheduleXXXXMeeting).
Update the formulas for Update Meeting and Delete Meeting to call the relevant agent. The meetingService field value will be the alias you chose.
Update the serviceList field with the new meeting service.