Giter Site home page Giter Site logo

agileware / au.com.agileware.zoomzoom Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 486 KB

Integrate CiviCRM with Zoom to automate creation of Events, registration of participants and recording attendance

License: Other

PHP 91.51% Smarty 8.45% CSS 0.04%
civicrm-events civicrm-participants zoom-registrations zoom-settings civicrm-extension civicrm zoom civicrm-extensions

au.com.agileware.zoomzoom's Introduction

Zoom Zoom (au.com.agileware.zoomzoom)

This is just another CiviCRM extension which integrates with Zoom. Provides the following features:

  • CiviRule to create Zoom Webinar from Event and create Zoom Meeting from Event
  • CiviRule to update Zoom details
  • CiviRule to delete a Zoom
  • CiviRule to add an Event Participant to a Zoom
  • CiviRule to delete a Participant from a Zoom
  • Scheduled Job to import Zoom Webinars and Zoom Events as CiviCRM Events
  • Scheduled Job to check CiviCRM Events linked to Zoom and import the Zoom registrations, attendees and absentees. Record as CiviCRM Participants and update Participant Status.

The extension is licensed under AGPL-3.0.

Migrating from a JWT App

JWT Apps are deprecated on Zoom, so to ensure continued function this app has been converted to use OAuth Server-to-Server. Existing installations configured to use a JWT App will need to create and connect to a new app according to the instructions in the Getting Started section below.

Getting Started

  1. Zoom OAuth Server-to-Server credentials are required for this Integration. Create an OAuth Server-to-Server App in the Zoom Marketplace.
    1. Fill in the App Details
    2. Move through to the Scopes tab and ensure that the App has the appropriate scope permissions:
      • View all user meetings /meeting:read:admin, meeting:read:past_meeting:admin, meeting:read:meeting:admin, meeting:read:list_past_participants:admin, meeting:read:list_past_instances:admin, meeting:read:registrant:admin, meeting:read:list_registrants:admin, meeting:read:participant:admin
      • View and manage all user meetings /meeting:write:admin, meeting:write:registrant:admin, meeting:update:meeting:admin, meeting:delete:meeting:admin, meeting:write:meeting:admin, meeting:delete:registrant:admin
      • View all user information /user:read:admin, user:read:list_users:admin, user:read:user:admin
      • View all user Webinars /webinar:read:admin, webinar:read:list_past_instances:admin, webinar:read:list_absentees:admin, webinar:read:webinar:admin, webinar:read:list_past_participants:admin, webinar:read:participant:admin, webinar:read:registrant:admin, webinar:read:list_registrants:admin
      • View and manage all user Webinars /webinar:write:admin, webinar:delete:registrant:admin, webinar:update:webinar:admin, webinar:delete:webinar:admin, webinar:write:webinar:admin, webinar:write:registrant:admin Screenshot of appropriate scope configuration
    3. Continue to Activation and Activate your app
    4. Load the App Credentials tab to get the Account ID, Client ID and Client Secret
  2. In CiviCRM, go to the Zoom Settings page, Administer / Zoom Settings.
    • Insert the Account ID, Client ID and Client Secret from above.
    • Set the other options on the Zoom Settings page, as required.
  3. The following Scheduled Jobs are provided:
    • Import Zoom Webinars and Meetings - Enable this Scheduled Job if you want to create CiviCRM Events from Zooms. Specify a day offset to process Zooms with a start date either in the last X days (by providing a negative number) or from a future date. The default day_offset is -90 which will process Zooms with a start date in the last 90 days.
    • Import Zoom Registrations, Attendees, Absentees - Enable this Scheduled Job if you want to create CiviCRM Participant records in CiviCRM from Zoom registrations, attendance and absentees. This job will only process CiviCRM Events which are linked to a Zoom. Specify a day offset to process Events with a start date either in the last X days (by providing a negative number) or from a future date. The default day_offset is -90 which will process Events with a start date in the last 90 days. Note: As this Scheduled Job checks CiviCRM Events linked to a Zoom, it is a good idea to run this job after the Import Zoom Webinars and Meetings job.

Configuring Rules

You use CiviRules to define the logic of when a Zoom should be created, updated, or deleted. Or if a Zoom Participant should be added or deleted. This allows for customisation of how you wish to mark Events for Zoom integration. For example, you can target by Event Type, or you could use a custom "Does this Event require Zoom?" field. You may also wish to add additional actions before or after Zoom action.

Here is an example configuration using Event Types to create, update, and delete Zoom entities.

Zoom Event Rules configuration example

Default Rules are provided for your reference in the /optional directory. You can also refer to the Tests section as a guide for configuring your rules.

Import Configuration Defaults

Zoom Zoom is provided with optional configuration sets that can be imported using a third party extension, CiviCRM Configuration Loader (configitems). To use these configuration sets:

  1. Install the configitems extension
  2. Go to "Administer / System Setings / Manage configuration sets" in CiviCRM
  3. Press the Import Configuration button:
  4. To install default CiviRules rulesets, use zoom_zoom_default_rules-v2.zip
  5. To install the sample schedule reminder message template, use zoom_zoom_schedule_reminder-v1.zip
  6. You can then create a schedule reminder from "Administer / Communications / Schedule Reminders":
  7. Press the Add Reminder button
  8. For the Used For field, select Event Type
  9. Your Event Type field should be Meeting and Webinar for the default setup, or use the event types you have configured for the Zoom Meeting, Event Type and Zoom Webinar, Event Type in the extension configuration at "Administer / Zoom Settings"
  10. For Participant Status, select Registered
  11. Fill out the rest of the basic fields as required
  12. Under Email: Use Template, select Zoom Event Reminder
  13. The HTML Format field will the have the imported template inserted into it, ready to be customised.

Schedule Reminder example

Tests

The following tests were performed for verification.

Disclaimer: This is not an exhaustive list of test cases and scenarios. Tests will be performed as required, and recorded here.

Test Environment

  • CiviCRM version : 5.75.1
  • CiviRules version : 3.11

Test Cases

Result Test Expect
PASS Event created of Zoom enabled type Event is created. A single Zoom Entity is generated, and details saved to the Event.
PASS Event created from Event Template of Zoom enabled type Event is created. A single Zoom Entity is generated, and details saved to the Event.
PASS Event created of NOT Zoom enabled type Event is created. A Zoom entity is NOT generated. Saving the Event Info form again does NOT generate a Zoom entity.
PASS Event of NOT Zoom enabled type is changed to Zoom enabled type Event is updated to the Zoom enabled type. A single Zoom Entity is generated, and details saved to the Event.
PASS Event created from Event Template of NOT Zoom enabled type Event is created. A Zoom entity is NOT generated. Saving the Event Info form again does NOT generate a Zoom entity.
PASS Event of Zoom enabled type is changed to NOT Zoom enabled type Event is changed to the new type. The associated Zoom entity is unlinked from the Event and deleted from the Zoom account.
PASS Event of Zoom enabled type has title, start and end dates changed Event is updated. The associated Zoom entity is updated with the same details in the Zoom account - Zoom ID persists.

Credits and acknowledgements

Credit to Lighthouse Consulting and Design, Inc for developing https://github.com/lcdservices/biz.lcdservices.civizoom which was used as the basis for this new extension. Credit to Veda Consulting for developing https://github.com/veda-consulting-company/ncn-civi-zoom which was used as reference for the CiviRules implementation.

Requirements

  • PHP v7.4+
  • CiviCRM 5.37+

Installation (Web UI)

Learn more about installing CiviCRM extensions in the CiviCRM Sysadmin Guide.

Installation (CLI, Zip)

Sysadmins and developers may download the .zip file for this extension and install it with the command-line tool cv.

cd <extension-dir>
cv dl au.com.agileware.zoomzoom@https://github.com/agileware/au.com.agileware.zoomzoom/archive/master.zip

Installation (CLI, Git)

Sysadmins and developers may clone the Git repo for this extension and install it with the command-line tool cv.

git clone https://github.com/agileware/au.com.agileware.zoomzoom.git
cv en zoomzoom

About the Authors

This CiviCRM extension was developed by the team at Agileware.

Agileware provide a range of CiviCRM services including:

  • CiviCRM migration
  • CiviCRM integration
  • CiviCRM extension development
  • CiviCRM support
  • CiviCRM hosting
  • CiviCRM remote training services

Support your Australian CiviCRM developers, contact Agileware today!

Agileware

au.com.agileware.zoomzoom's People

Contributors

agileware-fj avatar agileware-iris avatar agileware-justin avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

au.com.agileware.zoomzoom's Issues

Creating an event from an event template triggers a double event creation in zoom

If you have...

  • An event type that is associated with the zoomzoom civirules triggers
  • An event template that has this event type

When you create a new event from that event type...

  • The zoom fields are initially blank as expected.

When you hit the first Continue button...

  • The CiviRules trigger and create an event on Zoom.
  • However the zoom fields are not populated in the event.

After editing other tabs on the event, if you return to the Info tab, you will find that the Zoom fields are blank. At this point if you hit "Save" button on the Info tab, the CiviRules will trigger again, and a new event will be created in Zoom. This time the fields on the event will be populated in the event.

The end result is

  • You have two meetings or webinars in Zoom by the same name, but with different IDs
  • One of these is orphaned
  • Another one of these is correctly tied to an event in CiviCRM

To test this further, if you ...

  • Do not use an event template
  • Create an event normally and assign it an event type associated with zoom

then no double event is created in Zoom. Only one event is created in Zoom and it is properly associated with the event in CiviCRM.

Edits of message templates trigger Zoom creation

If you have...

  • An event type that should trigger Zoom integration (e.g. "Online Seminar via Zoom")
  • An event template that is set with that event type

When you edit the event template, it will trigger the CiviRule to create the meeting or webinar on Zoom, and will populate that data into the event template.

Further, it won't be possible to delete the zoom data out of the event template without disabling the zoomzoom CiviRules because the "Add Zoom to existing event" will evaluate that the zoom fields are empty and will fire, creating a new Zoom meeting and populating the data again in the event template.

The only way to resolve this is to disable the zoomzoom civirules before editing an event template that is of an event type which triggers zoomzoom, and then re-enable them when complete.

The root cause of this issue is that CiviRules do not appear to have a condition to identify if some action is taking place on an event template, so it isn't possible to exclude triggering on event templates.

Questions about zoomzoom functionality

Hi,

I'm trying to understand some nuances about how zoomzoom works. Can you help understand the following:

  • Does zoomzoom require manually creating Zoom meetings and then providing the meeting ID in Civi? Or does it create the meetings for you?
  • Does zoomzoom support multiple Zoom accounts?
  • Does zoomzoom import the private meeting join links for each participant so that they can be used in Scheduled Reminders from within Civi? The example schedule reminder uses {zoom.join_url} which I'm guessing is a custom field on the event rather than the participant?
  • How do you tell ZoomZoom which events are linked to a Zoom? I looked in the code and it looks like it creates some custom event types. Is it only those event types that get linked to a Zoom? Can we define our own?
  • Does ZoomZoom import participants that are unknown to Civi and create Civi records for them?
  • If a Civi event is deleted, does ZoomZoom delete the corresponding meeting in Zoom?

Thank you for your help!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.